Payouts
Top 10
Top 25
Top 50
All
Sherlock
Code4rena
CodeHawks
Aug '24
high
Malicious actors can manipulate the `cross_chain_callback` callback
high
There is no refund mechanism in `ChakraSettlement.processCrossChainCallback` or `ChakraSettlementHandler.receive_cross_chain_callback` function
high
`ChakraSettlement.receive_cross_chain_msg` and `ChakraSettlement.receive_cross_chain_callback` functions do not ensure that receiving `ChakraSettlement` contract's `contract_chain_name` must match `to_chain` corresponding to respective `txid` input though
high
Inconsistent Handler Validation Behavior in Cairo ERC20Handler's Cross-Chain Callback
high
Anyone can manipulate user nonce (nonce_manager) in settlement contract
high
In settlement.cairo::receive_cross_chain_msg - the message will always be marked with Status::SUCCESS
high
SettlementSignatureVerifier is missing check for duplicate validator signatures
high
In Starknet already processed messages can be re-submitted and by anyone
high
Invalid token address used in `ChakraSettlementHandler::cross_chain_erc20_settlement(...)` leading to invalid transaction creation and event emission
high
handler's `receive_cross_chain_callback()` will always set the tx_status to `SETTLED` on source chain & burn the tokens (MintBurn Mode) even when the msg fails on destination
medium
A cross-chain message can be initiated with invalid parameters
medium
inconsistency in sender address when creating cross chain messages on Starknet can lead to loss of funds
medium
Does not check if to_chain and to_handler is whitelisted in cross_chain_erc20_settlement
medium
Excessive Authority Granted to Managers in the `ckr_btc.cairo` Contract Presents Significant Management Risks
medium
SettlementSignatureVerifier's required_validators is not updated, resulting in a low or high number of signatures being required
high
Position's owed fees should allow underflow but it reverts instead, resulting in locked funds
high
Missing `lower<upper` check in `mint_position`
high
Unrevoked approvals allow NFT recovery by previous owner
high
`get_fee_growth_inside` in `tick.rs` should allow for `underflow`/`overflow` but doesn't
medium
_onTransferReceived() does not work as intended
Jul '24
high
The Bridging Process will revert if the Collection is matched on the destination chain and not matched on the source chain
high
Infinite loop breaks whitelist removal funtionality on L2
medium
Starknet tokens deposited with use_withdraw_auto can never be withdrawn
medium
There is No `msg.value` check in `depositTokens`, causing potential token stuck
low
Upon the transfer of an escrowed NFT from the bridge to the user on StarkNet, the escrow status remains unaltered, failing to be reset
low
Incorrect function signatures in `_callBaseUri` break `baseURI` functionality
low
_disableInitializers is missing in Bridge’s constructor
high
Inadequate Checking of `isIncreasing` when trader adjusts position size
high
Positive PnL is lost for all parties when liquidating an account, potentially causing that the MarginCollateralRecipient ends up receiving way less USD value than what it could have received.
high
`SettlementBranch._fillOrder` does not guarantee the collateral of a position is enough to pay the future liquidation fee.
high
Incorrect logic for checking isFillPriceValid
high
Market Disruption and Financial Loss Post-Liquidation
medium
Insufficient checks to confirm the correct status of the sequencerUptimeFeed
medium
A malicious User can DOS all offchain orders making them unexecutable and leaving the protocol in an insolvent state. Also all offchain Trades can also be DOSed for honest parties that do not meet the fillorder requirements (no try and catch)
low
QA Report - 0xStalin - Low Severities
low
Offchain orders are not cancelled after the account has been liquidated
low
Functions calling `verifyReport` to verify offchain prices from chainlink will fail
low
Liquidation of accounts collateral not posible because some chainlink price feed doesn't exist or are marked as medium risk by chainlink
low
Attacker can abuse the system by modifying the collateral of pending orders
low
Updating the maxFundingVelocity should update the funding rate as well
low
Deleting CollateralTypes from the CollateralLiquidationPriority allows traders to be liquidated for free and getting back their full collateral as if they were not liquidated.
Jun '24
May '24
Apr '24
high
Incorrect withdraw queue balance in TVL calculation
high
Withdrawals of rebasing tokens can lead to insolvency and unfair distribution of protocol reserves
high
Withdrawals logic allows MEV exploits of TVL changes and zero-slippage zero-fee swaps
high
Incorrect calculation of queued withdrawals can deflate TVL and increase ezETH mint rate
medium
stETH/ETH Feed being used opens up to 2 way deposit<->withdrawal arbitrage
medium
Deposits will always revert if the amount being deposited is less than the bufferToFill value
medium
Lack of slippage and deadline during withdraw and deposit
high
`BalancerConnector::_getPositionTVL` is calculated incorrectly
high
`executeWithdraw` may be blocked if any of the users are blacklisted from the `baseToken`
high
`_getPositionTVL` of `UNIv3Connector` wrongly assumes ownership of all liquidity of the provided ticks inside `positionManager`.
medium
Base tokens accumulated from withdraw fees can't be transferred to/from the NoyaFeeReceiver and will remain stuck
medium
`Keepers` does not implement EIP712 correctly on multiple occasions
medium
Lack of Slippage Controls in retrieveTokensForWithdraw Function
medium
Balancer flashloan contract can be DOSed completely by sending 1 wei to it
medium
Camelot and Aerodrome Connector TVL susceptible to manipulation attack
high
Attacker can make 0 value deposit() calls to deny user from redeeming or withdrawing collateral
high
Design flaw and mismanagement in vault licensing leads to double counting in collateral ratios and positions collateralized entirely with kerosine
high
Kerosene collateral is not being moved on liquidation, exposing liquidators to loss
high
Unable to withdraw Kerosene from `vaultmanagerv2::withdraw` as it expects a `vault.oracle()` method which is missing in Kerosene vaults
medium
`VaultManagerV2.sol::burnDyad` function is missing an `isDNftOwner` modifier, allowing a user to burn another user's minted DYAD
medium
Attacker can frontrun to prevent vaults from being removed from the dNFT owner's position
medium
No incentive to liquidate small positions could result in protocol going underwater
medium
Incorrect deployment / missing contract will break functionality
medium
setUnboundedKerosineVault not called during deployment, causing reverts when querying for Kerosene value after adding it as a Kerosene vault
medium
No incentive to liquidate when CR <= 1 as asset received < dyad burned
medium
Liquidation bonus logic is wrong
Mar '24
Feb '24
Jan '24
Dec '23
Nov '23
Oct '23
Sep '23
Aug '23
Jul '23
high
Tokens with less than 18 decimals allow for draining of funds
high
Lender contract can be drained by re-entrancy in `repay`
high
Lender contract can be drained by re-entrancy in `setPool`
high
Sandwich attack to steal all ERC-20 tokens in the Fees contract
low
Zero address leads to transaction reverts
low
Lender fails to giveLoan because of inconsistent length between `loadIds` and `poolIds`
low
Missing Events Emitting
gas
`Staked` struct is created but never used
gas
Move the Duplicate Checks into a Modifier
gas
User can steal reward tokens if the Staking contract uses tokens with different decimals
gas
Inconsistent formatting across all the contracts
42.36 USDC • 6 total findings • CodeHawks • SBSecurity
#48
high
Theft of collateral tokens with fewer than 18 decimals
medium
Chainlink oracle will return the wrong price if the aggregator hits `minAnswer`
medium
All of the USD pair price feeds doesn't have 8 decimals
low
Zero address check for tokens
gas
Remove unused variables in `OracleLib`
gas
Use constants instead of `type(uint256).max`