Decent - Timenov's results

Decent enables one-click transactions using any token across chains.

General Information

Platform: Code4rena

Start Date: 19/01/2024

Pot Size: $36,500 USDC

Total HM: 9

Participants: 113

Period: 3 days

Judge: 0xsomeone

Id: 322

League: ETH

Decent

Findings Distribution

Researcher Performance

Rank: 79/113

Findings: 1

Award: $0.12

🌟 Selected for report: 0

🚀 Solo Findings: 0

Lines of code

https://github.com/decentxyz/decent-bridge/blob/7f90fd4489551b69c20d11eeecb17a3f564afb18/src/DcntEth.sol#L20-L22

Vulnerability details

Impact

There is no access modifier in DcntEth::setRouter. Therefore anyone can call this function and change the router. This will bypass the modifier onlyRouter when mint() and burn() are called.

Proof of Concept

In this PoC, I will show how the attack can happen:

  1. Create folder audit in the test folder.

  2. Create file called DcntEthTest.t.sol.

  3. Copy from this Gist and paste into the file.

  4. Run forge test --match-test test_change_router in the terminal.

  5. Test passes:

[PASS] test_change_router() (gas: 40988)

Tools Used

Manual Review, Foundry

Add onlyOwner modifier to setRouter function:

-    function setRouter(address _router) public {
+    function setRouter(address _router) public onlyOwner {
         router = _router;
     }

Assessed type

Access Control

#0 - c4-pre-sort

2024-01-24T04:11:29Z

raymondfam marked the issue as sufficient quality report

#1 - c4-pre-sort

2024-01-24T04:11:36Z

raymondfam marked the issue as duplicate of #14

#2 - c4-judge

2024-02-03T13:26:08Z

alex-ppg marked the issue as satisfactory

AuditHub

A portfolio for auditors, a security profile for protocols, a hub for web3 security.

Built bymalatrax © 2024

Auditors

Browse

Contests

Browse

Get in touch

ContactTwitter