Inverse Finance contest - saneryee's results

Rethink the way you borrow.

General Information

Platform: Code4rena

Start Date: 25/10/2022

Pot Size: $50,000 USDC

Total HM: 18

Participants: 127

Period: 5 days

Judge: 0xean

Total Solo HM: 9

Id: 175

League: ETH

Inverse Finance

Findings Distribution

Researcher Performance

Rank: 120/127

Findings: 1

Award: $0.38

🌟 Selected for report: 0

🚀 Solo Findings: 0

Lines of code

https://github.com/code-423n4/2022-10-inverse/tree/main/src/Oracle.sol#L6 https://github.com/code-423n4/2022-10-inverse/tree/main/src/Oracle.sol#L82 https://github.com/code-423n4/2022-10-inverse/tree/main/src/Oracle.sol#L116

Vulnerability details

Impact

According to Chainlink's documentation, the latestAnswer function is deprecated. This function does not error if no answer has been reached but returns 0, causing an incorrect price fed. Use the latestRoundData function to get the price instead.

Proof of Concept

interface IChainlinkFeed { function decimals() external view returns (uint8); function latestAnswer() external view returns (uint); }

Tools Used

Manual analysis

Recommend using the latestRoundData function to get the price instead. Also recommend adding checks on the return data with proper revert messages if the price is stale or the round is incomplete, for example:

(uint80 roundID, int256 price, , uint256 timeStamp, uint80 answeredInRound) = oracle.latestRoundData(); require(answeredInRound >= roundID, "..."); require(timeStamp != 0, "...");

#0 - neumoxx

2022-10-31T08:51:04Z

Duplicate of #601

#1 - c4-judge

2022-11-05T17:52:55Z

0xean marked the issue as duplicate

#2 - Simon-Busch

2022-12-05T15:25:34Z

Issue marked as satisfactory as requested by 0xean

#3 - c4-judge

2022-12-07T08:14:13Z

Simon-Busch marked the issue as duplicate of #584

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