Open c4-bot-4 opened 7 months ago
minhquanym marked the issue as primary issue
minhquanym marked the issue as sufficient quality report
Valid bug report, trying to fix it in this PR: https://github.com/taikoxyz/taiko-mono/pull/16611/files
dantaik (sponsor) confirmed
0xean marked the issue as satisfactory
0xean marked the issue as selected for report
Lines of code
https://github.com/code-423n4/2024-03-taiko/blob/f58384f44dbf4c6535264a472322322705133b11/packages/protocol/contracts/team/TimelockTokenPool.sol#L170
Vulnerability details
Impact
Signatures can be replayed in
withdraw()
to withdraw more tokens than the user originally intended.Vulnerability Details
In the TimelockTokenPool.sol contracts, users can provide a signature to allow someone else to withdraw all their withdrawable tokens on their behalf using their signature. TimelockTokenPool.sol#L170)
As seen from above, the signature provided does not include a nonce and this can lead to signature replay attacks. Due to the lack of a nonce, withdraw() can be called multiple times with the same signature. Therefore, if a user provides a signature to withdraw all his withdrawable tokens at one particular time, an attacker can repeatedly call withdraw() with the same signature to withdraw more tokens than the user originally intended. The vulnerability is similar to Arbitrum H-01 where user's signatures could be replayed to use up more votes than a user intended due to a lack of nonce.
Tools Used
Manual Review
Recommended Mitigation Steps
Consider using a nonce or other signature replay protection in the TimelockTokenPool contract.
Assessed type
Invalid Validation