Machine-checked proofs are finding real zero-days.

Project Formalization pairs a frontier model's mathematical ability with formal verification to hunt critical vulnerabilities in the software that runs on billions of devices, reproducing known CVEs in as little as 34 minutes, offline, and surfacing novel 0-days in under an hour.

34min
Fastest known-CVE reproduction, no internet
<1hr
Time to a novel 0-day in critical software
5agents
Adversarial + verifying, run in parallel
10+ vulnerabilities
three 0 days, eight reproductions, in a weekend
§1 The shift

Formal verification used to be avionics-only. That arithmetic is changing.

Proof. Formally verifying software, mathematically proving a program cannot misbehave, has long been reserved for the most critical systems we build, because it cost more time and money than almost anyone could justify.

The same trajectory that took AI from struggling with competition math to solving it is now reaching software. What was recently expert-only and painfully slow is becoming fast and routine for small, well-scoped targets. Project Formalization is a concrete step into that intersection: frontier mathematical reasoning, pointed at real cybersecurity surfaces, with formal methods as the ground truth.

§2 How it works

One coordinator. Four agents that never speak. Opposite instructions.

A coordinator scopes the project and picks the subsystem worth attacking, or you hand it one directly. It then spawns two agents that are forbidden from communicating. Each is shadowed by a hostile critic that tries to tear its reasoning apart. Five agents in total, working the same code from irreconcilable premises. Only communication is with the coordinator.

Coordinator
Scopes the target & spawns the split
Selects a traceable, high-severity subsystem, prefers memory-focused surfaces over deep multi-step chains.
⊥
Agent A, Falsifier
Assume the bug is real
Primed with “there is a vulnerability here that violates the safety spec, find it.” The certainty drives a deeper, more persistent search, and it lands novel 0-days even when no bug was confirmed to exist.
Hostile critic, challenges every claimed exploit
⊨
Agent B, Verifier
Assume nothing, just prove it
Given a neutral task: “verify that this subsystem satisfies its safety properties.” Sometimes it stumbles onto the counterexample the falsifier missed entirely, a bug found by trying to prove there wasn't one.
Hostile critic, challenges every claimed proof
// no channel between A and B, different framings win in different places

The initial focus is narrow on purpose: critical open-source C, chosen for its mature formal ecosystem. A separate harness that doesn't lean fully on formal verification or C is in active development alongside it.

The whole thing is packaged as a portable skill, so it moves across environments cheaply. A single run is inexpensive; stacking runs across subsystems converts directly into coverage, closing entire bug classes before release, at a cost once reserved for avionics-tier systems.

CBMC · bounded model checking
SV-COMP · verification benchmarks
Lean · behavioral proof
§3 Results

Reproduced CVEs, offline. Potential 0-days on software you're running now.

Every reproduction below has a disclosure date after the model's knowledge cutoff, run with web access heavily monitored, and several with no internet at all.

Target CVE Severity Note
curl v8.20 CVE-2026-10536 9.8 CRITICAL Reproduced in as little as 34 min
curl v8.20 distinct UAF USE-AFTER-FREE Collateral-fixed when priority-tree code was removed in 8.21.0
wolfSSL v5.9.1 CVE-2026-55960 7.5 HIGH —
wolfSSL v5.9.1 CVE-2026-6679 7.5 HIGH —
wolfSSL v5.9.2 CVE-2026-5460 6.5 MEDIUM Found on production; from an incomplete-fix follow-up

Severity scores from CISA-ADP, except CVE-2026-5460. NVD assessments were not yet published at time of writing.

⊥ Potential 0-days

Undisclosed pending responsible-disclosure timelines, reported here only by target.

curl2 findings
Mozilla NSPR1 finding

Netscape Portable Runtime ships inside browsers and TLS stacks across the ecosystem.

⊨ Why two framings, not one

The findings didn't come from a single strategy. The falsifier's certainty produced 0-days even where no bug was confirmed. The verifier's attempt to prove safety surfaced counterexamples the falsifier couldn't reach.

Different exploits are, in a real sense, differently motivated. Running both premises in parallel is where the coverage comes from.

Where it started · the overnight run
An overnight /goal proved a 5,000+ LOC C++ backend behavior-exact inside Lean, in 14 h 28 m. A feat that used to take experts months, or years.
Subject: tercih24.com · Model: GPT 5.6 Sol · Result: exact replication of the codebase's behavior in a proof assistant
§4 What we learned

Three things the runs kept teaching us.

01

The math is getting mortal

What was thought incredibly hard is now very doable for small projects, and once-impossible feats in software are starting to look reachable.

02

Pick your target carefully

Models are spiky. “Find vulnerabilities in curl” burns a whole budget for nothing; a small, traceable, memory-focused surface returns high-severity results in a sane timeframe. Target selection is half the pipeline.

03

Framing changes what's findable

Telling an agent a bug exists drives a deeper search. Telling another to merely verify safety surfaces different bugs. The model genuinely benefits from being approached from more than one side.

§5 What's next

Toward an end-to-end pipeline that formalizes software autonomously.

› Try it out

See a proof land.

Just fetch the skills from the repo and you are good to go!

∎
Q.E.D. — defending software has never been more possible.