Skip to content
This repository has been archived by the owner on Nov 26, 2023. It is now read-only.

WATCHPUG - Chainlink's latestRoundData might return stale or incorrect results #855

Closed
sherlock-admin opened this issue May 24, 2023 · 0 comments
Labels
Duplicate A valid issue that is a duplicate of an issue with `Has Duplicates` label Medium A valid Medium severity issue Reward A payout will be made for this issue

Comments

@sherlock-admin
Copy link
Contributor

sherlock-admin commented May 24, 2023

WATCHPUG

medium

Chainlink's latestRoundData might return stale or incorrect results

Summary

Vulnerability Detail

On StableOracleWBTC.sol / StableOracleWETH.sol, we are using latestRoundData, but there is no check if the return value indicates stale data. This could lead to stale prices according to the Chainlink documentation:

Impact

A stale price can be used for minting USSD.

Code Snippet

https://github.com/sherlock-audit/2023-05-USSD/blob/main/ussd-contracts/contracts/oracles/StableOracleWBTC.sol#L21-L26

Tool used

Manual Review

Recommendation

Consider adding missing checks for staleness.

For example:

    function getPriceUSD() external view override returns (uint256) {
        //(uint80 roundID, int256 price, uint256 startedAt, uint256 timeStamp, uint80 answeredInRound) = priceFeed.latestRoundData();
        (, int256 price, uint256 timeStamp, , ) = priceFeed.latestRoundData();
        require(block.timestamp - timeStamp < stalenessTolerance, "stale price");
        // chainlink price data is 8 decimals for WETH/USD
        require(price > 0, "...");
        return uint256(price) * 1e10;
    }

Duplicate of #31

@github-actions github-actions bot closed this as completed Jun 5, 2023
@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 Jun 5, 2023
@sherlock-admin sherlock-admin added the Reward A payout will be made for this issue label Jun 23, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Duplicate A valid issue that is a duplicate of an issue with `Has Duplicates` label Medium A valid Medium severity issue Reward A payout will be made for this issue
Projects
None yet
Development

No branches or pull requests

1 participant