Reproduced Exploit
Statusl: A griefing SLASHER_ROLE holder spams slashCommit(victim
Chain
Other
Category
untagged
Date
Jan 1970
Source
AuditVault
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. Reproduction of a public audit finding curated by AuditVault — the original finding: 65327-any-slasher-can-increase-another-ones-reveal-delays-cyfrin-n. The historical source/toolchain is unavailable; this entry is documentation only and claims no executable Forge PoC.
Vulnerability classes: vuln/unfair-mint · vuln/reward-accounting
Reproduction: a faithful minimal reproduction of the vulnerable finding — the vulnerable function is reproduced verbatim (marked
@>) with faithful minimal doubles; local deploy, no fork.
Root cause#
A griefing SLASHER_ROLE holder spams slashCommit(victim, arbitraryHash) to inflate the shared lastRevealStartTime[victim], pushing the honest slasher's real slashReveal 24*3600s (1 day) into the future so it reverts RLN__RevealWindowNotStarted, denying the honest slasher their 1000-KARMA slash reward for an attacker-chosen duration.
}
slashCommitments[account][hash] = revealStartTime;
lastRevealStartTime[account] = revealStartTime; // @> shared per-account queue write, NOT keyed by msg.sender: ANY slasher's commit inflates the reveal time the honest slasher later inherits
}
Why it's exploitable here#
A griefing SLASHER_ROLE holder spams slashCommit(victim, arbitraryHash) to inflate the shared lastRevealStartTime[victim], pushing the honest slasher's real slashReveal 24*3600s (1 day) into the future so it reverts RLN__RevealWindowNotStarted, denying the honest slasher their 1000-KARMA slash reward for an attacker-chosen duration.
Attack path#
Marked-line walkthrough (Playground)#
The EVM Playground pins each step to the exact executed source line in 0xcc0e8eedd7…:
- L137 — Reveal window duration: Setup:
slashRevealWindowTimeis the delay added before each reveal may begin. - L157 — Grant slasher role: Setup: grants
SLASHER_ROLEto an account. - L162 — Register member commitment: Setup: registers a member's identity commitment into the tree.
- L171 — Read shared last-reveal time: Reads the victim's
lastRevealStartTime— one shared per-account slot that every slasher writes. - L177 — Stack delay onto previous: Computes the new reveal time as
lastReveal + slashRevealWindowTime, stacking on top of the prior commit. - L181 — Commit overwrites shared delay: Root cause: each commit overwrites the shared
lastRevealStartTime[account], so spam commits keep pushing an honest slasher's reveal further out, DoSing their reward. - L187 — Read stored commitment time: Setup: reads back the stored
revealStartTimefor an account+hash during reveal.
PoC#
Registry (Foundry, local deploy — verbatim vulnerable source + harm-asserting test + negative control):
cd 65327-any-slasher-can-increase-another-ones-reveal-delays-cyfrin-n_exp
forge test -vvv
The browser Playground replays the same synthetic opcode-for-opcode and measures the harm: A griefing SLASHER_ROLE holder spams slashCommit(victim, arbitraryHash) to inflate the shared lastRevealStartTime[victim], pushing the hones. Both gates are green (registry forge test PASS + Playground _verify-poc VERDICT: PASS).
Sources & further analysis#
Reproductions & code
- No executable Forge reproduction is claimed; the historical source/toolchain was unavailable for this finding.
- AuditVault finding: 65327-any-slasher-can-increase-another-ones-reveal-delays-cyfrin-n.
- Upstream DeFiHackLabs PoC directory: src/test.
Alerts & third-party analyses
- DeFiHackLabs incident explorer: [search "Statusl: A griefing SLASHER_ROLE holder spams slashCommit(victim"](https://defihacklabs.io/explorer/index.html?q=Statusl%3A%20A%20griefing%20SLASHER_ROLE%20holder%20spams%20slashCommit(victim).
- Web3Sec X hacked database: search.
- Rekt leaderboard: [search](https://rekt.news/?s=Statusl%3A%20A%20griefing%20SLASHER_ROLE%20holder%20spams%20slashCommit(victim).
- Solodit incident search: [search](https://solodit.xyz/issues?search=Statusl%3A%20A%20griefing%20SLASHER_ROLE%20holder%20spams%20slashCommit(victim).
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.