Resonance Security reviewed Primex Finance on 7 Dec 2023: 17 findings, 1 critical; 13 marked fixed, 4 open.
Trustblock does not review code.
Statuses are the security firm’s own, from its report.
| Severity | Open | Acknowledged | Fixed |
|---|---|---|---|
| Critical | 0 | 0 | 1 |
| High | 1 | 0 | 0 |
| Medium | 2 | 0 | 4 |
| Low | 1 | 0 | 8 |
When a trader attempts to close a position, no validation is made on its health. This means that traders can close active positions at will even if the position is ready to be liquidated. While the Primex Protocol provides incentives for keepers to perform the necessary upkeep and liquidate positions that require so, traders can frontrun the keepers and deny them of their rewards.Additionally, since there is no penalty system implemented for traders that close unhealthy positions with the reason CLOSE_BY_TRADER, this yields an inherent incentive to traders to take on the maximum amount of leverage on every trade. Adding to the fact that traders receive rewards through activity on the DEX, this problem could exacerbate, and impact the supply of PMX tokens.
The majority of withdrawal functions in Bucket.sol are safeguarded by the liquidity mining period. However, the withdrawByAdminFromAave function can be executed at any time. Withdrawing all collateral from the AAVE pool may cause a temporary lock on the bucket's Aave liquidity.- [`aave-v3-core/contracts/protocol/libraries/logic/SupplyLogic.sol#L134`](https://github.com/aave/aave-v3-core/blob/v1.17.2/contracts/protocol/libraries/logic/SupplyLogic.sol)The impact of this issue has been lowered as the function can only be invoked by SMALL_TIMELOCK_ADMIN.
The Chainlink priceFeed is used in the PriceOracle.sol as a source of price for assets. However, latestRoundData() function of priceFeed returns roundId, answer, startedAt, updatedAt, asnwerInRound values but only the answer value is used in the functions. The retrieved price of the priceFeed can be outdated and used anyways as a valid data because no timestamp tolerance of the update source time is checked while storing the return parameters of latestRoundData().
The function batchBurn() does not validate whether the _amounts array contains elements with 0 amount, allowing transactions to take place and events to be emitted that do not change the state of the blockchain. This fact not only incurs unnecessary gas costs, but also fills the blockchain with unnecessary transactions,
The report names a repository or files. Open the report to see its scope.
18 projects reviewed · 25 reports · latest Aug 2025
See Resonance Security’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