Introduction:
Custom error handling was introduced in Solidity version 0.8.4, allowing developers to showcase different error events. However, a vulnerability has been identified in the handling of free memory pointers in the mulWad
and mulWadUp
functions.
Error Event:
Consider the following error event declaration in Solidity:
This error event is used in the code to revert a transaction with an Unauthorized
error:
The equivalent Yul code for this operation is as follows:
The vulnerability lies in the direct manipulation of memory offset 0x40 without first loading the free memory pointer. This could lead to unpredictable behavior and memory corruption issues.
The impact of this vulnerability includes potential memory corruption and unexpected behavior during the execution of the mulWad
and mulWadUp
functions. An attacker could potentially exploit this vulnerability to compromise the integrity of the contract.
Manual Review
Always load the free memory pointer (freeMemPtr) before manipulating memory at the offset 0x40. This ensures proper handling of memory allocation and prevents unintended consequences.
mulWad
It should be modified in mulWadUp
as well.
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.