ModuleManager#fallback()
is not correctly implemented since it doesn't take the payable
key word to factor.
Take a look at https://github.com/Cyfrin/2024-07-biconomy/blob/9590f25cd63f7ad2c54feb618036984774f3879d/contracts/base/ModuleManager.sol#L72-L110
This is the fallback function and it's used to manage incoming calls using designated handlers based on the call type.
Issue however is that in both call types, the msg.value received/attached is never taken into account when making the calls, which then causes for the functionality to not be able to correctly function when there is a msg.value
attached.
Core functionality is broken, considering the functionality is expected to have msg.value attached but in it's execution of both types this msg.value is not queried/used which breaks the functionality.
Manual review
Since the fallback is marked as payable
consider attaching this msg.value to the call types.
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.