The NonReentrant
modifier in InheritanceManager.sol
attempts to use transient storage to prevent reentrancy, but it is not implemented correctly causing the modifier to be useless.
The first noted line checks that the value at key "1" is false before calling tstore
but tstore
stores a value at key "0" instead. Meaning that tload(1)
would always return false even when the call is reentrant, allowing the call to proceed.
POC
Add the following test into the InheritanceManagerTest.t.sol
The nonreentrant modifier is useless, allowing reentrant calls into sensitive functions
manual review, foundry
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.