Quantstamp reviewed Api3 (API3 - Data Feed Proxy Combinators) on 24 Jun 2025: 4 findings, 0 critical; all acknowledged, none fixed.
Report hosted on certificate.quantstamp.com.
Trustblock does not review code.
Statuses are the security firm’s own, from its report.
| Severity | Open | Acknowledged | Fixed |
|---|---|---|---|
| Critical | 0 | 0 | 0 |
| High | 0 | 0 | 0 |
| Medium | 0 | 2 | 0 |
| Low | 0 | 2 | 0 |
The `ProductApi3ReaderProxyV1` returns the product of possibly stale data feed sources. It returns `block.timestamp` as the timestamp for the new value, masking the age of the underlying data feeds. A consuming protocol utilizing this wrapper cannot apply their freshness policy to the returned price, leading to outdated prices and creating an opportunity for attackers. This could lead to protocols unintentionally accepting stale price data and attackers exploiting those protocols.
Multiple contracts perform unchecked casts from `int256` to `int224`, which can silently truncate values exceeding the `int224` range, leading to incorrect and misleading outputs. Solidity does not revert on narrowing conversions, so these casts may discard high-order bits without warning: - `ProductApi3ReaderProxyV1.read()`: Multiplies two proxy values and divides by 1e18 before casting to `int224` without checking bounds, risking overflow and silent truncation. - `NormalizedApi3ReaderProxyV1.read()`: Scales a Chainlink feed value (up or down) and casts to `int224` without verifying that the result fits within range. - `InverseApi3ReaderProxyV1.read()`: Inverts a proxy value using 1e36 divided by the feed value, then casts to `int224`, with a misleading comment implying a revert on overflow.
The `ScaledApi3FeedProxyV1` wrapper allows to downscale any data feed to a lower number of decimals. This loss of precision may result in inaccurate pricing, which can potentially be exploited by an attacker. While it is the responsibility of the integrating protocol, downscaling precision may be a risk in general.
The current implementation of price inversion carries the marginal risk of underflowing to zero. In case the data feed value becomes larger than ` 1e36`, the inverted price will incorrectly return zero, enabling various exploits for protocol utilizing the price inversion mechanism. While this is highly unlikely for data feeds like ETH/USD (ETH would have to be worth one quintillon USD), it may occur for data feeds that, e.g., involve hyper-inflated asset or exotic asset pairs.
The report names a repository or files. Open the report to see its scope.
Repository and files the report names (5)
236 projects reviewed · 332 reports · latest Oct 2026
See Quantstamp’s auditsSomething wrong on this page? A missing report, a wrong date, a finding that was fixed since. Tell us and we check it against its source.
Tell us