40,000 USDC
View results
Submission Details
Severity: low

`abi.encodePacked()` should not be used with dynamic types when passing the result to a hash function such as `keccak256()`

Summary

Vulnerability Details

Use abi.encode() instead which will pad items to 32 bytes, which will
prevent hash collisions
(e.g. abi.encodePacked(0x123,0x456) => 0x123456 => abi.encodePacked(0x1,0x23456),
but abi.encode(0x123,0x456) => 0x0...1230...456). "Unless there is a compelling reason,
abi.encode should be preferred". If there is only one argument to abi.encodePacked()
it can often be cast to bytes() or bytes32() instead.

There is also discussion of removing abi.encodePacked from future versions of Solidity,
so using abi.encode now will ensure compatibility in the future.

There is 1 instance of this issue:

Impact

Tools Used

Recommendations

Do not use more than one dynamic type in abi.encodePacked()
(see the Solidity documentation).
Use abi.encode(), preferably.

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.