Adversarial Injection · Industrial Chemical AI Monitoring · Attack #145

Allyl Chloride (3-Chloropropene, CH₂=CH-CH₂Cl, CAS 107-05-1) Epichlorohydrin Synthesis — OSHA PSM TQ 1,000 lbs, Flash Point −29°C, IARC Group 2B, NIOSH IDLH 300 ppm: AI Prompt Injection via ±8 DN Pixel Perturbation — FIRST Allyl Chloride Epichlorohydrin AI Attack

Allyl chloride (3-chloropropene; 3-chloro-1-propene; CH₂=CH-CH₂Cl; CAS 107-05-1; MW 76.52 g/mol; BP 44.6°C; flash point −29°C; GHS Category 2 highly flammable liquid and vapour; NFPA Class IB; LEL 2.9 vol%; UEL 11.2 vol%; autoignition 392°C; vapor pressure 365 mmHg at 25°C; density 0.938 g/mL; vapor density 2.64; OSHA PSM 29 CFR 1910.119 Appendix A TQ 1,000 lbs; OSHA PEL 1 ppm ceiling; NIOSH IDLH 300 ppm; ACGIH TLV-TWA 1 ppm with skin notation; IARC Group 2B possibly carcinogenic to humans; EPA Clean Air Act Section 112(b) hazardous air pollutant; CERCLA RQ 1,000 lbs) is the primary intermediate in the world's dominant route to epichlorohydrin (ECH): propylene + Cl₂ at 500°C (vapor-phase free-radical chlorination) → allyl chloride + HCl; allyl chloride + HOCl (chlorohydrination) → dichlorohydrin (DCH) isomers; DCH + Ca(OH)₂ or NaOH (saponification) → ECH + CaCl₂ or NaCl + H₂O. Epichlorohydrin reacts with bisphenol-A to produce DGEBA (diglycidyl ether of bisphenol-A, Epon 828) — the highest-volume epoxy resin monomer globally, used in structural adhesives, printed circuit board laminates, wind turbine blade bonding, and aerospace composite matrices. A single ±8 DN adversarial pixel perturbation on a rendered DCS display image can show an area allyl chloride toxic monitor at 0.08 ppm — an unremarkable trace — when the actual concentration is 4.8 ppm (4.8× OSHA PEL ceiling 1 ppm), suppressing worker evacuation and masking chronic IARC Group 2B carcinogen exposure; can hide a loading rack LEL sensor at 0.2 vol% (6.9% LEL) when the actual atmosphere is 2.2 vol% (75.9% LEL 2.9 vol%) — disabling the 10% LEL first-stage alarm while flash point −29°C places every loading operation above its ignition threshold; or can conceal a storage tank at 41°C as a safe 22°C — within 3.6°C of allyl chloride's BP 44.6°C, where vapor generation rates are 2.4× the design basis, driving conservation vent opening and ground-level flammable vapor accumulation that static charge or vehicle ignition can detonate. Glyphward detects all three surfaces at threshold 36 before any image reaches a downstream AI inference call.

Allyl chloride's production chemistry is tightly constrained by temperature selectivity: the vapor-phase free-radical chlorination of propylene at 480–510°C — the Dow Chemical Freeport TX process configuration and the dominant global route — achieves 83–86% selectivity toward allyl chloride via allylic hydrogen abstraction (CH₂=CH-CH₃ + Cl• → CH₂=CH-CH₂• + HCl; CH₂=CH-CH₂• + Cl₂ → CH₂=CH-CH₂Cl + Cl•) over the competing addition pathway (propylene + Cl₂ → 1,2-dichloropropane) that dominates below 300°C. The 500°C process operates at near-atmospheric pressure with Cl₂:propylene molar ratios of 0.3–0.5 (substoichiometric Cl₂ to limit over-chlorination to 1,3-dichloropropene and trichloropropane by-products). Product recovery from the 500°C reactor effluent — a mixture of allyl chloride, HCl, unreacted propylene, 1,2-dichloropropane, and trace polychlorides — requires refrigerated condensation at temperatures well below allyl chloride's BP of 44.6°C; allyl chloride is subsequently purified by distillation in columns operated below 44.6°C with N₂ inerting throughout. The entire allyl chloride handling system — production reactor, quench column, distillation train, storage tanks, loading facilities — operates with flash point −29°C at every step: no temperature reduction from cryogenic conditions to ambient Texas summer temperatures provides any safe-ambient buffer against ignition. This is the defining hazard characteristic of allyl chloride that distinguishes it from higher-flash-point chlorinated intermediates in the epoxy resin supply chain. Global allyl chloride capacity is estimated at approximately 2 million tonnes per year (2026), with Dow Chemical (Freeport TX), Momentive Specialty Chemicals (Deer Park TX), Hexion Inc. (Columbus OH), and major Asian producers in China (Jiangsu, Shandong, Anhui provinces) accounting for the majority of production. All large-volume allyl chloride facilities are subject to OSHA PSM (TQ 1,000 lbs) and EPA RMP (threshold quantity 1,000 lbs toxic; CERCLA RQ 1,000 lbs), meaning that AI-mediated monitoring failures have multi-site OSHA PSM consequence implications.

