Security
This page lists the audits, the known vulnerabilities, and the steps to verify your deployment.
Report vulnerabilities to security@zodiac.eco. Do not open a public issue.
Verify your mastercopy
Every Zodiac instance is a proxy that points to a mastercopy. The mastercopy version decides whether known vulnerabilities affect you.
- Check now: open your instance in the Zodiac App or read the implementation address from the proxy bytecode on the explorer.
- In code: the
@gnosis-guild/zodiacpackage exports the canonical addresses and the faulty list.sanityCheckZodiacModuleAddressthrows for unknown and for faulty mastercopies.
| Contract | Deploy only | Do not use |
|---|---|---|
| Roles Modifier | 2.1.1 — 0xF2964CE6161ce0e75964Fe7927cE114cb0B283D5 | 2.1.0 — 0x9646fDAD06d3e24444381f44362a3B0eB343D337 |
| Delay Modifier | 1.1.1 — 0x824175b945838d127c1ca83cbce11d8e44f6df01 | 1.1.0 — 0x01F8cabB808D7dE0dF4202D4B60C8310d2f1339b |
The June 2026 incident: ERC-1271 authorization bypass
On 1 June 2026, an attacker exploited an authorization bug in Roles v2.1.0 and Delay v1.1.0. Read the full post-mortem before you rely on this summary.
The bug. The module-authentication code accepted an ERC-1271 contract signature without a check that the verification call itself had succeeded.
Who was affected. Only setups where a Safe that uses the CompatibilityFallbackHandler
was a role member (Roles v2.1.0) or an enabled module (Delay v1.1.0). Setups with only
externally owned accounts as members were not affected. Most of the value at risk was
secured; Gnosis Pay accounts were the primary exploited deployment.
The fix. Patched mastercopies Roles 2.1.1 and Delay 1.1.1, released on 19 June 2026
after an audit by Gnosis. The faulty versions stay listed in the FAULTY registry of
@gnosis-guild/zodiac.
What you must do.
- Verify your mastercopy versions (see above).
- Run the self-service check at app.zodiac.eco/public/fallback-handler .
- If you run a faulty version: replace the instance with a new deployment of the patched mastercopy, and disable the old instance on the Safe.
Audits
| Report | Scope | Date |
|---|---|---|
| G0 Group | Zodiac core contracts | September 2021 |
| G0 Group | Delay Modifier | September 2021 |
| G0 Group | Roles v1 | January 2022 |
| G0 Group | Zodiac Modifier update | February 2023 |
| G0 Group | Roles v2 | April 2023 |
| Omniscia | Roles v2 | May 2023 |
| Omniscia | Roles v2.1 | November 2023 |
| G0 Group | Roles v2.1 | November 2023 |
| Certora | Uniswap V4 custom conditions (by DAMM Capital) | August 2025 |
| Gnosis | The 2.1.1 / 1.1.1 patches | June 2026 |
The reports are in the audits/ and packages/evm/docs/ folders of the repositories.
The trust model in one paragraph
A module is a path into the Safe without signatures. The Safe owners choose which modules exist, which modifier limits each module, and which mastercopy each proxy runs. Roles conditions check calldata, not outcomes: they cannot see prices, balances, or slippage. Design permissions so that a fully compromised member key can only cause losses that you accept, and put a Delay Modifier in front of everything that can cause more. An AI agent is such a member key with a higher probability of misuse — treat its role as if the key were already public. See Permission an AI agent.