All issues

zkSecurity Newsletter

September–October 2026

In this issue: zkao 3.0, adversarial testing of Zcash’s Ironwood formal verification, and audits of OpenVM 2.0 and Midnight.

October 31, 2026

zkao 3.0 is out. It groups projects into organizations with one credit balance, adds three new analysis techniques and scans that build on earlier runs, and introduces an assistant that briefs you on your scans and answers in finding comments.

For Zcash, we spent three weeks testing Ironwood, the Lean formalization of the Orchard circuit and its Halo2 stack. We injected soundness bugs into the Rust code and the Lean model, checked whether the proofs rejected them, and wrote up the pitfalls formal verification runs into. In a related post, “Better Codes” shows an AI working around a security check to get a hard theorem through.

The blog also covered how AI has made finding and exploiting bugs cheap and what teams should do about it, Fiat-Shamir bugs from real projects, a programmer-first introduction to Clean, and the eleventh “Proof is in the Pudding” session, on zkML. Mathias and Giorgio talked about zk.golf and Clean on the Zero Knowledge podcast.

On the audit side, we published our four-phase audit of OpenVM 2.0, two audits of SecondFi’s Cardano recovery flow, and four reports for Midnight covering its circuits, its Halo2 fork, and its proof system. zk.golf added four challenges, and Clean got a website and AIR witness generation in its Plonky3 backend.

Highlights

In this issue

AI

zkao 3.0

Organizations with one shared credit balance, three new analysis techniques, scans that build on earlier analysis, and an assistant that briefs you on your scans. See what’s new →

Research

Testing a formal verification

Over three weeks we injected soundness bugs into the Rust code and the Lean model behind Ironwood, Zcash’s formalization of the Orchard circuit, and checked whether the proofs caught them. Read it →

Audits

OpenVM 2.0 and four Midnight reports

We published our four-phase audit of OpenVM 2.0 and four reports for Midnight covering its circuits, its Halo2 fork, and its proof system.

Research

Finding bugs became cheap

AI has made finding and exploiting bugs cheaper, including in cryptographic and zero-knowledge code, while validation and remediation remain slow. Our view of what teams should change. Read it →

Audits

Public audit reports

  • Midnight Circuits and Proof System Follow-up Audit

    Midnight

    Our third audit for Midnight, covering changes to the PLONK proof system in midnight-zk, including the trash argument and committed instances, and its trusted setup.

  • Audit of Midnight Halo2 Fork

    Midnight

    Review of Midnight’s Halo2 framework, a fork of PSE Halo2, covering its changes to the PLONK proof system and lookups.

  • Audit of Midnight Foreign Field, ECC & Hashing Circuits

    Midnight

    Review of the Halo2 circuits for the Midnight network: foreign-field arithmetic, elliptic curves, hash-to-curve, Poseidon, SHA-256, and Merkle trees.

  • Audit of Midnight Circuits (2)

    Midnight

    Review of additional circuits from Midnight’s standard library, written in Halo2.

  • Adversarial Testing of the Ironwood Formal Verification

    Zcash

    Instead of a conventional code review, we injected knowledge-soundness bugs into the Rust implementation and the Lean model of Zcash’s Orchard circuit and Halo2 stack, then checked whether Ironwood’s formalization rejected them.

  • End-to-End Audit of SecondFi's recovery flow

    SecondFi

    Review of SecondFi’s recovery flow, where users recover funds by proving in zero knowledge that a master key derives a compromised key. It covered the verifiers, the soundness and completeness of the flow, and the web security of the recovery app.

  • Audit of OpenVM 2.0

    Axiom

    A four-phase audit of OpenVM 2.0, covering the SWIRL proof system, the native and recursive STARK verifiers, the continuations aggregation pipeline, and the new deferral framework.

  • Audit of SecondFi's proof-tool circuits and prover patches to gnark

    SecondFi

    Review of the gnark circuits and prover patches that let users prove ownership of a Cardano wallet credential in the browser without revealing private keys or derivation paths. Two high-severity issues in the upstream code were found and fixed.

Research

From the blog & research

  • Checking the Checkers and Auditing the Ironwood FV

    Cryptographic software is error-prone and failures are catastrophic, therefore formal verification is a powerful and increasingly practical tool for greatly improving the assurances of our cryptographic software. But who verifies the formal verification? Formal verification itself is software too, what is proved, under which assumptions and its relation to the real-world implementation lie beyond the scope of the machine-checked proof. In this post, we want to give some insights into our three-week audit of the Ironwood formalization and some of the common pitfalls that formal verification more broadly can encounter.

  • Archetype x zkSecurity - Proof is in the Pudding: zkML

    In Session 11 of “Proof is in the Pudding,” we look at what it takes to prove model inference. We cover transformer computation, sumcheck, GKR, lookup arguments, quantization, and KV caching, then discuss scaling and possible uses for verifiable ML.

  • Intro to Clean for Devs.

    We think that Clean is the future of circuit development, so we created a programmer-first introduction to show circuit developers who have never used formal verification how they can build circuits faster, safer and better.

  • Fiat-Shamir Bugs: How One Missing Line Breaks a Proof System

    This blog post looks at Fiat-Shamir from a practical security perspective: it explains why something that seems simple in theory can become surprisingly easy to get wrong. By using vulnerabilities found in real-world projects, we give developers and reviewers a better way to think about Fiat-Shamir when designing, implementing, and auditing proof systems.

  • Better Codes - and how they can be worse if you're not careful

    An exploration of how an AI tried to work around a security feature to handle a theorem that was hard to prove.

  • The Year Finding and Exploiting Bugs Became Cheap, and What to Do About It

    The economics of security have changed. AI has made finding and exploiting bugs cheaper, including in cryptographic and zero-knowledge code, while validation and remediation remain slow. Here is our view of what happened, what comes next, and how teams should change the way they secure their stack to defend against AI-assisted attackers.

Talks

Talks & podcasts

Tooling

Releases & open source

  • zkao 3.0

    zkao 3.0 adds organizations, which put projects under one team with shared roles and one credit balance, and our biggest analysis update since launch: three new techniques, scans that build on earlier analysis, and coverage for trusted execution environments and Noir. Scan types are now named for the job (Quick Look, Deep Audit, Continuous Testing, Dependency Watch), and a new assistant briefs you and answers questions about your scans.

  • zk.golf

    Four new challenges: BLS12-381 G1 scalar multiplication in variable- and fixed-base versions, the Keccak-p[800, 12] permutation over GF(2), and extracting claims from a Google ID token, the first parsing challenge.

  • clean

    The Verified-zkEVM Lean4 library got a website at clean.zksecurity.xyz and moved to Lean’s module system. A new compiler emits WebAssembly text and exports R1CS constraints for snarkjs, and the Plonky3 backend gained AIR witness generation, fixed columns, and memory support.

Get the next issue in your inbox

One email every two months. Audits, research, and tooling from the zkSecurity team.

No spam. Unsubscribe anytime.