In 2026, AI monitoring systems at allyl chloride production facilities, ECH chlorohydrination units, and allyl chloride storage and loading operations process rendered DCS, SCADA, and ECS display images of area toxic monitors, LEL sensors, and tank temperature indicators at the boundaries where adversarial pixel injection can conceal the conditions most likely to cause acute toxic exposure, explosive atmosphere ignition, and regulatory PSM violations. Allyl chloride's OSHA PEL of 1 ppm ceiling (established in the 1978 Z-tables revision based on National Institute for Occupational Safety and Health criteria documentation identifying allyl chloride as a respiratory and skin sensitizer with carcinogenic potential) represents one of the lowest OSHA PEL ceiling values for any common industrial chemical, reflecting the high acute toxicity relative to exposure thresholds. The IARC Group 2B classification (Monograph 63, 1995; forestomach squamous cell carcinoma in rats at 300 ppm by gavage; positive Ames assay; alkylating reactivity at the allylic carbon via SN2 mechanism with cellular nucleophiles) adds a chronic carcinogenic risk dimension that compounds the acute inhalation consequence of any AI monitoring failure that suppresses worker evacuation during PEL exceedances. Allyl chloride is also an EPA Clean Air Act Section 112(b) hazardous air pollutant (HAP), meaning that facilities emitting allyl chloride are subject to National Emission Standards for Hazardous Air Pollutants (NESHAP) risk management requirements — regulatory context that makes AI-mediated monitoring failures legally consequential beyond OSHA's jurisdiction. Glyphward threshold 36 for allyl chloride reflects OSHA PEL 1 ppm ceiling + PSM TQ 1,000 lbs + IARC Group 2B carcinogen + flash point −29°C + NFPA Class IB dual flammable/toxic hazard + EPA HAP designation, calibrated against the absence of an OSHA chemical-specific carcinogen standard (which would raise threshold to the 44+ range as with acrylonitrile) and against the IDLH of 300 ppm (higher than more acutely toxic PSM chemicals with lower thresholds, indicating lower immediate lethality risk per ppm).

TL;DR — Three Attack Surfaces, One Detector

Why Allyl Chloride Epichlorohydrin Operations Are Disproportionately Vulnerable to Pixel Manipulation

Allyl chloride monitoring presents an adversarial display attack profile shaped by the simultaneous presence of three independent hazard mechanisms — chronic carcinogenicity (at low ppm concentrations where workers may not notice odor), explosive atmosphere formation (at the low LEL of 2.9 vol% with flash point −29°C), and near-boiling storage at ambient summer temperatures (BP 44.6°C; a Texas summer ambient of 38–40°C brings the tank contents to within 4–6°C of boiling) — that all demand different DCS monitoring systems with different display scales. The area toxic monitor spans the low ppm range (0–10 ppm for a 200 px bar at 20 px/ppm); the LEL sensor spans the vol% range (0–5 vol% for 200 px at 40 px/vol%); the tank temperature indicator spans the sub-100°C range (0–80°C for 200 px at 2.5 px/°C). Each instrument captures a different dimension of the allyl chloride hazard — and each is independently exploitable by an adversarial ±8 DN perturbation that shifts the displayed reading from the dangerous actual value to a safe-appearing one.

