Modifier is incorrectly implemented and does not prevent reentrancy attacks
As per the provided link in NatSpec, the correct implementation is the following:
The main difference is that we load at store at slot 0, then store 1 in it and finally revert it to 0 after transaction. But in our implementation we load from storage slot 1 but write to storage slot 0, thus our function does not prevent reentrancy.
Likelihood: Medium. Requires a malicious contract interaction (e.g., via ERC-777 hooks or a crafted recipient), which is feasible but not guaranteed in all deployments.
This attack contract is from the owner point of view to present the reentrancy attack. In reality an attacker can choose to exploit another function.
High. If exploited, reentrancy could drain funds (e.g., via sendERC20 or sendETH), a classic critical vulnerability.
Manual Review
Fix the storage slot from which we are reading:
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.