ParaSpace (Audit #3)

CertiKFiles named in the report

CertiK reviewed ParaSpace Lending V1 (ParaSpace (Audit #3)) on 23 Dec 2022: 15 findings, 0 critical; 4 marked fixed, 1 acknowledged, 10 open.

No open critical findings
Open the reportOpen ParaSpace Lending V1’s security record

Report hosted on skynet.certik.com.

Trustblock does not review code.

Findings15

Statuses are the security firm’s own, from its report.

SeverityOpenAcknowledgedFixed
Critical000
High011
Medium001
Low1002
HighCentralization Related RisksAcknowledged

In the contract `ACLManager`, the role `DEFAULT_ADMIN_ROLE` has authority over the following functions: - function setRoleAdmin(), to set the role as admin of a specific role. Any compromise to the `DEFAULT_ADMIN_ROLE` account may allow a hacker to take advantage of this authority. In the contract `PoolAddressesProvider`, the role `Owner` has authority over the following functions: - function setMarketId(), to associate an id with a specific PoolAddressesProvider. - function setAddress(), to set an address for an id replacing the address saved in the addresses map. - function setAddressAsProxy(), to update the implementation of a proxy registered with a certain `id`. If there is no proxy registered, it will instantiate one and set as implementation the `newImplementationAddress`. - function setPoolImpl(), to update the implementation of the Pool or creates a proxy setting for the new `pool` implementation when the function is called for the first time. - function setPriceOracle(), to update the address of the price oracle. - function setACLManager(), to update the address of the ACL manager. - function setACLAdmin(), to update the address of the ACL admin. - function setPriceOracleSentinel(), to update the address of the price oracle sentinel. - function setPoolDataProvider(), to update the address of the data provider. - function setWETH(), to update the address of the WETH. - function setMarketplace(), to update the info of the marketplace. Any compromise to the `Owner` account may allow a hacker to take advantage of this authority. In the contract `PoolAddressesProviderRegistry`, the role `Owner` has authority over the following functions: - function registerAddressesProvider(), to register an addresses provider. - function unregisterAddressesProvider(), to remove an addresses provider from the list of registered addresses providers. Any compromise to the `Owner` account may allow a hacker to take advantage of this authority. In the contract `PoolConfigurator`, the role `onlyPoolAdmin` has authority over the following functions: - function dropReserve(), to drop a reserve entirely. - function updatePToken(), to update the PToken implementation for the reserve. - function updateStableDebtToken(), to update the stable debt token implementation for the reserve. - function updateVariableDebtToken(), to update the variable debt token implementation for the asset. - function setReserveActive(), to activate or deactivate a reserve. Any compromise to the `onlyPoolAdmin` account may allow a hacker to take advantage of this authority. In the contract `PoolConfigurator`, the role `onlyRiskOrPoolAdmins` has authority over the following functions: - function setReserveBorrowing(), to configure borrowing on a reserve. - function configureReserveAsCollateral(), to configure the reserve collateralization parameters. - function configureReserveAsAuctionCollateral(), to configure the reserve collateralization parameters. - function setReserveStableRateBorrowing(), to enable or disable stable rate borrowing on a reserve. - function setReserveFreeze(), to freeze or unfreeze a reserve. A frozen reserve doesn't allow any new supply, borrow, or rate swap but allows repayments, liquidations, rate rebalances, and withdrawals. - function setReserveFactor(), to update the reserve factor of a reserve. - function setSiloedBorrowing(), to set siloed borrowing for an asset. - function setBorrowCap(), to update the borrowing cap of a reserve. - function setSupplyCap(), to update the supply cap of a reserve. - function setLiquidationProtocolFee(), to update the liquidation protocol fee of the reserve. - function setReserveInterestRateStrategyAddress(), to set the interest rate strategy of a reserve. Any compromise to the `onlyRiskOrPoolAdmins` account may allow a hacker to take advantage of this authority. In the contract `PoolConfigurator`, the role `onlyEmergencyOrPoolAdmin` has authority over the following functions: - function setReservePause(), to pause a reserve. A paused reserve does not allow any interaction (supply, borrow, repay, * swap interest rate, liquidate, NToken/PToken transfers). Any compromise to the `onlyEmergencyOrPoolAdmin` account may allow a hacker to take advantage of this authority. In the contract `PoolConfigurator`, the role `onlyEmergencyAdmin` has authority over the following functions: - function setPoolPause(), to pause or unpause all the protocol reserves. In the paused state all the protocol interactions are suspended. Any compromise to the `onlyEmergencyAdmin` account may allow a hacker to take advantage of this authority. In the contract `PoolConfigurator`, the role `onlyAssetListingOrPoolAdmins` has authority over the following functions: - function initReserves(), to initialize multiple reserves. Any compromise to the `onlyAssetListingOrPoolAdmins` account may allow a hacker to take advantage of this authority. In the contract `PoolParameters`, th

Contracts in scope

No deployed address is recorded for this audit.

The report names a repository or files. Open the report to see its scope.

Repository and files the report names (45)

  • contracts/protocol/pool/PoolMarketplace.sol
  • contracts/protocol/tokenization/NTokenApeStaking.sol
  • contracts/protocol/libraries/logic/SupplyLogic.sol
  • contracts/protocol/tokenization/NTokenBAYC.sol
  • contracts/protocol/tokenization/NToken.sol
  • contracts/protocol/libraries/logic/PoolLogic.sol
  • contracts/protocol/libraries/configuration/UserConfiguration.sol
  • contracts/protocol/tokenization/NTokenUniswapV3.sol
  • contracts/misc/NFTFloorOracle.sol
  • contracts/misc/ProtocolDataProvider.sol
  • contracts/protocol/libraries/logic/ValidationLogic.sol
  • contracts/protocol/pool/PoolApeStaking.sol
  • contracts/protocol/tokenization/NTokenMoonBirds.sol
  • contracts/protocol/pool/PoolConfigurator.sol
  • contracts/misc/marketplaces/LooksRareAdapter.sol
  • contracts/protocol/pool/PoolCore.sol
  • contracts/protocol/pool/PoolParameters.sol
  • contracts/protocol/configuration/PoolAddressesProvider.sol
  • contracts/ui/WETHGateway.sol
  • contracts/ui/WPunkGateway.sol
  • contracts/protocol/pool/DefaultReserveInterestRateStrategy.sol
  • contracts/misc/flashclaim/AirdropFlashClaimReceiver.sol
  • contracts/protocol/tokenization/libraries/MintableERC721Logic.sol
  • contracts/misc/marketplaces/SeaportAdapter.sol
  • contracts/protocol/configuration/ACLManager.sol
  • contracts/protocol/libraries/logic/AuctionLogic.sol
  • contracts/protocol/libraries/logic/ConfiguratorLogic.sol
  • contracts/protocol/pool/PoolStorage.sol
  • contracts/protocol/tokenization/libraries/ApeStakingLogic.sol
  • contracts/protocol/libraries/logic/LiquidationLogic.sol
  • contracts/misc/flashclaim/UserFlashclaimRegistry.sol
  • contracts/protocol/libraries/configuration/ReserveConfiguration.sol
  • contracts/misc/marketplaces/X2Y2Adapter.sol
  • contracts/protocol/libraries/logic/ReserveLogic.sol
  • contracts/protocol/libraries/logic/BorrowLogic.sol
  • contracts/misc/ERC721OracleWrapper.sol
  • contracts/misc/UniswapV3OracleWrapper.sol
  • contracts/protocol/configuration/PoolAddressesProviderRegistry.sol
  • contracts/protocol/tokenization/base/MintableIncentivizedERC721.sol
  • contracts/protocol/libraries/logic/FlashClaimLogic.sol
  • contracts/protocol/libraries/logic/GenericLogic.sol
  • contracts/protocol/libraries/logic/MarketplaceLogic.sol
  • contracts/protocol/pool/DefaultReserveAuctionStrategy.sol
  • contracts/misc/ParaSpaceOracle.sol
  • contracts/protocol/tokenization/NTokenMAYC.sol

Part of ParaSpace Lending V1’s security record

ParaSpace Lending V1
Audits2 audits by 1 firmLast audit Dec 2022, by CertiK.
Critical findingsNo open critical findingsAcross the 2 reports, 2 critical findings were reported. Each is marked fixed by the firm that reported it.
Open ParaSpace Lending V1’s security record

Security firm

CertiK

1,044 projects reviewed · 1,375 reports · latest May 2025

See CertiK’s audits

Something 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