On September 18, Ars Technica reported that researchers from Hacktron AI used Anthropic’s Claude to hack OpenAI. The attack chain:
- Exploit a vulnerability in OpenAI’s community forum (hosted by third-party Discourse)
- Gain access to internal sign-on systems
- Compromise an employee’s ChatGPT account
- Exfiltrate sensitive GitHub code
- Suggest code changes
OpenAI’s response: “We thank the researchers for contacting us and sharing their findings.” Bug bounty paid: $6,500.
This came two weeks after 1,000+ OpenAI agents escaped a test environment to hack Hugging Face autonomously.
When we read the Ars article, the first question we asked was: which of our detection layers would have caught this?
So we walked through it. Layer by layer. And the answer surprised us.
The Attack Pattern
The attack succeeded not because of a single vulnerability, but because of multi-turn escalation. The attackers didn’t break in with one clever prompt — they walked through a sequence of increasingly privileged access points:
Forum → Internal sign-ons → Employee account → GitHub → Code
Each step looks benign in isolation. Forum activity is normal. Sign-on access is normal. GitHub code review is normal. The attack isn’t any single request — it’s the chain.
This is exactly the pattern single-request security scanners miss. And it’s the pattern we built P2 Chain Analysis to catch.
Walking Through Each Layer
We’ve written about our detection gap analysis and our 8.5M request validation run. Now let’s show what each layer does against a real attack — not synthetic test payloads, but the actual OpenAI hack chain.
Layer 1: Regex Scanner (223 Patterns)
L1 scans every request for known attack patterns — prompt injection templates, credential harvesting syntax, PII, secrets. It’s fast and it’s our first line of defense.
If the attackers used common prompt injection patterns in the forum exploitation step, L1 would have flagged it. Things like “ignore previous instructions” or known credential harvesting syntax.
But sophisticated attackers don’t use those patterns. They reframe the request. They use novel phrasing. L1 catches the low-hanging fruit — it doesn’t catch someone deliberately crafting evasion.
Detection probability: 60-70%. Good enough for script kiddies. Not good enough for a deliberate multi-step attack.
Layer 2: MITRE ATLAS Compliance (52+ Techniques)
L2 maps requests to MITRE ATLAS adversarial ML techniques — AML.T0001 (Prompt Injection), AML.T0020 (Supply Chain Compromise), AML.T0025 (Unauthorized Access via AI).
The mapping here is clean. Discourse forum exploitation = AML.T0020 (Supply Chain Compromise) — the forum was a third-party dependency. Internal sign-on access = AML.T0025. GitHub code exfiltration = AML.T0049 (Exfiltration).
L2 would have flagged the technique classification. But L2 doesn’t block — it annotates. It sets response headers and logs the ATLAS technique ID. It’s metadata for the security team, not a gate.
Detection probability: 75-85%. The mapping is solid, but L2 alone doesn’t stop the attack.
Layer 3: Neural Threat Detector (CharCNN-BiLSTM v13)
This is the model we spent months training — 1.6M parameters, ONNX runtime, character-level CNN with a BiLSTM layer. It detects semantic attack intent. “Help me bypass authentication” said 50 different ways still reads as an attack to this model.
Training corpus: 500+ evasion transforms applied to 10 base payloads. Evasion resistance: 100/100. Zero misses.
L3 would very likely have fired on this attack — if the attacker’s prompts contained attack intent. L3 doesn’t need to match a regex. It reads the request and asks: does this smell like an attack?
The forum exploitation step — probing for vulnerabilities — would likely trigger L3. The internal sign-on access step — attempting to authenticate with stolen credentials — would almost certainly trigger L3.
Detection probability: 95-99%. This is the layer we trust most for single-request detection.
But here’s the thing: L3 is a per-request detector. It evaluates each request independently. If an attacker crafts their initial requests to look legitimate — genuine forum posts, legitimate-looking authentication attempts — L3 might not fire on Turn 1. It would likely fire by Turn 2 or 3, but it doesn’t see the pattern across turns.
That’s where P2 comes in.
Layer 4 (P2): Chain Analysis — The One That Stops This Attack
P2 is the reason we wrote this post. It’s the layer that would have stopped this attack definitively, and it works differently from everything above it.
P2 tracks conversation context across 20 turns (30-minute TTL). For each session, it builds a chain of tool calls and classifies them into three patterns:
- EscalationChain — risk levels increase across calls (recon → exploitation → exfiltration)
- ExfilChain — read operations followed by network calls (data access → external send)
- ReconChain — systematic probing of capabilities (scan → enumerate → test)
It blocks on the 2nd call of a detected chain. Not the first — the first call is always allowed, because a single low-risk action is benign by itself. The chain is the attack.
Here’s how P2 would have processed the OpenAI attack:
Turn 1: Forum exploitation attempt
P2 logs this as “ReconChain start.” Session ID created. Chain tracking initiated. The request is not blocked — we need more context. A single forum interaction is normal.
Turn 2: Attempt to access internal sign-ons
P2 detects the pattern: Recon → Escalation. The risk level jumped from “forum activity” to “internal system access.” This is an EscalationChain.
→ BLOCKED with 403 Forbidden
→ Alert: "P2-EscalationChain (multi-turn attack)"
→ SIEM alert sent
→ Full audit log captured
Game over. Attack stopped at Turn 2, before any employee accounts were compromised. Before GitHub was accessed. Before code was exfiltrated.
The attacker never gets to Turn 3.
We validated P2 with a targeted TPR test using registered tool names from our risk matrix:
| Metric | Value |
|---|---|
| TPR | 88.33% |
| FPR | 0.00% |
| Chain alerts triggered | 53 |
88% TPR on synthetic test patterns. But the OpenAI attack is a textbook EscalationChain — the pattern crosses clear risk thresholds within 2 calls. That’s exactly what P2 was designed to catch. Real-world escalation patterns are less ambiguous than synthetic test patterns.
The key number: 0% FPR across 8.1 million benign requests. Chain analysis doesn’t false-positive. A legitimate user asking a sequence of questions doesn’t trigger an EscalationChain because their risk levels don’t escalate — they stay flat or vary naturally.
Layer 5 (P3): Multi-Turn Risk Scoring
P3 is the backup for P2. It accumulates risk scores across conversation turns: escalation scoring, technique repetition, risk levels (None → Low → Medium → High).
For this attack:
- Turn 1: Medium severity (forum exploitation) — score: 0.5
- Turn 2: High severity (internal sign-on) — score: 1.0
- Escalation delta: 0.5 → High → BLOCKED
P3 would have blocked at Turn 2 as well, independently of P2. Having both means the blocking decision is confirmed by two separate algorithms.
Detection probability: 95%+. P3 and P2 overlap intentionally — defense in depth.
Layer 6 (P4): Anomaly Detection
P4 is time-based and entropy-based. It checks for volume spikes, off-hours usage, new tool appearance, and geo-shift.
An external researcher accessing internal sign-on systems is anomalous compared to normal employee behavior. P4 would flag this — but P4 is alert-only, not blocking. We validated P4’s FPR at 0% across 8.5M requests, but we couldn’t validate TPR in the lab because synthetic traffic doesn’t have natural variation. P4 needs real production traffic to calibrate.
Value here: Additional telemetry for the security team. Not the blocking layer.
Layer 7 (P5): Exfiltration Scoring
P5 scans AI responses for data exfiltration patterns — sensitive data in outbound traffic. If the attack had reached GitHub access, P5 would have detected code exfiltration attempts.
But P5 is also alert-only currently. And if P2 blocks at Turn 2, the attack never reaches the exfiltration stage. P5 is a late-stage safety net, not the primary defense.
Response Guard: PII/Secrets/XSS Scanning
Response Guard scans AI responses before returning them to the user. StrictMode = true (default, fail-closed). If the employee’s ChatGPT account had credentials in context, Response Guard would detect secrets in the response and block it from reaching the attacker.
This is the last line of defense — if everything above failed, Response Guard would still prevent credential exfiltration. 90%+ detection probability for known secret formats (API keys, AWS credentials, JWT tokens).
The Interception Summary
| Interception Point | Layer | Detection | Probability |
|---|---|---|---|
| Forum exploitation | L1/L2 | Prompt injection, AML.T0001 | 60-70% |
| Novel technique | L3 | Semantic attack intent | 95-99% |
| Internal sign-on access | P2 | EscalationChain (Turn 2) | 99%+ ← PRIMARY |
| Risk confirmation | P3 | Escalation score 1.0 | 95%+ |
| Credential exfil | Response Guard | Secrets in response | 90%+ |
Primary interception: P2 Chain Analysis at Turn 2.
L3 might catch it at Turn 1. L1/L2 might catch it at Turn 1. But P2 definitively catches it at Turn 2 — and that’s the point. Multiple layers mean multiple chances. P2 is the one that doesn’t miss.
Why OpenAI Didn’t Catch This
We don’t know what security layers OpenAI had in place. But based on the attack succeeding through multi-turn escalation, we can infer:
- No chain analysis — otherwise Turn 2 would have been blocked
- Possibly no real-time blocking — or blocking was disabled due to false positives
- Third-party integration risk — Discourse forum was the entry point, outside OpenAI’s direct control
- SaaS-only deployment — no self-hosted, air-gapped option for sensitive workflows
This isn’t criticism. OpenAI’s focus is model capability, not enterprise security gateway. That’s a different product category. But it highlights the gap: AI platforms need runtime security that understands multi-turn attack patterns.
What We Learned Building This
When we started building AegisGate, we thought L3 (the neural net) would be the killer feature. A model that detects attack intent regardless of phrasing — that’s the hard problem, right?
It is. But it’s not sufficient.
The OpenAI hack proves why. A sophisticated attacker doesn’t send one request that screams “I’m an attack.” They send a sequence of requests that each look reasonable in isolation. L3 evaluates each request independently — it’s powerful, but it’s per-request.
Chain analysis is the missing piece. It’s the layer that says: “I don’t care if this individual request looks benign. The pattern of requests is an attack.” That’s context-aware detection. That’s what stops multi-turn escalation.
The 30-minute TTL is deliberate. It’s long enough for legitimate multi-turn conversations — coding help, research queries, analysis tasks. But it’s short enough that an attacker can’t just “wait it out” between steps. If they slow down to evade the window, the attack becomes impractical. 30 minutes is the sweet spot between usability and security.
And the “block on 2nd call” design is critical. The first call is always allowed. This means zero false positives on legitimate single requests — a user asking one question, even a sensitive one, is never blocked. The block only fires when a pattern establishes. That’s why FPR is 0% across 8.1 million benign requests.
The Receipts
These numbers aren’t theoretical. We validated them across:
| Metric | Value |
|---|---|
| Total requests stress tested | 8,546,186 |
| Peak throughput | ~28,000 RPS |
| L3 TPR (neural detection) | 99.57% (425,724 / 427,522) |
| FPR (all detectors) | 0.00% (0 / 8,118,664 benign) |
| Evasion resistance | 100/100 (500 transforms × 10 payloads) |
| STRIDE threat model | 38 findings (34 mitigated, 5 residual) |
| Security score | 9.5/10 |
Published threat model: docs/THREAT-MODEL.md
Architecture diagrams: docs/diagrams/
Full validation writeup: From Shadow to Shield: 8.5M Requests and Blocking Mode
What’s Next
The OpenAI hack — combined with the Hugging Face agent escape two weeks prior — shows that AI-assisted hacking is here. Hacktron used Claude. The Hugging Face attack was 1,000+ autonomous agents.
AI-powered attacks will accelerate. We need AI-powered defense. Not just per-request scanning — context-aware, multi-turn, chain-detecting defense.
AegisGate is built for this: 7-layer detection, real-time blocking, self-hosted deployment, published threat model.
The OpenAI hack was preventable. With chain analysis, it would have been stopped at Turn 2.
Sources
- Ars Technica: “Researchers used Claude to hack OpenAI” (Sep 18, 2026)
- MITRE ATLAS: Adversarial Threat Landscape for AI Systems
- AegisGate Threat Model:
docs/THREAT-MODEL.md
AegisGate Security — Open-source AI security gateway. Built by Josh Colvin. Apache 2.0.