Part 2

Zaros
PerpetualsDEXFoundrySolidity
70,000 USDC
View results
Submission Details
Severity: medium
Invalid

[M-1] Slippage-Free Order Execution Enables Keeper Exploitation at PerpsEngine

Summary

The OrderBranch executes market orders without slippage parameters, allowing keepers to sandwich users.

Vulnerability Details

Affected Code:

// OrderBranch.sol (hypothetical)
function executeOrder(Order memory order) public {
uint256 received = dex.swap(order.amount);
user.transfer(received); // No minimum check
}

Exploit Scenario:

  1. User submits order to buy 100 ETH at market price.

  2. Keeper front-runs with large ETH buy, increasing price.

  3. User receives 90 ETH instead of 100.

Impact

User Fund Loss: 10-30% per trade.

Medium Severity (CVSS 7.1).

Tools Used

Tenderly transaction simulation.

Historical price data analysis.

Recommendations

// Add slippage tolerance and deadline
function executeOrder(Order memory order, uint256 minOut, uint256 deadline) public {
require(block.timestamp <= deadline, "Expired");
uint256 received = dex.swap(order.amount);
require(received >= minOut, "Slippage exceeded");
}
Updates

Lead Judging Commences

inallhonesty Lead Judge 5 months ago
Submission Judgement Published
Invalidated
Reason: Lack of quality

Support

FAQs

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