Closed code423n4 closed 1 year ago
Contested; the function cannot be called directly, and the suggestion is QA
Similar to #27 where there is insufficient proof of condition violation. If indeed it was violated somewhere, the burden of proof falls on the warden to show it.
I get that it can happen, but did it anywhere in the codebase?
HickupHH3 marked the issue as unsatisfactory: Insufficient proof
Lines of code
https://github.com/ProjectOpenSea/seaport/blob/5de7302bc773d9821ba4759e47fc981680911ea0/contracts/lib/Verifiers.sol#L45-L50
Vulnerability details
Impact
An attacker can potentially use the assembly code to manipulate the contract's state in unexpected ways, which can lead to unauthorized access or control over the contract's functionality or data. The assembly code may contain a bug that allows an attacker to bypass the intended time-based restrictions, allowing them to execute actions that should be prohibited by the contract.
Proof of Concept
Call the function
_verifyTime
with astartTime
andendTime
that are in the future and an attacker's address as themsg.sender
.An attacker can use the following code to exploit the vulnerability by calling the
_verifyTime
function with a manipulated timestamp andmsg.sender
.Tools Used
Manual audit.
Recommended Mitigation Steps
Replace the assembly code with equivalent Solidity code, if possible. This will make the code more readable and easier to audit, which will make it less likely for vulnerabilities to be missed.
Here's an example of how the
_verifyTime
function could be rewritten in Solidity to replace the assembly code.