DeFiFoundry
60,000 USDC
View results
Submission Details
Severity: medium
Invalid

`SettlementConfiguration.requireDataStreamsReportIsValid` does not check `ask` and `bid` values.

Summary

SettlementConfiguration.requireDataStreamsReportIsValid does not check ask and bid values.

Vulnerability Details

requireDataStreamsReportIsValid
does not check ask and bid values. They are int192, so must be checked if they are positive and ask is greater than bid.

if (
streamId != premiumReport.feedId
|| block.timestamp > premiumReport.validFromTimestamp + maxVerificationDelay
) {
revert Errors.InvalidDataStreamReport(streamId, premiumReport.feedId);
}

Impact

Invalid premiumReport.ask or bid can be used as a mark price and cause wrong profit/loss to users.

Tools Used

Manual

Recommendations

Update as below.

if (
streamId != premiumReport.feedId
|| block.timestamp > premiumReport.validFromTimestamp + maxVerificationDelay
+ || premiumReport.ask <= 0 || premiumReport.bid <= 0 || premiumReport.ask < premiumReport.bid
) {
revert Errors.InvalidDataStreamReport(streamId, premiumReport.feedId);
}

https://github.com/Cyfrin/2024-07-zaros/blob/7439d79e627286ade431d4ea02805715e46ccf42/src/perpetuals/leaves/SettlementConfiguration.sol#L97-L103

Updates

Lead Judging Commences

inallhonesty Lead Judge about 1 year ago
Submission Judgement Published
Invalidated
Reason: Non-acceptable severity

Support

FAQs

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