DEV Community

THE CODE DOCTOR
THE CODE DOCTOR

Posted on

02.DEFI ATTACKS - Keine Verfallsfrist/Deadline

Fortgeschrittene Protokolle wie Automated Market Makers (AMMs) können es den Benutzern ermöglichen, einen Deadline-Parameter festzulegen, der eine zeitliche Begrenzung erzwingt, bis zu der die Transaktion ausgeführt werden muss. Ohne einen Deadline-Parameter kann die Transaktion im Mempool verbleiben und zu einem viel späteren Zeitpunkt ausgeführt werden, was möglicherweise zu einem schlechteren Preis für den Benutzer führt.

Protokolle sollten die Deadline nicht auf block.timestamp setzen [mehr dazu], da ein Validator die Transaktion zurückhalten kann, und der Block, in den sie schließlich aufgenommen wird, den block.timestamp enthält. Dies bietet also keinen Schutz.

Protokolle sollten Benutzern, die mit AMMs interagieren, ermöglichen, Verfallsfristen festzulegen. Ohne eine solche Frist besteht eine potenzielle kritische Anfälligkeit für Verluste, insbesondere wenn auch kein Slippage-Parameter festgelegt wurde. Untersuchen Sie diesen schwerwiegenden Fund aus Sherlocks BlueBerry Update 1-Wettbewerb.

// 2. Swap rewards tokens to debt token
uint256 rewards = _doCutRewardsFee(CRV);
_ensureApprove(CRV, address(swapRouter), rewards);
swapRouter.swapExactTokensForTokens(
    rewards,
    0, // @audit no slippage, can receive 0 output tokens
    swapPath,
    address(this),
    type(uint256).max // @audit no deadline, transaction can 
    // be executed later at more unfavorable time
);
Enter fullscreen mode Exit fullscreen mode

Hier ist „minTokensOut“ auf 0 fest codiert, sodass der Swap potenziell 0 Tokens zurückgeben kann. Der Deadline-Parameter ist auf den Maximalwert von uint256 fest codiert, sodass die Transaktion lange zurückgehalten und zu einem viel späteren und ungünstigeren Zeitpunkt für den Benutzer ausgeführt werden kann. Diese Kombination aus fehlendem Slippage- und Deadline-Parameter setzt den Benutzer dem potenziellen Verlust aller seiner eingesetzten Tokens aus!

Weitere Beispiele:
1 - The createMarket transaction lack of expiration timestamp check,
2 - [M-01] Stableswap - Deadline do not work,
3 - [M-01] Missing deadline checks allow pending transactions to be maliciously executed
4 - [M-01] Missing deadline checks allow pending transactions to be maliciously executed,
5 - [M-01] _harvest has no slippage protection when swapping auraBAL for AURA,
6 - Users are forced to swap all reward tokens with no slippage protection

Top comments (0)