Even if the function follows the best practice of check-effects-interaction, not using a reentrancy guard when there may be transfer hooks will open the users of this protocol up to read-only reentrancies with no way to protect against it, except by block-listing the whole protocol.
https://github.com/Cyfrin/2023-09-ditto/blob/main/contracts/facets/ERC721Facet.sol#L162
state change after the call
The impact of not using a reentrancy guard in this context can be significant. It exposes users of this protocol to potential read-only reentrancy attacks without an easy way to protect against them, aside from block-listing the entire protocol. Read-only reentrancy attacks can lead to unauthorized access to contract state and potentially allow malicious actors to exploit vulnerabilities for malicious purposes.
Manual Revew
Add nonreentrancy modifier of OZ or solmate
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.