CertiK reviewed LIQ Finance on 1 Dec 2022: 6 findings, 1 critical; 5 marked fixed, 1 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 | 1 |
| High | 1 | 0 | 0 |
| Medium | 0 | 0 | 0 |
| Low | 0 | 0 | 4 |
The `LCakeVaultFactory.sol` mint NFTs as the certificate of deposits. But the function `burn()` in the aforementioned line can be called by anyone as it has no access restriction. This enables anyone to call this function to burn users' certificates. ```solidity=37 function burn(uint256 tokenId) public { _burn(tokenId); } ``` **Attack scenario**\ An attacker can call this function to burn all NFT certificates, thus causing the user to lose all funds in the contract `LCakeVaultImpl`.
For upgradeable contracts, there must be storage gap to "allow developers to freely add new state variables in the future without compromising the storage compatibility with existing deployments". Otherwise it may be very difficult to write new implementation code. Without storage gap, the variable in **child contract** might be overwritten by the upgraded base contract if new variables are added to the base contract. Refer to https://docs.openzeppelin.com/upgrades-plugins/1.x/writing-upgradeable
The **require** can be used to check for conditions and throw an exception if the condition is not met. It is better to provide a string message containing details about the error that will be passed back to the caller. ```solidity=23 modifier whenNotPaused { require(paused == false); _; } ```
The function doesn't verify if the supplied `baseURI` is a valid IPFS location.
It's recommended the team verify the UUPS implementation contract is initialized correctly. Besides initializing the contract, another way to prevent the implementation contract from being used is to invoke the "initializer" modifier in the constructor to automatically initialize it when it is deployed. For more information, please refer to: https://docs.openzeppelin.com/upgrades-plugins/1.x/writing-upgradeable#initializing_the_implementation_contract
The report names a repository or files. Open the report to see its scope.
Repository and files the report names (5)
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