-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Labels
satisfactorysatisfies C4 submission criteria; eligible for awardssatisfies C4 submission criteria; eligible for awardssponsor confirmedSponsor agrees this is a problem and intends to fix it (OK to use w/ "disagree with severity")Sponsor agrees this is a problem and intends to fix it (OK to use w/ "disagree with severity")sponsor disputedSponsor cannot duplicate the issue, or otherwise disagrees this is an issueSponsor cannot duplicate the issue, or otherwise disagrees this is an issuevalid
Description
Lines of code
Vulnerability details
Passing block.timestamp
as the expiry/deadline of an operation does not mean "require immediate execution" - it means "whatever block this transaction appears in, I'm comfortable with that block's timestamp". Providing this value means that a malicious miner can hold the transaction for as long as they like (think the flashbots mempool for bundling transactions), which may be until they are able to cause the transaction to incur the maximum amount of slippage allowed by the slippage parameter, or until conditions become unfavorable enough that other orders, e.g. liquidations, are triggered. Timestamps should be chosen off-chain, and should be specified by the caller to avoid unnecessary MEV.
File: contracts/governance/twTAP.sol
307
308 // Mint twTAP position
309 tokenId = ++mintedTWTap;
310 _safeMint(_participant, tokenId);
311
312 uint256 expiry = block.timestamp + _duration;
313 require(expiry < type(uint56).max, "twTAP: too long");
314 // Eligibility starts NEXT week, and lasts until the week that the lock
315: // expires. This is guaranteed to be at least one week later by the
Assessed type
other
Metadata
Metadata
Assignees
Labels
satisfactorysatisfies C4 submission criteria; eligible for awardssatisfies C4 submission criteria; eligible for awardssponsor confirmedSponsor agrees this is a problem and intends to fix it (OK to use w/ "disagree with severity")Sponsor agrees this is a problem and intends to fix it (OK to use w/ "disagree with severity")sponsor disputedSponsor cannot duplicate the issue, or otherwise disagrees this is an issueSponsor cannot duplicate the issue, or otherwise disagrees this is an issuevalid