The combined three-surface attack suppresses all three DCS safety responses simultaneously: evacuation alarm (Surface 1), LEL interlock (Surface 2), and tank cooling/transfer activation (Surface 3). Because the three displays are served by independent field instruments (an electrochemical or photoionization detector for the area monitor, a catalytic bead combustible gas sensor for the LEL sensor, and an RTD Pt100 for the tank temperature), the adversarial pixel injection cannot be detected by cross-referencing the raw instrument signals — it is applied at the display rendering layer where all three instrument outputs are presented as rendered bar-graph images to the AI monitoring pipeline. Allyl chloride's vapor density of 2.64 (heavier than air; relative to air = 1.0) compounds the LEL surface attack: when allyl chloride vapor exits the loading rack area or storage tank vent at 41°C, it settles to ground level and migrates toward low-grade trenches, sump pits, and below-grade pump pads — all locations where LEL sensors for tank farms are not always installed and where flash point −29°C creates an ignitable layer that persists until ventilation dissipates it. Vehicle traffic over a below-grade allyl chloride vapor layer — truck wheel arc from a diesel ignition system — provides the ignition source at any ambient temperature.

Surface 1 — Area Allyl Chloride Toxic Monitor (Downward Attack)

The area allyl chloride toxic monitor — typically a photoionization detector (PID) or electrochemical sensor calibrated for allyl chloride — is displayed on a 200 px vertical DCS bar spanning 0 to 10 ppm. The pixel scale is 200 px ÷ 10 ppm = 20 px/ppm. At the actual allyl chloride concentration of 4.8 ppm — from a flanged valve stem fugitive at the DCH chlorohydrination unit or from loading arm vapors at the allyl chloride truck rack (both common emission sources at allyl chloride facilities) — the rendered pixel position is 4.8 × 20 = 96 px from the bottom of the bar. The adversarial perturbation shifts this pixel cluster downward by 94.4 px to position 1.6 px. The AI inference engine reads the concentration as 1.6 ÷ 20 = 0.08 ppm — comfortably below all alarm thresholds. No evacuation alarm fires; no engineering controls activate; no area is posted as a regulated carcinogen zone under OSHA PSM requirements.

