Skip to content
This repository has been archived by the owner on Feb 18, 2024. It is now read-only.

kaysoft - Chainlink Oracle Price freshness not checked. #156

Closed
sherlock-admin opened this issue Aug 15, 2023 · 1 comment
Closed

kaysoft - Chainlink Oracle Price freshness not checked. #156

sherlock-admin opened this issue Aug 15, 2023 · 1 comment
Labels
Non-Reward This issue will not receive a payout

Comments

@sherlock-admin
Copy link
Contributor

sherlock-admin commented Aug 15, 2023

kaysoft

medium

Chainlink Oracle Price freshness not checked.

Summary

Price freshness from the chainlink oracle not validated

Vulnerability Detail

Price freshness from the chainlink oracle not validated

Impact

Loss of due to use of stale price from oracle

Code Snippet

https://github.com/sherlock-audit/2023-07-perennial/blob/main/root/contracts/attribute/Kept.sol#L62

/// @notice Returns the price of ETH in terms of the keeper token
    /// @return The price of ETH in terms of the keeper token
    function _etherPrice() private view returns (UFixed18) {
        (, int256 answer, , ,) = ethTokenOracleFeed().latestRoundData();//@audit oracle freshness.
        return UFixed18Lib.from(Fixed18Lib.ratio(answer, 1e8)); // chainlink eth-usd feed uses 8 decimals
    }

Tool used

Manual Review

Recommendation

Validate the freshness of the price from the oracle.

/// @notice Returns the price of ETH in terms of the keeper token
    /// @return The price of ETH in terms of the keeper token
    function _etherPrice() private view returns (UFixed18) {
        (uint80 roundID, int256 answer, ,uint256 updatedAt ,uint80 answeredInRound) = ethTokenOracleFeed().latestRoundData();//@audit oracle freshness.
++      require(block.timestamp <= updatedAt + stalePriceDelay, "Stale price");
++    require(answeredInRound >= roundID, "Stale price");
        return UFixed18Lib.from(Fixed18Lib.ratio(answer, 1e8)); // chainlink eth-usd feed uses 8 decimals
    }

Duplicate of #159

@github-actions github-actions bot added Medium A valid Medium severity issue Duplicate A valid issue that is a duplicate of an issue with `Has Duplicates` label labels Aug 18, 2023
@sherlock-admin
Copy link
Contributor Author

2 comment(s) were left on this issue during the judging contest.

141345 commented:

d

n33k commented:

unhandled stale price returned from latestRoundData()

@sherlock-admin2 sherlock-admin2 changed the title Colossal Lead Blackbird - Chainlink Oracle Price freshness not checked. kaysoft - Chainlink Oracle Price freshness not checked. Aug 23, 2023
@sherlock-admin2 sherlock-admin2 added Non-Reward This issue will not receive a payout and removed Medium A valid Medium severity issue Duplicate A valid issue that is a duplicate of an issue with `Has Duplicates` label labels Aug 23, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Non-Reward This issue will not receive a payout
Projects
None yet
Development

No branches or pull requests

2 participants