_deployFunds
function calls transmuter.deposit
, which is an external function. Without proper precautions, this can open the function to a read-only reentrancy attack, where the state could be manipulated in an unexpected way before the external call completes.https://github.com/Cyfrin/2024-12-alchemix/blob/main/src/StrategyMainnet.sol#L80
Suppose a function (_deployFunds
) calls an external contract like transmuter.deposit
.
If transmuter.deposit
allows a callback to another function in this contract, the attacker can call a view function balanceDeployed
before _deployFunds
completes its state changes.
Manual
Use a nonReentrant
modifier to prevent reentrancy attacks.
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.