https://sherlock-files.ams3.digitaloceanspaces.com/profile_images/defaults/default_avatar_4.png

SBSecurity

Security Researcher

Contact Me

High

45

Total

Medium

46

Total

$28.62K

Total Earnings

#303 All Time

31x

Payouts

regular

11x

Top 10

regular

23x

Top 25

regular

29x

Top 50

All

Sherlock

Code4rena

CodeHawks

Mar '25

StarkWare Perps

StarkWare Perps

3,822.21 USDC • Code4rena • SBSecurity

#7

Jan '25

Next Generation

Next Generation

227.2 USDC • 2 total findings • Code4rena • SBSecurity

#8

high

Cross-Chain Signature Replay Attack Due to User-Supplied `domainSeparator` and Missing Deadline Check

medium

Lack of deadline check in forwarded request

Aug '24

Chakra

Chakra

1,810.21 USDT • 15 total findings • Code4rena • SBSecurity

#6

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

Superposition

Superposition

1,645.72 USDC • 5 total findings • Code4rena • SBSecurity

#11

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

ArkProject: NFT Bridge

ArkProject: NFT Bridge

634.23 USDC • 7 total findings • CodeHawks • SBSecurity

#15

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

Zaros Part 1

Zaros Part 1

3,804.73 USDC • 14 total findings • CodeHawks • SBSecurity

#6

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.

MakerDAO Endgame

MakerDAO Endgame

65.79 USDC • Sherlock • SBSecurity

#106

TempleGold

TempleGold

150.50 USDC • 2 total findings • CodeHawks • SBSecurity

#19

high

Incompatibility with Multisig Wallets in `TempleGold::send` Function

low

Malicious user can prevent `rewardData.perodfinish` from ending by calling `TempleGoldStaking::distributeRewards()` before the end of the reward duration when no starter is set.

Jun '24

eBTC Zap Router

eBTC Zap Router

1,912.82 USDC • 1 total finding • Code4rena • SBSecurity

#5

medium

Incorrect Comparison Logic in Post-Operation Checks

May '24

Olas

Olas

164.65 USDC • 1 total finding • Code4rena • SBSecurity

#13

medium

The `refundAccount` is erroneously set to `msg.sender` instead of `tx.origin` when `refundAccount` specified as `address(0)`

Predy

Predy

19.2 USDC • 2 total findings • Code4rena • SBSecurity

#30

medium

incorrect price for negative ticks due to lack of rounding down

medium

Vaults can become immune from liquidation by setting `vault.recipient` to a blacklisted quote token address

LoopFi

LoopFi

71.11 USDC • 1 total finding • Code4rena • SBSecurity

#8

high

Availability of deposit invariant can be bypassed

Apr '24

Renzo

Renzo

714.92 USDC • 7 total findings • Code4rena • SBSecurity

#15

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

NOYA

NOYA

635.97 USDC + NOYA stars • 8 total findings • Code4rena • SBSecurity

#23

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

DYAD

DYAD

732.89 USDC • 11 total findings • Code4rena • SBSecurity

#10

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

Smart Wallet

Smart Wallet

28.23 USDC • Code4rena • SBSecurity

#16

Feb '24

Spectra

Spectra

214.03 USDC • Code4rena • SBSecurity

#10

Wise Lending

Wise Lending

5,772.78 USDC • 3 total findings • Code4rena • SBSecurity

#10

medium

Incorrect calculation of lending shares in `_withdrawOrAllocateSharesLiquidation` can lead to revert and failure to liquidate

medium

The protocol allows borrowing small positions that can create bad debt

medium

First depositor inflation attack in `PendlePowerFarmToken`

Jan '24

Decent

Decent

303.44 USDC • 1 total finding • Code4rena • SBSecurity

#22

high

When `DecentBridgeExecutor.execute` fails, funds will be sent to a random address

reNFT

reNFT

962.5 USDC • Code4rena • SBSecurity

#14

Dec '23

Ethereum Credit Guild

Ethereum Credit Guild

3,173.96 USDC • 3 total findings • Code4rena • SBSecurity

#8

medium

Wrong ProfitManager in GuildToken, will always revert for other types of gauges leading to bad debt

medium

Users can deflate other markets Guild holders rewards by staking less priced token

medium

Malicious borrower can decrease Guild holders reward

Nov '23

Kelp DAO | rsETH

Kelp DAO | rsETH

1,044.54 USDC • 3 total findings • Code4rena • SBSecurity

#6

high

The price of rsEHT could be manipulated by the first staker

high

Possible arbitrage from Chainlink price discrepancy

high

Protocol mints less rsETH on deposit than intended

Oct '23

Steadefi

Steadefi

362.37 USDC • 5 total findings • CodeHawks • SBSecurity

#15

medium

Setter functions for core GMX contracts

medium

Wrong hardcoded PnL factor is used in all GMXVault add liquidity operations

low

Rebalance may occur due to wrong requirements check

low

Lack of events for critical actions

low

Wrong errors are used for reverts

ENS

ENS

16.12 USDC • Code4rena • SBSecurity

#17

Sep '23

Venus Prime

Venus Prime

32.27 USDC • 1 total finding • Code4rena • SBSecurity

#34

medium

DoS and gas griefing of calls to Prime.updateScores()

Allo V2

Allo V2

38.37 USDC • 2 total findings • Sherlock • SBSecurity

#50

medium

Setting useRegistryAnchor to true will result in `recipientAddress` always be address(0) in RfpSimpleStrategy

medium

`Allo.sol` feeAmount will round down to 0 when user calls `fundPool()` with small amount

Aug '23

Cooler Update

Cooler Update

0.70 USDC • 1 total finding • Sherlock • SBSecurity

#20

medium

Collateral amount will be inaccurate if the exchange rate goes up a lot

Dopex

Dopex

90.64 USDC • 2 total findings • Code4rena • SBSecurity

#82

high

The settle feature will be broken if attacker arbitrarily transfer collateral tokens to the PerpetualAtlanticVaultLP

medium

_curveSwap: getDpxEthPrice and getEthPrice is in wrong order

Sparkn

Sparkn

25.84 USDC • 4 total findings • CodeHawks • SBSecurity

#44

medium

Malicious/Compromised organiser can reclaw all funds, stealing work from supporters

low

Centralization Risk for trusted organizers

low

DAI Tokens at Risk Due to Lack of address(0) Check in distribute

low

Missing Events

Jul '23

Beedle - Oracle free perpetual lending

Beedle - Oracle free perpetual lending

100.32 USDC • 11 total findings • CodeHawks • SBSecurity

#43

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

Foundry DeFi Stablecoin CodeHawks Audit Contest

Foundry DeFi Stablecoin CodeHawks Audit Contest

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`