Auditing Holonym's Aztec Bridge

The Challenge: Bringing Compliant Privacy to Cross-Chain Transfers

Holonym's Aztec Bridge allows users to move ERC-20 tokens from Ethereum to Aztec L2 while presenting Proof of Humanity and Proof of Clean Hands credentials. The result is a bridge that supports compliant private minting and withdrawals on either layer, with sensitive account details shielded by Aztec's native privacy features.

The design sits at the intersection of three difficult domains: cross-chain bridging, zero-knowledge cryptography, and credential-based access control. A signature scheme designed for one purpose can be quietly reusable for another. A state variable with the wrong update semantics can open a window for double-spending. Privacy guarantees can leak through subtle metadata channels.

Holonym engaged Nethermind Security to review the bridge contracts on both Ethereum and Aztec, examine the cryptographic constructions, and assess whether the architecture held up against the threats specific to compliant privacy systems.

Key Technical Challenges

Several factors shaped the scope of the engagement:

  • Reviewing Solidity contracts on Ethereum alongside Noir contracts on Aztec, with different execution models and state semantics on each side.
  • Assessing privacy guarantees end-to-end, including whether any user-identifying data could leak through public state or transaction metadata.
  • Verifying Sybil resistance, given that the bridge relies on Human Passport’s Proof of Humanity to enforce one-person-one-account behaviour.
  • Checking for double-spend and replay vectors across nonces, signatures, and credential reuse.
  • Constraining proof size and generation time so that proofs remain practical to produce in a local browser environment.

The combination of Aztec's DelayedPublicMutable state semantics, signature reuse across the broader Holonym ecosystem, and the cross-chain message flow produced several non-obvious attack paths.

Findings That Mattered

Our review uncovered issues across several risk areas:

  • Aztec state update semantics: Several DelayedPublicMutable variables were configured with delay values too short for reliable use, and one nonce-tracking variable used DelayedPublicMutable where stale reads could allow the same nonce to be consumed by concurrent transactions. Both issues stemmed from the gap between when an update is scheduled and when it takes effect on Aztec.
  • Signature scope and replay protection: The actionId used during signature verification was not bound to the bridge, meaning signatures issued for other Holonym use cases could be replayed against the bridge contract. This weakened the Sybil protection the credential system was designed to provide.
  • Cryptography and circuit efficiency: Beyond correctness, we examined the ZK circuits for opportunities to reduce proof generation time without compromising the privacy properties, since proofs are generated client-side.
  • Access control and credential verification: We checked that signature verification, credential checks, and contract access paths were consistently enforced across both the Ethereum and Aztec sides of the bridge.

These findings were reviewed with the Holonym team and resolved before deployment, with architectural changes applied where simple patches would not have addressed the root cause.

Our Process

Nethermind Security conducted a full audit of the Holonym Aztec Bridge, covering Solidity contracts on Ethereum and Noir contracts on Aztec.

The review combined manual analysis of the smart contracts with a focused assessment of the privacy and cryptographic guarantees, drawing on our team's experience with the Aztec network. We worked through the codebase function by function, mapping the cross-chain message flow and credential verification logic, and produced a proof-of-concept for the most severe finding to confirm exploitability.

Communication ran on a biweekly cadence through scheduled calls, with async discussion in between for clarifications and follow-ups. Alongside security findings, we shared optimisation suggestions aimed at reducing proof generation time, which matters for users generating proofs locally.

Total findings: 6

  • 1 Critical
  • 2 High
  • 3 Medium

All vulnerabilities were resolved before deployment.

The Outcome: A Bridge Ready for Compliant Private Transfers

The engagement closed with all critical and high severity issues resolved, alongside the medium findings. The architectural changes around DelayedPublicMutable state and actionId binding closed off the most consequential attack paths, while the cryptography review contributed performance improvements to the proof system.

A secondary outcome was a finding in the Aztec documentation itself, identified during the review and surfaced back to the Aztec team. The Holonym team moved quickly on remediation, and the architectural decisions made during the engagement strengthened the bridge against both privacy and Sybil-related risks.

"Privacy tech is high stakes. Users depend on apps to keep them safe. Apps depend on the protocol to operate as designed. And protocols depend on their maths and design assumptions to hold up in the real world. Navigating this as a builder is difficult on your own. Working with Nethermind was a great experience to close the gap from assumptions to real world production-ready code"
Shady El Damaty - CEO, Holonym

Start a conversation about your project's security

Author
Nethermind Security - Audits Team
This team focuses on applied audits, correctness checks, code reviews, L1/L2 risk, and more.
get in touch

Work with Nethermind Security

Nethermind Security audits the protocols securing billions on-chain. If you are shipping something that needs to hold up, let's talk.

Book an expert call

Follow Nethermind Security on X