CertiK reviewed Kroma (Spectrum Protocol - Audit(Addendum)) on 13 May 2024: 18 findings, 0 critical; 3 marked fixed, 2 acknowledged, 13 open.
Report hosted on skynet.certik.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 | 2 | 0 |
| Medium | 1 | 0 | 1 |
| Low | 12 | 0 | 2 |
In the `stake()` and `unstake()` functions, there is no check to ensure that the asset is a supported asset. As a result, a user can stake any asset for the first time (`spTotalSupply == 0`) and receive the `spETH` token. However, if another user attempts to stake with the correct asset, the `stake()` function will revert due to a division by zero error because the contract's asset balance is zero. ```solidity =166 function _getSpectrumFromAsset( SnapGlobal memory gSnap, address asset, uint256 assetAmount ) internal view returns (uint256 spAmount) { CoreSupportAssetInfo memory assetInfo = _getSpectrumCoreStorage().assetInfos[asset]; uint256 spTotalSupply = gSnap.info.spETH.totalSupply(); if (spTotalSupply == 0) return assetAmount; spAmount = (spTotalSupply * _switchAssetEval(assetInfo.id)(assetInfo.assetEvaluator, assetAmount)) / gSnap.spSnap.evalValue; } ```
The function `updateCoreSupportAsset()` updates asset info, but there is no check to ensure the asset exists. Therefore, if the asset does not exist, it is not added to the `supportAssets`, leading to inconsistency.
The contract `SpectrumCoreEntry` has a `receive()` function to receive ETH, but there is no function to withdraw them. Thus, every ETH sent to the contract will be lost.
The report names a repository or files. Open the report to see its scope.
Repository and files the report names (41)
1,044 projects reviewed · 1,375 reports · latest May 2025
See CertiK’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