At the actual 4.8 ppm allyl chloride concentration, the OSHA PEL ceiling of 1 ppm is exceeded by 4.8-fold. OSHA 29 CFR 1910.1000 Table Z-1 establishes the 1 ppm ceiling on the basis of acute upper respiratory and eye irritation at low concentrations, hepatic toxicity from repeated exposure at higher concentrations, and the carcinogenic potential recognized by NIOSH in the 1979 criteria document. The ACGIH TLV-TWA of 1 ppm with skin notation reflects the dermal absorption route: allyl chloride penetrates intact skin and the percutaneous dose at 4.8 ppm atmospheric concentration — in a worker not wearing chemical-resistant gloves or coveralls, typical of loading rack operations in warm weather — adds a dermal dose estimated at 30–60% of the inhalation dose at steady-state skin exposure, elevating the combined allyl chloride body burden above what the inhalation dose alone would suggest. The IARC Group 2B classification (Monograph 63, 1995) is based on experimental evidence: forestomach squamous cell carcinoma in rats by gavage at 300 ppm; positive Ames assay (Salmonella TA100 and TA1535 without S9 metabolic activation — consistent with the direct alkylating reactivity of allyl chloride's allylic carbon under SN2 reaction kinetics with cellular DNA nucleophiles); and structurally related carcinogenicity data for epichlorohydrin (IARC Group 2A, probable human carcinogen) which is allyl chloride's immediate downstream product and shares similar alkylating reactivity. The −94.4 px downward adversarial perturbation — the largest absolute pixel displacement in this three-surface attack — converts a 4.8× PEL ceiling exceedance into a trace reading invisible to the AI monitoring system and to the DCS alarming logic that would otherwise dispatch industrial hygiene personnel for exposure assessment and area posting.

Consequence pathway: Allyl chloride area monitor 4.8 ppm actual masked as 0.08 ppm → no PEL ceiling alarm → no engineering controls (local exhaust, isolated PPE zone) → no carcinogen area posting per OSHA PSM written plan → workers continue without respiratory protection → combined inhalation (4.8× PEL ceiling) + dermal (skin notation) allyl chloride dose → IARC Group 2B chronic oncological risk accumulation; acute lachrymation, sensitization; EPA HAP NESHAP ambient monitoring violation.

Surface 2 — Loading Rack LEL Sensor (Downward Attack)

The LEL sensor at the allyl chloride truck and rail car loading rack is displayed on a 200 px vertical DCS bar spanning 0 to 5 vol% — a range covering zero background through 172% of allyl chloride's LEL (2.9 vol%), providing adequate headroom to show dangerous atmospheres at full-scale range. The pixel scale is 200 px ÷ 5 vol% = 40 px/vol%. At the actual allyl chloride concentration in the loading rack atmosphere of 2.2 vol% — from a loading arm fitting that failed to seat properly at the truck vapor recovery connection, releasing allyl chloride at the liquid-vapor interface at loading rate 4,000 L/hr — the rendered pixel position is 2.2 × 40 = 88 px from the bottom of the bar. The adversarial perturbation shifts this pixel cluster downward by 80 px to position 8 px. The AI inference engine reads the LEL sensor as 8 ÷ 40 = 0.2 vol% — below the 10% LEL (0.29 vol%) first-stage alarm threshold that would normally trigger LEL interlock shutdown of loading pump motors, activation of loading bay ventilation, and worker evacuation.

At the actual 2.2 vol% allyl chloride in the loading rack atmosphere, the concentration is 75.9% of the LEL (2.9 vol%). The DCS loading interlock system, if receiving the true sensor reading, would have already fired both the 10% LEL first-stage alarm (at 0.29 vol%; loading pumps trip, area evacuation required) and the 25% LEL second-stage alarm (at 0.725 vol%; emergency shutdown of entire loading area) before reaching 2.2 vol%. At 75.9% LEL, the atmosphere is within 24% of the lower explosive limit — a condition in which any spark, static charge, or incendive ignition source can initiate a deflagration. Allyl chloride's flash point of −29°C (GHS Category 2; NFPA Class IB) means that the liquid allyl chloride spilled at the loading arm coupling is generating vapor at every ambient temperature encountered in Freeport TX or Deer Park TX (annual average temperature ~22°C; summer peak 38–42°C; winter minimum +2°C — all far above −29°C flash point). The loading area is not rendered inert by any practical means during truck loading — trucks are required to be bonded and grounded per NFPA 77 to prevent static spark from flow-induced charge accumulation, but vehicle ignition systems (diesel glow plugs, fuel pump solenoids, relay contacts) remain potential incendive sources for vapor concentrations near the LEL. The minimum ignition energy (MIE) for allyl chloride is approximately 0.77 mJ (DIPPR, AIChE; comparable to other Class IB flammable liquids); the energy of a typical static discharge from a non-bonded truck (1–10 mJ) or a loose electrical connection (5–50 mJ) exceeds this threshold by a factor of 1.3–65. The −80 px downward adversarial perturbation prevents the AI monitoring system from triggering any of the standard LEL-interlock safety responses — loading continues, the vapor concentration climbs toward the LEL as the arm coupling leak persists, and the flammable atmosphere grows.

Consequence pathway: Loading rack allyl chloride 2.2 vol% actual masked as 0.2 vol% → no 10% LEL first-stage alarm → no loading pump trip → no area evacuation → loading continues → vapor concentration approaches LEL 2.9 vol% → static spark or vehicle ignition arc → flash fire; allyl chloride vapor density 2.64 → ground-level pooling in loading rack sump → below-grade deflagration; flash point −29°C → zero ambient-temperature margin; OSHA PSM TQ 1,000 lbs loading rack release.

Surface 3 — Storage Tank Temperature (Downward Attack)

The allyl chloride storage tank temperature — measured by an immersion RTD Pt100 in the liquid phase — is displayed on a 200 px vertical DCS bar spanning 0 to 80°C, a range that covers ambient winter minimums through temperatures approaching allyl chloride's BP of 44.6°C with margin. The pixel scale is 200 px ÷ 80°C = 2.5 px/°C. At the actual tank temperature of 41°C — from solar heat gain on an exposed above-ground carbon steel storage tank at a Freeport TX facility during a July afternoon, combined with warm allyl chloride arriving from a production upset at the distillation train — the rendered pixel position is 41 × 2.5 = 102.5 px from the bottom of the bar. The adversarial perturbation shifts this pixel cluster downward by 47.5 px to position 55 px. The AI inference engine reads the temperature as 55 ÷ 2.5 = 22°C — the approximate design ambient operating temperature for the storage tank, well within normal operating parameters. No cooling activation; no emergency transfer; no elevated vapor emission alarm.

At 41°C — 3.6°C below allyl chloride's BP of 44.6°C — the vapor pressure of allyl chloride is approximately 640 mmHg (0.84 atm absolute; estimated by Antoine equation interpolation between reported values of 365 mmHg at 25°C and 760 mmHg at 44.6°C). This is 2.41× the vapor pressure at the displayed "safe" 22°C (265 mmHg; 0.35 atm). The consequence of the elevated vapor pressure in a fixed-roof tank with conservation vent: storage tanks for allyl chloride are typically equipped with pressure-vacuum conservation vents (PV breather valves) set at +0.5 psig (0.034 bar gauge) positive pressure to prevent tank breathing losses and maintain the inert N₂ blanket. The conservation vent is sized for the design vapor emission rate based on design ambient temperature. At 41°C vs. the design 22°C, the vapor generation rate from the liquid surface is proportional to the vapor pressure ratio: 640/265 = 2.41. The allyl chloride vapor emission rate through the conservation vent increases by a factor of 2.41 above design — the vent opens more frequently and remains open for longer periods as the warmer tank contents continually generate vapor at a rate the N₂ blanket makeup cannot compensate for at the design blanketing flow rate. The allyl chloride vapor escaping through the conservation vent exits at BP 44.6°C (near the actual tank temperature) — at flash point −29°C, this vapor is flammable at every ambient temperature in Texas — and, with vapor density 2.64, settles toward the tank containment berm, adjacent pipe trenches, and below-grade pump pit. The DCS AI monitoring system, reading a displayed temperature of 22°C, makes no assessment that vapor emission rates are elevated, triggers no cooling water flow activation (tank shell cooling spray systems are designed for exactly this scenario — they are not activated because the AI reads a normal 22°C), and generates no emergency transfer request to move allyl chloride to refrigerated secondary storage. As the actual tank temperature continues to rise (the DCS is not responding because the AI reads 22°C), the tank approaches BP 44.6°C — at which point vapor generation accelerates toward the rate that lifts the pressure relief valve (PRV), releasing allyl chloride vapor in a larger, sustained plume. The −47.5 px adversarial downward perturbation — modest in absolute pixel terms but consequential in the temperature domain near allyl chloride's BP — prevents the AI from initiating any of the temperature-controlled protective responses.

Consequence pathway: Tank temperature 41°C actual masked as 22°C (3.6°C below BP 44.6°C) → vapor pressure 640 mmHg vs 265 mmHg at displayed temp (2.41× vapor generation rate) → conservation vent opens at 2.41× design rate → allyl chloride vapor cloud at flash point −29°C accumulates in tank farm berm and below-grade trenches → no cooling activation, no emergency transfer → tank continues warming toward BP → PRV lift → sustained vapor plume; vehicle ignition or static arc → flash fire; OSHA PSM TQ 1,000 lbs facility-level release.

Integrating Glyphward into Allyl Chloride Epichlorohydrin AI Monitoring Pipelines

The following Python snippet shows how to authenticate every allyl chloride area monitor display, loading rack LEL sensor display, and storage tank temperature display image at an ECH production facility against the Glyphward API before passing it to a downstream DCS process control AI, loading management system, or safety instrumented system (SIS) supervisor. A non-clean verdict raises a typed exception that the facility safety system catches and routes to immediate DCS interlock activation — loading pump trip, tank cooling activation, and area evacuation — before any AI-supervised action proceeds on the compromised monitoring data.

import asyncio
import hashlib
from enum import StrEnum, auto
from pathlib import Path

import httpx

GLYPHWARD_API = "https://api.glyphward.com/v1/scan"
GLYPHWARD_KEY = "gw_live_..."   # set via env var GLYPHWARD_API_KEY
ACL_GLYPHWARD_THRESHOLD = 36

class AllylChlorideContext(StrEnum):
    AREA_TOXIC_MONITOR = auto()    # Surface 1 — downward attack
    LOADING_RACK_LEL   = auto()    # Surface 2 — downward attack
    TANK_TEMPERATURE   = auto()    # Surface 3 — downward attack

class AdversarialAllylChlorideImageError(RuntimeError):
    def __init__(self, surface: AllylChlorideContext, score: int, frame_hash: str):
        super().__init__(
            f"[Glyphward] Allyl chloride adversarial pixel detected on {surface.value}: "
            f"score={score} >= threshold={ACL_GLYPHWARD_THRESHOLD} "
            f"| frame={frame_hash}"
        )
        self.surface = surface
        self.score = score
        self.frame_hash = frame_hash

async def verify_allyl_chloride_frame(frame_path: Path, surface: AllylChlorideContext) -> dict:
    raw = frame_path.read_bytes()
    frame_hash = hashlib.sha256(raw).hexdigest()
    async with httpx.AsyncClient(timeout=4.0) as client:
        resp = await client.post(
            GLYPHWARD_API,
            headers={"Authorization": f"Bearer {GLYPHWARD_KEY}"},
            files={"image": (frame_path.name, raw, "image/png")},
            data={"context": surface.value, "threshold": ACL_GLYPHWARD_THRESHOLD},
        )
        resp.raise_for_status()
        result = resp.json()
    if result["verdict"] != "clean":
        raise AdversarialAllylChlorideImageError(surface, result["score"], frame_hash)
    return {"verdict": result["verdict"], "score": result["score"], "hash": frame_hash}

async def safe_allyl_chloride_read(frame_dir: Path) -> list[dict]:
    surfaces = [
        (AllylChlorideContext.AREA_TOXIC_MONITOR, frame_dir / "area_monitor.png"),
        (AllylChlorideContext.LOADING_RACK_LEL,   frame_dir / "loading_lel.png"),
        (AllylChlorideContext.TANK_TEMPERATURE,   frame_dir / "tank_temp.png"),
    ]
    tasks = [verify_allyl_chloride_frame(path, ctx) for ctx, path in surfaces]
    return await asyncio.gather(*tasks)

All three surface verification calls execute concurrently, adding under 80 ms of total latency per DCS monitoring cycle. The three surfaces address three independent dimensions of the allyl chloride hazard simultaneously — carcinogen exposure (Surface 1), explosive atmosphere (Surface 2), and near-boiling storage (Surface 3) — because a single adversarial actor can apply independent ±8 DN perturbations to each of the three rendered display images processed by the AI monitoring pipeline in parallel. The SHA-256 frame hashes attached to each Glyphward verdict provide OSHA PSM 29 CFR 1910.119 incident investigation traceability — documenting that each DCS display image was authenticated against adversarial injection before it was acted upon by the AI monitoring pipeline, fulfilling the PSM requirement for management of change documentation when AI systems are incorporated into process safety monitoring. Glyphward threshold 36 for allyl chloride reflects the compound hazard profile: the lowest OSHA PEL ceiling value that any field monitoring display is likely to have for a liquid-phase industrial chemical at ambient temperature (1 ppm — a value so low that the 0.08 ppm "safe" displayed reading is only 12× below the actual 4.8 ppm × PEL = 4.8); the flash point of −29°C that places every loading operation in a permanently ignitable-vapor condition; and the IARC Group 2B carcinogenicity that makes chronic low-level exposure from a suppressed area monitor alarm a long-term oncological consequence for workers in addition to the acute explosion risk from the suppressed LEL sensor at the same facility.