DittoETH

Ditto
DeFiFoundryOracle
55,000 USDC
View results
Submission Details
Severity: high
Invalid

Authorization Bypass on Withdrawals

Summary

Anyone can withdraw funds from bridges by calling withdraw and unstakeEth.

Vulnerability Details

withdraw and unstakeEth do not check for any form of authorization. Any address can withdraw funds from a bridge.

For example:

function withdraw(address bridge, uint88 amount) external {
// No auth check
IBridge(bridge).withdraw(msg.sender, amount);
}

Impact

Attackers could drain bridge funds.

Tools Used

Manual

Recommendations

Add an access control check in withdraw and unstakeEth to restrict access.

For example:

modifier onlyAllowed() {
require(isAuthorized[msg.sender], "Not allowed");
_;
}
function withdraw(
address bridge,
uint88 amount
) external onlyAllowed() {
// ...
}
Updates

Lead Judging Commences

0xnevi Lead Judge
almost 2 years ago
0xnevi Lead Judge almost 2 years ago
Submission Judgement Published
Invalidated
Reason: Other

Support

FAQs

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