Reproduced Exploit
Panther Protocol (Base): unopposed self-answered governance proposal captures the Safe
Loss
~5.12M ZKP moved (pre-launch, no user funds lost)
Chain
Base
Category
untagged
Date
Aug 2026
Source
DeFiHackLabs
EVM Playground
Source-level debugger — step opcodes and Solidity in sync
The attack is replayed in an in-browser EVM preloaded with the exact dumped fork state. The execution tree shows every call; step by Solidity line or by opcode across all depths — source, Stack, Memory, Storage, Balances (native / ERC-20 / NFT), Transient storage and Return value stay in sync. Click a tree node, opcode, or source line to jump. No backend, no live RPC.
Source & credit. Exploit reproduction, trace data, and analysis adapted from DeFiHackLabs by SunWeb3Sec — an open registry of reproduced on-chain exploits. The historical source/toolchain is unavailable; this entry is documentation only and claims no executable Forge PoC. Upstream DeFiHackLabs PoC:
src/test/…/PantherBase_exp.sol.
Vulnerability classes: vuln/logic · vuln/access-control
Reproduction: a self-contained, faithful reconstruction of the incident's core bug — local deploy, no fork — both gates green (registry
forge testPASS + browser PlaygroundVERDICT: PASS). Basis: DeFiHackLabs PR #1209 (PantherBase_exp.sol, the upstream fork replay).
Key info#
| Loss | ~5.12M ZKP moved (pre-launch, no user funds lost) |
| Chain | Base |
| Vulnerable contract | 0xce01759b… (Finding #2026: RealityModule) |
| Bug class | Finding #2026: RealityModule |
Root cause#
The Zodiac Reality.eth governance module allows a fully permissionless path with no safeguard against an unopposed self-answered proposal: anyone can (1) submit a governance proposal, (2) bond a yes answer to their OWN proposal, and (3) execute it once finalized. No competing no bond is required inside the challenge window, so an unopposed self-answer finalizes after the 12h timeout and executes - capturing the fund-holding Safe's authority to move ~5.12M ZKP to the attacker. No code bug and no stolen key; the missing safeguard is that the Reality.eth module was not disabled while there was no active governance proposal.
// @> VULN: anyone can bond a "yes" answer to their OWN question; there is no
Why it's exploitable here#
The Zodiac Reality.eth governance module allows a fully permissionless path with no safeguard against an unopposed self-answered proposal: anyone can (1) submit a governance proposal, (2) bond a yes answer to their OWN proposal, and (3) execute it once finalized. No competing no bond is required inside the challenge window, so an unopposed self-answer finalizes after the 12h timeout and executes - capturing the fund-holding Safe's authority to move ~5.12M ZKP to the attacker. No code bug and no stolen key; the missing safeguard is that the Reality.eth module was not disabled while there was no active governance proposal.
Attack path#
Marked-line walkthrough (Playground)#
The EVM Playground pins each step to the exact executed source line:
- L83 — Permissionless proposal: Anyone can submit a governance question to the Reality.eth / Zodiac module.
- L91 — Self-answer 'yes': The attacker bonds a 'yes' answer to their OWN proposal.
- L92 — Unopposed self-answer finalizes: Root cause: no safeguard requires a competing bond or an active proposal, so an unopposed self-answer simply finalizes after the 12h timeout.
- L95 — Execution captures the avatar: Once finalized, executeProposal runs the attacker's arbitrary call on the fund-holding Safe.
- L102 — Governance module boundary: The module is the only caller the Safe trusts - capturing it captures the funds.
- L108 — Exploit driver: The reproduction proposes, self-answers, advances past the timeout and executes.
- L113 — Setup: the fund-holding Safe: Setup: the pre-launch Safe holds the governance-controlled ZKP.
- L116 — Setup: capture accounting: Setup: the exploit tracks the ZKP it moves out of the Safe.
PoC#
Registry (Foundry, local deploy — faithful reconstruction + harm-asserting test):
cd 2026-08-PantherBase_exp
forge test -vvv
The browser Playground replays the same synthetic opcode-for-opcode and measures the
harm. Both gates are green (registry forge test PASS + Playground _verify-poc
VERDICT: PASS).
Sources#
- Basis / upstream PoC: DeFiHackLabs PR #1209 — PantherBase_exp.sol (fork replay of the on-chain tx).
- DeFiHackLabs incident collection: SunWeb3Sec/DeFiHackLabs.
Sources & further analysis#
Reproductions & code
- No executable Forge reproduction is claimed; the historical source/toolchain was unavailable for this finding.
- Upstream DeFiHackLabs PoC:
PantherBase_exp.sol.
Alerts & third-party analyses
- DeFiHackLabs incident explorer: search "Panther Protocol (Base): unopposed self-answered governance proposal captures the Safe".
- Web3Sec X hacked database: search.
- Rekt leaderboard: search.
- Solodit incident search: search.
These dashboards index community alerts tweets, post-mortems, and independent write-ups. Reach them through the protocol name above to cross-check this reproduction against other analyses.