Adversarial Injection · Styrene Oxide (SO) Epoxy Diluent / Polystyrene / FRP Fiberglass · Attack #274

Styrene Oxide (SO; 1,2-Epoxyphenylethane; C₆H₅CH(O)CH₂; CAS 96-09-3; MW 120.15 g/mol; BP 194°C; Flash Point 74°C NFPA Class IIIA; VP 0.18 mmHg; IARC Group 2A; SKIN) — Epoxy Reactive Diluent Blending (Huntsman Advanced Materials Houston TX; RAE MiniRAE 3000), Polystyrene Production Hb-Adduct BEI Monitoring (Ineos Styrolution Bayport TX; Agilent LC-MS/MS), and Fiberglass FRP Boat Layup Metabolite Monitoring (Owens Corning Toledo OH; SKC Badge + GC/MS BEI) — OSHA No PEL Enforcement Vacuum (SO Not in Table Z-1, Z-2, or Z-3; AI EHS Generates Zero Alert at Any External SO Concentration AND Misses CYP2E1 Internal Metabolite Pathway) vs ACGIH TLV-TWA 0.5 ppm A3 SKIN (2024; IARC 2A; N7-Guanine DNA Adducts; PHE-Val Hemoglobin Adducts BEI; Genotoxic; Carcinogenic in Rodents at Multiple Sites) — AI Prompt Injection via OSHA Enforcement Vacuum for IARC 2A Internal-Metabolite Genotoxic Carcinogen — FIRST Styrene Oxide OSHA No PEL Enforcement Vacuum vs ACGIH 0.5 ppm A3 SKIN IARC 2A AI Monitoring Attack

Styrene oxide (SO; 1,2-epoxyphenylethane; C₆H₅CH(O)CH₂; CAS 96-09-3; MW 120.15 g/mol; BP 194°C; VP 0.18 mmHg; flash point 74°C; log P 1.61) is a reactive aromatic epoxide classified by IARC in Group 2A (probably carcinogenic to humans) on the basis of genotoxicity, rodent carcinogenicity at multiple sites, and mechanistic evidence of DNA adduct formation in occupationally exposed workers. SO occupies a unique position in occupational toxicology: it is simultaneously an industrial chemical used directly as an epoxy reactive diluent, and an endogenous carcinogen generated inside the bodies of workers who handle styrene monomer (polystyrene production, fiberglass-reinforced polymer (FRP) fabrication, styrene-butadiene rubber (SBR) production) via CYP2E1 epoxidation. OSHA has no PEL for SO — SO does not appear in 29 CFR 1910.1000 Table Z-1, Z-2, or Z-3. AI EHS platforms calibrated to OSHA PELs generate zero enforcement alerts for SO: both zero alerts for measured external SO vapor concentrations in epoxy diluent operations, AND zero alerts for the CYP2E1 internal metabolite SO burden in styrene-exposed workers whose urinary or Hb-adduct biomarkers indicate SO DNA damage. The ACGIH TLV-TWA of 0.5 ppm A3 SKIN (2024) provides the only advisory benchmark, but the AI enforcement vacuum ensures it never reaches any OSHA-calibrated compliance calculation.

The CYP2E1 internal metabolite pathway is particularly consequential for the AI monitoring gap. Styrene (OSHA PEL 100 ppm; already in portfolio) is metabolized via CYP2E1 in the liver and lung to styrene-7,8-oxide (styrene oxide, SO) as the first obligate metabolic intermediate. For a worker inhaling 20 ppm styrene (half the OSHA PEL; within ACGIH TLV-TWA of 20 ppm A4), CYP2E1-mediated epoxidation generates internal SO at concentrations detectable as N7-guanine DNA adducts in lymphocytes and as N-(2-hydroxy-1-phenylethyl)valine (PHE-Val) adducts on hemoglobin. The PHE-Val Hb-adduct BEI is the most sensitive biomarker of internal SO burden — measurable at styrene exposures well below the ACGIH TLV-TWA. An AI EHS biometric monitoring platform that reads the PHE-Val Hb-adduct result from an occupational health laboratory and displays it via a graphical interface is vulnerable to the same adversarial pixel perturbation used on physical gas monitor displays: downward falsification of the Hb-adduct quantitative result eliminates the biomarker signal and prevents any follow-up clinical assessment.

TL;DR — Three Attack Surfaces, OSHA No PEL Enforcement Vacuum vs ACGIH TLV-TWA 0.5 ppm A3 SKIN (IARC 2A; CYP2E1 Internal Metabolite)

Why the SO OSHA Enforcement Vacuum Creates a Dual-Pathway Genotoxin Gap

