<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Zero-Day on Niels Provos</title><link>https://www.provos.org/tags/zero-day/</link><description>Recent content in Zero-Day on Niels Provos</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Wed, 29 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://www.provos.org/tags/zero-day/index.xml" rel="self" type="application/rss+xml"/><item><title>Finding Zero-Days with Any Model</title><link>https://www.provos.org/p/finding-zero-days-with-any-model/</link><pubDate>Wed, 29 Apr 2026 00:00:00 +0000</pubDate><guid>https://www.provos.org/p/finding-zero-days-with-any-model/</guid><description>&lt;img src="https://www.provos.org/p/finding-zero-days-with-any-model/poster.png" alt="Featured image of post Finding Zero-Days with Any Model" />&lt;p>The prevailing narrative in AI-driven security claims that discovering novel vulnerabilities is a &amp;ldquo;frontier&amp;rdquo; feature reserved for restricted models like Anthropic&amp;rsquo;s recently announced &lt;a class="link" href="https://red.anthropic.com/2026/mythos-preview/" target="_blank" rel="noopener"
>Mythos Preview&lt;/a>. Recent high-profile reports highlighted the ability of these advanced models to uncover decades-old memory safety violations, such as the 1998 OpenBSD TCP SACK implementation flaw, framing these findings as a paradigm shift in the threat landscape.&lt;/p>
&lt;p>The reality differs. My research demonstrates that these capabilities reside not just in proprietary frontier models, but in the &lt;strong>orchestration architecture&lt;/strong> used to manage commercial models. I built workflows on top of my open-source &lt;strong>IronCurtain&lt;/strong> framework to explore this. Using a specialized vulnerability discovery workflow, I replicated these frontier findings and autonomously discovered new zero-day vulnerabilities in foundational software with commercial models like &lt;strong>Opus 4.6&lt;/strong> and &lt;strong>Sonnet 4.6&lt;/strong>, as well as open-weight models like Z.AI&amp;rsquo;s &lt;strong>GLM 5.1&lt;/strong>.&lt;/p>
&lt;h2 id="orchestrating-vulnerability-discovery">Orchestrating Vulnerability Discovery&lt;/h2>
&lt;p>&lt;strong>IronCurtain&lt;/strong> is a research prototype I designed to enable structured, agentic security research. The framework supports arbitrary workflows structured as &lt;strong>finite-state machines (FSM)&lt;/strong> via plain YAML definitions. To automate vulnerability discovery, I built a &lt;code>vuln-discovery&lt;/code> workflow within this FSM. This workflow introduces a central &lt;strong>Orchestrator&lt;/strong> agent that acts as a strategic router. It decides which specialized agent to dispatch next based on an append-only execution &lt;strong>journal&lt;/strong>.&lt;/p>
&lt;p>This journal lets the model maintain state, test hypotheses, and navigate the code. The &lt;strong>Orchestrator&lt;/strong> does not read the target source code itself. It relies entirely on the journal to manage the investigation until producing a final vulnerability findings report. This journal and other on-disk artifacts allow every agent state to begin with a fresh context window and rehydrate from disk. That said, this workflow is token-intensive. A single run against a moderately sized codebase consumes roughly 10 million tokens on &lt;strong>Opus&lt;/strong> or &lt;strong>Sonnet&lt;/strong>, costing $150 or $30 per investigation respectively. Five runs on Z.AI&amp;rsquo;s hosted &lt;strong>GLM 5.1&lt;/strong> averaged 27 million tokens each, reflecting more iteration cycles to reach the same conclusion. Z.AI lists &lt;strong>GLM 5.1&lt;/strong> at $1.40 per million input tokens ($0.26 cached) and $4.40 per million output, putting per-investigation cost in the same range as Sonnet despite the higher volume. Truly local inference on commodity workstation hardware remains an aspiration rather than a demonstration here: a smaller distilled candidate I tested (Qwen 3.5 distilled) could not run the workflow, so &lt;strong>GLM 5.1&lt;/strong> ran on Z.AI&amp;rsquo;s GPUs throughout.&lt;/p>
&lt;h2 id="replicating-the-1998-openbsd-discovery">Replicating the 1998 OpenBSD Discovery&lt;/h2>
&lt;p>Anthropic&amp;rsquo;s Red Team highlighted a 27-year-old vulnerability in the OpenBSD TCP SACK implementation as the marquee finding of their Mythos report. This specific bug was meaningful to me as I was responsible for committing the OpenBSD TCP SACK implementation, including the bug, in November 1998. To test whether open orchestration could replicate this frontier capability, I pointed an early iteration of the &lt;code>vuln-discovery&lt;/code> workflow at this historical, unpatched C code.&lt;/p>
&lt;p>Using an initial &lt;strong>Sonnet 4.6&lt;/strong> analyst agent, the workflow mapped the structural data flow and call chains. The FSM orchestration follows a simple discipline: hypothesize statically, validate by execution. Anything else is noise. In this workflow, a proof-of-concept (PoC) is an executable harness that triggers the vulnerability to prove reachability and surface memory corruption, providing empirical evidence beyond static analysis.&lt;/p>
&lt;p>However, during this first test of the FSM harness, the prompting and journal-keeping were not yet sufficient to keep the system on track. Because the secure &lt;strong>IronCurtain&lt;/strong> container could not natively boot an OpenBSD virtual machine, the agent fell back entirely on static analysis. It identified the bug but stopped short of executing it, producing a report that lacked a proof-of-concept (PoC).&lt;/p>
&lt;p>This limitation led to an iterative improvement in the workflow. It became clear that initial hypothesis exploration does not require a full VM; it can happen via lightweight harnesses, such as single-function fuzzing. Only the final PoC requires the VM path.&lt;/p>
&lt;p>To finalize the validation, I used &lt;strong>Opus 4.6&lt;/strong> directly via Claude Code. With some manual steering, I got the model to first replicate the bug via lightweight fuzzing. It designed a standalone, high-performance fuzzer for the specific C function, systematically sweeping the input space in seconds. The model isolated the exact trigger: a difference of just two sequence numbers out of 4.3 billion, sitting precisely on the 32-bit integer sign boundary.&lt;/p>
&lt;p>Once the parameters were isolated via fuzzing, I had the model build a QEMU-based driver to test against a live VM, reliably replicating the kernel panic.&lt;/p>
&lt;p>This OpenBSD replication was the workflow&amp;rsquo;s first practical test. The manual steering required during this initial run allowed for direct improvements to the FSM&amp;rsquo;s prompts and journal-keeping, establishing a tiered approach to harness building: single-function isolation harnesses, multi-component harnesses, and full end-to-end VM validation. The workflow now dynamically scales through these tiers based on what is required to establish the exploitation primitive. After these changes the workflow ran the next investigations without manual steering.&lt;/p>
&lt;h2 id="autonomous-discovery-and-scaling-defense">Autonomous Discovery and Scaling Defense&lt;/h2>
&lt;p>An orchestration framework proves its value by autonomously discovering bugs in modern codebases. The &lt;code>vuln-discovery&lt;/code> workflow surfaced previously unreported vulnerabilities and significant bugs across four widely-used open-source projects, each with years of public fuzzing and dedicated security review. The two case studies below describe representative runs. Specific identities and exact bug mechanics are withheld while upstream coordination, CVE assignments, and advisories remain in progress.&lt;/p>
&lt;p>While analyzing a widely-deployed media framework, the &lt;code>vuln-discovery&lt;/code> workflow discovered a previously unreported vulnerability. Utilizing &lt;strong>Opus 4.6&lt;/strong>, the framework identified the flaw and produced a multi-component harness to confirm the underlying primitive. Validating the flaw with a full end-to-end harness required some human guidance; memory-constrained reproduction environments initially masked the trigger condition. After harness optimizations, the workflow generated a proof-of-concept that reliably triggered the vulnerability, and I reported the finding to the upstream maintainers. The result validates the approach of independent vulnerability discovery conducted by a commercially available model paired with open-source orchestration.&lt;/p>
&lt;p>Moving off the Anthropic ecosystem entirely, a subsequent run pointed the same &lt;code>vuln-discovery&lt;/code> workflow at a different foundational library. Only the model changed: a LiteLLM gateway rewrote Anthropic identifiers to route to Z.AI&amp;rsquo;s &lt;strong>GLM 5.1&lt;/strong> on an Anthropic-compatible endpoint, while &lt;strong>IronCurtain&lt;/strong> and the FSM orchestration layer were untouched.&lt;/p>
&lt;p>&lt;strong>GLM 5.1&lt;/strong> drove discovery end-to-end. Working from the append-only journal, the &lt;strong>Orchestrator&lt;/strong> scoped the target and routed the system to tiered harness construction. The autonomous workflow isolated an integer truncation flaw on a memory allocation path that had been present for eighteen years, echoing the 27-year dormancy of the OpenBSD SACK case above. Through structural analysis of the relevant arithmetic, the orchestrated model generated a proof-of-concept and a sanitizer-validated harness sufficient to confirm the vulnerability class.&lt;/p>
&lt;p>To ensure accurate severity scoring for responsible disclosure, it was necessary to confirm the underlying exploitability primitives. I conducted this guided manual analysis in Claude Code with &lt;strong>Opus 4.7&lt;/strong>, my interactive research environment for deep technical work and a stronger model than &lt;strong>GLM 5.1&lt;/strong> for analysis of this depth. The work demonstrated a controlled out-of-bounds heap read and write primitive. Because the affected library is widely deployed across internet-facing infrastructure, the flaw represents a serious remote risk.&lt;/p>
&lt;p>Confirming critical severity required a working exploit, which falls outside the discovery-scoped &lt;code>vuln-discovery&lt;/code> workflow. When the model refused my initial request to construct one, I manually broke the exploit development process into a granular, seven-step plan to work around the refusal. The model successfully executed the first two steps before its Acceptable Use Policy (AUP) guardrails forced it to decline further collaboration. Fortunately, the second step proved that Address Space Layout Randomization (ASLR) could be circumvented by reading base pointers, sufficient empirical evidence to support a high-severity assessment.&lt;/p>
&lt;p>Three observations follow from these runs. First, generating a proof-of-concept (PoC) exploit is required for defenders. Theoretical vulnerabilities identified through static analysis inevitably produce a high volume of false positives. False positives consume massive amounts of time for security operations teams to triage and manually verify. An execution proof of a vulnerability quickly removes these time-consuming false positives, ensuring defenders focus only on validated threats.&lt;/p>
&lt;p>Second, while open orchestration provides the necessary scaffolding to execute complex workflows, the underlying quality of the foundation models still matters. Foundation model quality sets the floor for what orchestration can extract, but the open-weight result shows that floor is now low enough for commodity models to clear.&lt;/p>
&lt;p>Third, the economics now favor frequent, broad audits. At commercial-API pricing, an investigation runs $30 to $150 per codebase (Sonnet to Opus); at production scale that determines how many libraries a defender can afford to look at in a year. Hosted open-weight providers run in the same range as Sonnet at higher token volumes, and self-hosting on capable hardware would reduce the marginal cost further once the upfront investment is made.&lt;/p>
&lt;p>Orchestration cuts both ways. The reality is that well-resourced adversaries already use orchestrated workflows to hunt for zero-days at scale. They operate free from vendor usage policies, AUP friction during legitimate research, API rate limits on multi-hour runs, and curated access lists for embargoed frontier models. The seven-step refusal during severity assessment is exactly the asymmetry at issue: a defender doing legitimate work hit friction that a well-resourced adversary using uncensored open-weight models would not. A locally-hosted open-weight model removes that gate. The vendor&amp;rsquo;s friction layer is liability protection rather than accountability; on a local model, accountability for the work rests directly with the researcher, where it belongs. &lt;strong>IronCurtain&lt;/strong> exists to close this gap. By combining open-source scaffolding with local or commodity open-weight models, defenders can audit codebases and ship patches before automated exploitation catches up. I encourage security engineers to review the &lt;a class="link" href="https://github.com/provos/ironcurtain" target="_blank" rel="noopener"
>IronCurtain framework&lt;/a>, contribute to the orchestration scaffolding, and help build the baseline tools for automated defense. Onboarding is still being polished, so contributions toward easier setup are particularly welcome.&lt;/p></description></item></channel></rss>