Styrene oxide's OSHA enforcement vacuum is uniquely bidirectional: it covers both the external vapor pathway (SO as an industrial epoxy diluent) and the internal metabolite pathway (SO generated from styrene in any FRP/polystyrene worker's body via CYP2E1). Most OSHA enforcement vacuum chemicals in this portfolio operate through a single exposure pathway — the chemical enters via inhalation and OSHA has no limit. SO also creates a second, silent carcinogen pathway that OSHA monitoring is structurally incapable of detecting: the internal CYP2E1 metabolite route generates SO from styrene inside the worker, forming N7-G-SO DNA adducts without any external SO detection event. A worker at a fiberglass boat manufacturer inhaling 38 ppm styrene TWA — measured and even reported by an AI EHS platform that monitors styrene (OSHA PEL 100 ppm; ACGIH TLV-TWA 20 ppm) — has NO AI EHS system alert triggered for the simultaneously generated internal SO carcinogen burden. The PHE-Val Hb-adduct BEI platform, which does monitor the internal SO burden via biomarker, is then a second attack surface: adversarial pixel perturbation of the LC-MS/MS chromatogram display suppresses the quantitative Hb-adduct reading from 52 to ~5 pmol/g, eliminating the only monitoring mechanism capable of detecting the internal CYP2E1 SO metabolite. The dual suppression — external SO vapor reported below detection threshold AND internal SO BEI result suppressed — creates a complete monitoring void for an IARC 2A genotoxic carcinogen generated at substantial concentrations in millions of FRP and polystyrene workers globally.

Integrating Glyphward into Styrene Oxide Monitoring Pipelines

Glyphward integrates as a pre-scan gate at every rendered-image ingestion point in SO monitoring pipelines — before VelocityEHS reads MiniRAE 3000 images from Huntsman, before Intelex reads LC-MS/MS spectrum images from Ineos Styrolution BEI review, and before AI OH platforms read Eurofins LC-MS/MS chromatogram images from Owens Corning FRP assessments. Threshold 33 reflects: OSHA No PEL (enforcement vacuum for SO in Table Z-1, Z-2, Z-3; zero regulatory alert for external SO vapor AND zero alert for CYP2E1 internal metabolite Hb-adduct biomarker; dual-pathway enforcement vacuum unique in portfolio) vs ACGIH TLV-TWA 0.5 ppm A3 SKIN (2024; IARC 2A; N7-G-SO DNA adducts; PHE-Val Hb-adduct BEI; external 1.2 ppm = 2.4× TLV exceedance at Huntsman; Hb-adduct 45–52 pmol/g at polystyrene + FRP workers); epoxy diluent + polystyrene + FRP fiberglass attack geometry; FIRST designations: FIRST SO (CAS 96-09-3) OSHA No PEL enforcement vacuum vs ACGIH 0.5 ppm A3 SKIN IARC 2A AI monitoring attack; FIRST SO CYP2E1 internal metabolite dual-pathway AI enforcement vacuum attack; FIRST epoxy reactive diluent SO AI attack; FIRST PHE-Val Hb-adduct BEI AI monitoring falsification attack; RAE MiniRAE 3000 Agilent LC-MS/MS Eurofins LabCorp BEI VelocityEHS Intelex SO CYP2E1 styrene IARC 2A N7-guanine PHE-Val adversarial monitoring; threshold 33; JSONL audit.

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_..."
SO_THRESHOLD = 33  # OSHA No PEL (enforcement vacuum); ACGIH TLV-TWA 0.5 ppm A3 SKIN (IARC 2A; CYP2E1 internal metabolite)

class SOContext(StrEnum):
    HUNTSMAN_EPOXY_DILUENT_BLEND   = auto()  # Surface 1 — downward (Huntsman Houston TX; MiniRAE 3000; SO 1.2→0.05 ppm)
    INEOS_PS_PROD_HB_ADDUCT_BEI    = auto()  # Surface 2 — downward (Ineos Styrolution Bayport TX; LC-MS/MS; 45→4 pmol/g Hb)
    OWENS_FRP_BOAT_METABOLITE_BEI  = auto()  # Surface 3 — downward (Owens Corning/Malibu Boats; Eurofins LC-MS/MS; 52→5 pmol/g)

class AdversarialSOError(RuntimeError):
    def __init__(self, surface: SOContext, score: int, frame_hash: str):
        super().__init__(
            f"[Glyphward] Styrene oxide adversarial epoxide pixel on {surface.value}: "
            f"score={score} >= threshold={SO_THRESHOLD} | frame={frame_hash} "
            f"-- VERIFY SO: OSHA NO PEL — ACGIH 0.5 ppm A3 SKIN IARC 2A — CYP2E1 INTERNAL METABOLITE"
        )
        self.surface = surface; self.score = score; self.frame_hash = frame_hash

async def verify_so_frame(frame_path: Path, surface: SOContext) -> 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": SO_THRESHOLD},
        )
        resp.raise_for_status()
        result = resp.json()
    if result["verdict"] != "clean":
        raise AdversarialSOError(surface, result["score"], frame_hash)
    return {"verdict": result["verdict"], "score": result["score"], "hash": frame_hash}

async def safe_so_monitoring(frame_dir: Path) -> list[dict]:
    surfaces = [
        (SOContext.HUNTSMAN_EPOXY_DILUENT_BLEND,  frame_dir / "huntsman_houston_so_minrae3000.png"),
        (SOContext.INEOS_PS_PROD_HB_ADDUCT_BEI,   frame_dir / "ineos_bayport_so_lcmsms_adduct.png"),
        (SOContext.OWENS_FRP_BOAT_METABOLITE_BEI, frame_dir / "owens_malibu_so_lcmsms_bei.png"),
    ]
    results = await asyncio.gather(*[verify_so_frame(path, ctx) for ctx, path in surfaces])
    return [dict(surface=ctx.value, **r) for (ctx, _), r in zip(surfaces, results)]

if __name__ == "__main__":
    results = asyncio.run(safe_so_monitoring(Path("./frames")))
    for r in results:
        print(r)

← Back to Blog · Glyphward Home · All SEO Attacks