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

hyh

Security Researcher

https://cantina.xyz/u/dmitriia

Contact Me

High

24

Solo

126

Total

Medium

26

Solo

172

Total

$892.88K

Total Earnings

#6 All Time

119x

Payouts

gold

18x

1st Places

silver

7x

2nd Places

bronze

6x

3rd Places

All

Sherlock

Code4rena

Jan '25

Aave v3.3

Aave v3.3

28,425.57 USDC • Sherlock • hyh

gold

Nov '24

Nouns DAO - Auction Streams

Nouns DAO - Auction Streams

11,877.12 USDC • Sherlock • hyh

gold

Aug '24

ZeroLend One

ZeroLend One

34,085.45 USDC • 2 total findings • Sherlock • hyh

#36

medium

NFTPositionManager's `repay()` and `repayETH()` are unavailable unless preceded atomically by an accounting updating operation

medium

`Allocator` request for full pool withdrawal produce no withdrawal at all that leads to funds misallocation

Jul '24

Union Finance Update #2

Union Finance Update #2

10,974.48 USDC • 4 total findings • Sherlock • hyh

bronze

high

`repayBorrowWithERC20Permit()` functions use incorrectly scaled accumulated interest value

high

UserManager's `debtWriteOff()` updates `_totalStaked` incorrectly

medium

Minimum borrow amount can be surpassed and borrower can be treated as being overdue earlier than their actual overdue time

medium

`updateLocked()` locks a rounded down value

Jun '24

Size

Size

6,843.77 USDC • 7 total findings • Code4rena • hyh

#9

high

Users won't liquidate positions because the logic used to calculate the liquidator's profit is incorrect

high

The collateral remainder cap is incorrectly calculated during liquidation

medium

Fragmentation fee is not taken if user compensates with newly created position

medium

`executeBuyCreditMarket` returns the wrong amount of cash and overestimates the amount that needs to be checked in the variable pool

medium

Credit can be sold forcibly as `forSale` setting can be ignored via Compensate

medium

Neither `sellCreditMarket‎()` nor `compensate‎()` checks whether the credit position to be sold is allowed for sale

medium

Users can not to buy/sell minimum credit allowed due to exactAmountIn condition

Mar '24

Nouns DAO - Clients Incentives

Nouns DAO - Clients Incentives

63,000 USDC • 3 total findings • Sherlock • hyh

gold

high

Rewards can be stolen from other proposals and votes by extending auction revenue period with the help of bogus proposals

high

Eligibility of cancelled proposals makes it possible for `proposalEligibilityQuorumBps` controlling actor to create multiple eligible proposals, stealing rewards from all others

medium

Rewards can be allocated for less than minimal reward period with the help of bogus proposal

Feb '24

Tapioca

Tapioca

53,027.98 USDC • 15 total findings • Sherlock • hyh

gold

high

TOFTOptionsReceiverModule will have the user lose the whole output TAP when requested to exercise all eligible options

high

Liquidation fees are permanently frozen on Penrose YB account

high

`totalBorrow.elastic` and `totalBorrow.base` aren't updated in BB and SGL regular liquidations

high

TOFTOptionsReceiverModule miss cross-chain transformation for deposit and lock amounts

high

Malicious MarketHelper contract can be used in TOFTMarketReceiverModule's leverageUpReceiver and marketRemoveCollateralReceiver functions

medium

BBLeverage's and SGLLeverage's `buyCollateral()` remove the required funds from the target twice

medium

Allowances is double spent in BBLeverage's and SGLLeverage's `sellCollateral()`

medium

Operation residual is lost for the user of BBLeverage's and SGLLeverage's `sellCollateral()`

medium

Leverage operations of ETH market change debt, but do not accrue linked BB markets, corrupting their interest rate accrual logic

medium

mTOFT's fees cannot be paid on native wrapping

medium

TOFTOptionsReceiverModule's and UsdoOptionReceiverModule's exerciseOptionsReceiver can lose the option payment provided

medium

SGL and BB repay do not round up both on allowance spending and elastic amount

medium

Leverage borrowing with stale rate can atomically create bad debt with no prior positions and no investment

medium

Balancer rebalance operation is permanently blocked whenever owner assigns `rebalancer` role to some other address

medium

Unpausing with accrue timestamp reset can remove the accrual between last recorded accrue time and pausing time

Nov '23

Beraborrow

Beraborrow

Collaborative Audit • Sherlock • hyh

Oct '23

Ajna #2

Ajna #2

61,250 USDC • 2 total findings • Sherlock • hyh

gold

high

Subsequent takes increase next kicker reward, allowing total kicker reward to be artificially amplified by splitting take into a batch

high

Reserves can be stolen by settling artificially created bad debt from them

ENS

ENS

16.12 USDC • Code4rena • hyh

#17

Jun '23

Ajna Update

Ajna Update

71,599.00 USDC • 9 total findings • Sherlock • hyh

gold

high

Settlement can be called when auction period isn't concluded, allowing HPB depositors to game bad debt settlements

high

LUP is not recalculated after adding kicking penalty to pool's debt, so kick() updates the pool state with an outdated LUP

high

Debt write off can be prohibited by HPB depositor by continuously allocating settlement blocking dust deposits in the higher buckets

high

Pool's kickWithDeposit misses liquidation debt check

high

kickWithDeposit removes the deposit without HTP pool state check

high

moveQuoteToken updates pool state using intermediary LUP, biasing pool's interest rate calculations

medium

Due to excessive HTP check moveQuoteToken can be unavailable for big deposits

medium

Limit index isn't checked in repayDebt, so user control is void

medium

LenderActions's moveQuoteToken can create a total debt undercoverage

May '23

Ajna Protocol

Ajna Protocol

3,211.19 USDC • 4 total findings • Code4rena • hyh

bronze

high

Delegation rewards are not counted toward granting fund

high

PositionManager's moveLiquidity can set wrong deposit time and permanently freeze LP funds moved

high

PositionManager's moveLiquidity can freeze funds by removing destination index even when the move was partial

medium

It is possible to steal the unallocated part of every delegation period budget

Apr '23

Notional Update #3

Notional Update #3

11,137.85 USDC • Sherlock • hyh

silver

Findings not publicly available for private contests.

Mar '23

Telcoin Update

Telcoin Update

10,880.07 USDC • 3 total findings • Sherlock • hyh

gold

high

Rogue plugin can become unremovable and halt all staking and claiming

medium

StakingModule's stakedByAt() can report erroneous values

medium

Account that is affiliated with a plugin can sometimes evade slashing

Feb '23

Derby

Derby

35,297.66 USDC • 20 total findings • Sherlock • hyh

gold

high

Vault's withdrawFromProtocol incorrectly scales amount to be withdrawn

high

Vault rewards withdrawal swapping is subject to sandwich attack

high

Reward part of yield is permanently frozen for Providers other than Compound

high

CompoundProvider's balanceUnderlying and calcShares outputs are scaled incorrectly

high

IdleProvider's balanceUnderlying and calcShares outputs are misscaled by up to 10^12

high

Vault can lose rewards due to lack of precision

high

YearnProvider freezes yearn tokens on partial withdrawal

high

Any tokens can be stolen via withdraw from YearnProvider and AaveProvider balances

high

Vault's savedTotalUnderlying tracks withdrawn funds incorrectly

medium

There is no price conversion between vault token and provider underlying token amounts in withdrawFromProtocol

medium

minimumPull Vault parameter cannot be adjusted

medium

Funds can be frozen on protocol blacklisting

medium

IdleProvider overstates balanceUnderlying() and understates calcShares()

medium

Vault withdraws always more from CompoundProvider and understates its holdings as stale exchangeRateStored value is used for valuation

medium

Rebalancing can become unavailable when Aave pool has liquidity shortage

medium

Beta pools performance isn't accounted for in player rewards

medium

If Connext don't use all allowance and token employs approval race protection the cross chain functionality can become stuck

medium

Current period profit can be extracted from the Vault by front running state change before exchange rate recalculation

medium

Native funds sent with pushVaultAmounts and sendFundsToVault can be lost

medium

Rebalancing breaks and can corrupt the accounting if amountToProtocol or amountToChain turn negative

Ethos Reserve contest

Ethos Reserve contest

4,281.76 USDC • 2 total findings • Code4rena • hyh

#8

high

Rewards will be locked in LQTYStaking Contract

high

User can lose up to whole stake on vault withdrawal when there are funds locked in the strategy

Union Finance Update

Union Finance Update

10,463.41 USDC • 4 total findings • Sherlock • hyh

gold

high

Staker can perform rewards withdrawal every overdueBlocks less 1 and have zero frozenCoinAge

high

Staker can manipulate lockedCoinAge and earn rewards in excess of the allowed maximum

high

UserManager's cancelVouchInternal breaks up voucher accounting on voucher removal

medium

Market adapter removal corrupts withdraw sequence

Jan '23

Ajna

Ajna

61,335.85 USDC • 12 total findings • Sherlock • hyh

gold

high

Remaining collateral used by ERC721Pool is missed in Auctions take and bucketTake return structures

high

ERC721Pool's mergeOrRemoveCollateral allows to remove collateral while auction is clearable

high

removeCollateral miss bankrupcy logic and can make future LPs sharing losses with the current ones

high

scaledQuoteTokenAmount isn't updated to be collateral sell value in the quote token constraint case of _calculateTakeFlowsAndBondChange

high

RewardsManager doesn't delete old bucket snapshot info on unstaking

high

ERC721Pool's take will proceed with truncated collateral amount and full debt when borrower's collateral is fractional

medium

Interest rates can be raised above the market as a griefing, disabling the pool

medium

Flashloan end result isn't controlled

medium

Deposits are eliminated before currently unclaimed reserves when there is no reserve auction

medium

Settled collateral of a borrower aren't available for lenders until borrower's debt is fully cleared

medium

ERC721Pool taker callback misreports quote funds whenever there was collateral amount rounding

medium

If borrower or kicker got blacklisted by asset contract their collateral or bond funds can be permanently frozen with the pool

Dec '22

Lyra

Lyra

25,739.40 USDC • Sherlock • hyh

silver

Findings not publicly available for private contests.

Nov '22

ParaSpace contest

ParaSpace contest

2,183.31 USDC • 2 total findings • Code4rena • hyh

#13

high

NFTFloorOracle's asset and feeder structures can be corrupted

medium

NFTFloorOracle's assets will use old prices if added back after removal

Opyn Crab Netting

Opyn Crab Netting

6,418.88 USDC • 5 total findings • Sherlock • hyh

gold

high

setMinUSDC and setMinCrab can be front-run to bloat deposit and withdraw arrays

high

Netting and withdraw auction can be frozen permanently

high

External checkOrder can be used to invalidate any order, preventing the auction

high

debtToMint incorrectly treats feeAdjustment decimals

medium

Precision is lost in depositAuction and withdrawAuction user amount due calculations

Telcoin

Telcoin

2,004.87 USDC • 2 total findings • Sherlock • hyh

bronze

medium

FeeBuyback submit may end up being blocked for some ERC20

medium

Native funds can be lost by submit() as msg.value isn't synchronized with amount

LooksRare Aggregator contest

LooksRare Aggregator contest

77.22 USDC • 1 total finding • Code4rena • hyh

#23

medium

Public to all funds escape

Chainlink Staking contest

Chainlink Staking contest

1,074.93 USDC • Code4rena • hyh

#13

Oct '22

Illuminate

Illuminate

4,546.30 USDC • 8 total findings • Sherlock • hyh

#5

high

Yield, Swivel, Element, APWine and Sense lend() are subject to reentracy resulting in Illuminate PT over-mint

high

There are no Illuminate PT transfers from the owner in ERC5095's withdraw and redeem before maturity

high

No returning of premium if there is no swap to PT

high

Sense redeem is unavailable and funds are frozen for underlyings whose decimals are smaller than the corresponding IBT decimals

high

External PT redeem functions can be reentered to double count the received underlying funds

high

Unlimited mint of Illuminate PTs is possible whenever any market is uninitialized and unpaused

medium

Slippage control is rendered void by misusing asset amount to be sold as a slippage base

medium

Converter cannot be changed in Redeemer

Union Finance

Union Finance

43,939.57 USDC • 11 total findings • Sherlock • hyh

gold

high

repayBorrow is inaccessible by overdue borrowers

high

Stakers will lose their rewards as updateLocked() updates only the first active vouches until there is a prepayment

high

repayBorrow calls wrong frozen info update for overdue repayments

high

UNION rewards issuance can be maximized without providing credit

high

Staker rewards can be gathered with maximal multiplier no matter how borrowers are overdue

medium

Stakers can have their funds locked for an extended period not related to the performance of their borrowers

medium

Vouchers and vouchees indices become corrupted by UserManager's cancelVouch

medium

Maximal approvals remain for the AssetManager's adapters and tokens after removal

medium

It's impossible to writing off any vouch fully for an outside actor

medium

Partial withdrawals by AssetManager lead to user funds freeze

medium

Priority withdrawal sequence array will grow infinitely over time

Trader Joe v2 contest

Trader Joe v2 contest

0.97 USDC • Code4rena • hyh

#28

Merit Circle

Merit Circle

884.04 USDC • 3 total findings • Sherlock • hyh

silver

high

Unit isn't recalculated on curve modification with setCurvePoint

high

Maximum duration multiplier can be forced for lock amount increase

medium

Rewards can be retrieved in a almost flash loan manner

Sep '22

Sherlock

Sherlock

27,221.58 USDC • 2 total findings • Sherlock • hyh

gold

high

An attacker can gain an inflated amount of Sherlock shares by staking when TrueFiPool2 pool has its value temporary reduced during loan closure

medium

Griefing attack is possible via TrueFi borrowing

VTVL contest

VTVL contest

116.68 USDC • 1 total finding • Code4rena • hyh

#38

medium

Variable balance token causing fund lock and loss

Art Gobblers contest

Art Gobblers contest

1,858.21 USDC • 1 total finding • Code4rena • hyh

#13

high

Can Recover Gobblers Burnt In Legendary Mint

Y2k Finance contest

Y2k Finance contest

545.13 USDC • 4 total findings • Code4rena • hyh

#20

high

Incorrect handling of pricefeed.decimals()

high

Griefing attack on the Vaults is possible, withdrawing the winning side stakes

high

Risk users are required to payout if the price of the pegged asset goes higher than underlying

medium

Different Oracle issues can return outdated prices

PartyDAO contest

PartyDAO contest

1,932.85 USDC • 1 total finding • Code4rena • hyh

#8

medium

Previously nominated delegate can reset the delegation

Notional

Notional

4,403.30 USDC • 2 total findings • Sherlock • hyh

#5

medium

MetaStable2TokenAuraVault allows only up to 1bp weight for Balancer TWAP oracle

medium

TwoTokenPoolUtils's _getOraclePairPrice produces incorrect oraclePairPrice when balancerOracleWeight is set to be bigger than BALANCER_ORACLE_WEIGHT_PRECISION

FEI and TRIBE Redemption contest

FEI and TRIBE Redemption contest

34.5 USDC • Code4rena • hyh

#10

Nouns Builder contest

Nouns Builder contest

12,228.02 USDC • 5 total findings • Code4rena • hyh

gold

high

ERC721Votes's delegation disables NFT transfers and burning

high

`ERC721Votes`: Token owners can double voting power through self delegation

medium

NFT owner can block token burning and transfer by delegating to zero address

medium

Proposals can be bricked and Auctions stalled by bad settings

medium

Index out of bounds error when properties length is more than attributes length breaks minting

Aug '22

Sentiment

Sentiment

2,566.22 USDC • 2 total findings • Sherlock • hyh

#7

high

UniV2LPOracle's getPrice() is incorrect for pairs with underlying tokens whose decimals aren't 18

high

LToken's and LEther's first depositor can depress shares denomination

Olympus DAO contest

Olympus DAO contest

607.78 USDC • 2 total findings • Code4rena • hyh

#29

medium

[NAZ-M1] Chainlink's `latestRoundData` Might Return Stale Results

medium

Moving average precision is lost

Nouns DAO contest

Nouns DAO contest

52.34 USDC • Code4rena • hyh

#34

Fraxlend (Frax Finance) contest

Fraxlend (Frax Finance) contest

45.83 USDC • Code4rena • hyh

#64

Mimo August 2022 contest

Mimo August 2022 contest

88.17 USDC • Code4rena • hyh

#36

Rigor Protocol contest

Rigor Protocol contest

959.49 USDC • 2 total findings • Code4rena • hyh

#12

high

Builder can call `Community.escrow` again to reduce debt further using same signatures

medium

New subcontractor can be set for a SCConfirmed task without current subcontractor consent

Jul '22

Golom contest

Golom contest

271.03 USDC • Code4rena • hyh

#42

Yield Witch v2 contest

Yield Witch v2 contest

46.4 USDC • Code4rena • hyh

#32

ENS contest

ENS contest

124.79 USDC • 1 total finding • Code4rena • hyh

#41

medium

transfer() depends on gas consts

Fractional v2 contest

Fractional v2 contest

1,182.61 USDC • 5 total findings • Code4rena • hyh

#19

high

Division rounding can make fraction-price lower than intended (down to zero)

high

Migration::withdrawContribution falsely assumes that user should get exactly his original contribution back

high

Malicious User Could Burn The Assets After A Successful Migration

medium

Use of `payable.transfer()` may lock user funds

medium

Migration total supply reduction can be used to remove minority shareholders

Juicebox V2 contest

Juicebox V2 contest

799.78 USDC • 3 total findings • Code4rena • hyh

#17

high

ORACLE DATA FEED CAN BE OUTDATED YET USED ANYWAYS WHICH WILL IMPACT ON PAYMENT LOGIC

medium

Use a safe transfer helper library for ERC20 transfers

medium

Discounted fee calculation is imprecise and calculates less fees than anticipated

Jun '22

Putty contest

Putty contest

3,929.01 USDC • 4 total findings • Code4rena • hyh

silver

high

Zero strike call options can be systemically used to steal premium from the taker

medium

`fillOrder()` and `exercise()` may lock Ether sent to the contract, forever

medium

Zero strike call options will avoid paying system fee

medium

Malicious Token Contracts May Lead To Locking Orders

Nibbl contest

Nibbl contest

1,092.51 USDC • 1 total finding • Code4rena • hyh

#11

medium

Ineffective TWAV Implementation

Illuminate contest

Illuminate contest

2,178.29 USDC • 7 total findings • Code4rena • hyh

#7

high

Unable to redeem from Notional

high

Able to mint any amount of PT

high

Funds may be stuck when `redeeming` for Illuminate

high

Illuminate PT redeeming allows for burning from other accounts

high

[H-05] Not minting iPTs for lenders in several lend functions

medium

Principal types in Illuminate and Yield lending are mixed up

medium

Sandwich attacks are possible as there is no slippage control option in Marketplace and in Lender yield swaps

Badger-Vested-Aura contest

Badger-Vested-Aura contest

104.33 USDC • 1 total finding • Code4rena • hyh

#24

medium

`_harvest` has no slippage protection when swapping `auraBAL` for `AURA`

Infinity NFT Marketplace contest

Infinity NFT Marketplace contest

847.17 USDC • 3 total findings • Code4rena • hyh

#14

high

`canExecTakeOrder` mismatches `makerOrder` and `takerItems` when duplicated items present

high

Accumulated ETH fees of InfinityExchange cannot be retrieved

high

`_transferNFTs()` succeeds even if no transfer is performed

Canto contest

Canto contest

1,923.99 USDC • 2 total findings • Code4rena • hyh

#16

high

Transferring any amount of the underlying token to the CNote contract will make the contract functions unusable

medium

CNote updates the accounts after sending the funds, allowing for reentrancy

Connext Amarok contest

Connext Amarok contest

3,165.42 USDC • 2 total findings • Code4rena • hyh

#7

medium

Did Not Approve To Zero First Causing Certain Token Transfer To Fail

medium

BridgeFacet's _executePortalTransfer ignores underlying token amount withdrawn from Aave pool

Notional x Index Coop

Notional x Index Coop

154.42 USDC • Code4rena • hyh

#22

May '22

Backd Tokenomics contest

Backd Tokenomics contest

113.88 USDC • Code4rena • hyh

#31

veToken Finance contest

veToken Finance contest

3,120.92 USDT • 2 total findings • Code4rena • hyh

#7

medium

Booster's shutdownPool can freeze user funds

medium

ExtraRewardStashV2's stashRewards can become unavailable

Velodrome Finance contest

Velodrome Finance contest

4,284.67 USDC • 5 total findings • Code4rena • hyh

#6

high

User rewards stop accruing after any _writeCheckpoint calling action

high

VotingEscrow's merge and withdraw aren't available for approved users

medium

Malicious user can populate `rewards` array with tokens of their interest reaching limits of `MAX_REWARD_TOKENS`

medium

Rewards aren't updated before user's balance change in Gauge's withdrawToken

medium

Gauge set can be front run if bribe and gauge constructors aren't run atomically

OpenSea Seaport contest

OpenSea Seaport contest

24,736.67 USDC • 1 total finding • Code4rena • hyh

#8

high

Truncation in `OrderValidator` can lead to resetting the fill and selling more tokens

Sturdy contest

Sturdy contest

4,163.28 USDC • 3 total findings • Code4rena • hyh

gold

high

The check for value transfer success is made after the return statement in _withdrawFromYieldPool of LidoVault

medium

Title: Yield can be unfairly divided because of MEV/Just-in-time stablecoin deposits

medium

ConvexCurveLPVault's _transferYield can become stuck with zero reward transfer

Aura Finance contest

Aura Finance contest

6,889.31 USDC • 2 total findings • Code4rena • hyh

#5

medium

User will lose funds

medium

ConvexMasterChef's deposit and withdraw can be reentered drawing all reward funds from the contract if reward token allows for transfer flow control

Cally contest

Cally contest

57.17 USDC • Code4rena • hyh

#62

Enso Finance contest

Enso Finance contest

1,081.32 USDT • Code4rena • hyh

#22

Alchemix contest

Alchemix contest

36,193.46 DAI • 7 total findings • Code4rena • hyh

gold

medium

registerAsset misuse can permanently disable TransmuterBuffer and break the system

medium

TransmuterBuffer's setAlchemist will freeze deposited funds

medium

TransmuterBuffer's _alchemistWithdraw use hard coded slippage that can lead to user losses

medium

New gALCX token denomination can be depressed by the first depositor

medium

Alchemist can mint `AlTokens` above their assigned ceiling by calling `lowerHasMinted()`

medium

EthAssetManager and ThreePoolAssetManager don't control Meta tokens decimals

medium

YearnTokenAdapter's wrap can become stuck as it uses one step approval for an arbitrary underlying

FactoryDAO contest

FactoryDAO contest

2,026.66 DAI • 5 total findings • Code4rena • hyh

#5

high

SpeedBumpPriceGate: Excess ether did not return to the user

medium

PermissionlessBasicPoolFactory's withdraw can become frozen on zero reward token transfers

medium

safeTransferFrom is recommended instead of transfer (1)

medium

amount requires to be updated to contract balance increase (1)

medium

ERC20 tokens with different decimals than 18 leads to loss of funds

Forgotten Runes Warrior Guild contest

Forgotten Runes Warrior Guild contest

281.56 USDC • 1 total finding • Code4rena • hyh

#27

medium

The owner can mint all of the NFTs.

bunker.finance contest

bunker.finance contest

114.33 USDC • Code4rena • hyh

#22

Apr '22

Mimo DeFi contest

Mimo DeFi contest

400.55 USDC • 1 total finding • Code4rena • hyh

#15

medium

SuperVault's leverageSwap and emptyVaultOperation can become stuck

AbraNFT contest

AbraNFT contest

7,546.85 MIM • 4 total findings • Code4rena • hyh

silver

high

Avoidance of Liquidation Via Malicious Oracle

high

The return value `success` of the get function of the INFTOracle interface is not checked

high

Critical Oracle Manipulation Risk by Lender

high

Mistake while checking LTV to lender accepted LTV

Backd contest

Backd contest

128.95 USDC • 2 total findings • Code4rena • hyh

#38

medium

Chainlink's latestRoundData might return stale or incorrect results

medium

`call()` should be used instead of `transfer()` on an `address payable`

xTRIBE contest

xTRIBE contest

4,805.31 USDC • 1 total finding • Code4rena • hyh

#5

medium

FlywheelCore's setFlywheelRewards can remove access to reward funds from current users

Phuture Finance contest

Phuture Finance contest

1,005.65 USDC • 1 total finding • Code4rena • hyh

#7

high

IndexLogic: An attacker can mint tokens for himself using assets deposited by other users

Badger Citadel contest

Badger Citadel contest

3,502.95 USDC • 3 total findings • Code4rena • hyh

#8

high

StakedCitadel depositors can be attacked by the first depositor with depressing of vault token denomination

medium

[WP-H3] `saleRecipient` can rug buyers

medium

Funding.deposit() doesn't work if there is no discount set

JPEG'd contest

JPEG'd contest

1,202.87 USDC • 3 total findings • Code4rena • hyh

#14

high

yVault: First depositor can break minting of shares

medium

The noContract modifier does not work as expected.

medium

Chainlink pricer is using a deprecated API

Duality Focus contest

Duality Focus contest

1,689.55 USDC • 1 total finding • Code4rena • hyh

#5

medium

Not calling `approve(0)` before setting a new approval causes the call to revert when used with Tether (USDT)

Mar '22

Volt Protocol contest

Volt Protocol contest

7,185.26 USDC • 1 total finding • Code4rena • hyh

bronze

medium

NonCustodialPSM can become insolvent as CPI index rises

Joyn contest

Joyn contest

1,386.49 USDC • 4 total findings • Code4rena • hyh

#7

high

CoreCollection can be reinitialized

high

DoS: `claimForAllWindows()` May Be Made Unusable By An Attacker

high

Centralisation RIsk: Owner Of `RoyaltyVault` Can Take All Funds

medium

CoreCollection's token transfer can be disabled

Paladin contest

Paladin contest

664.36 USDC • 1 total finding • Code4rena • hyh

#16

medium

cooldown is set to 0 when the user sends all tokens to himself.

LI.FI contest

LI.FI contest

3,496.42 USDC • 7 total findings • Code4rena • hyh

#7

medium

WithdrawFacet's withdraw calls native payable.transfer, which can be unusable for DiamondStorage owner contract

medium

Should prevent users from sending more native tokens in the `startBridgeTokensViaCBridge` function

medium

DexManagerFacet: batchRemoveDex() removes first dex only

medium

cBridge integration fails to send native tokens

medium

ERC20 bridging functions do not revert on non-zero msg.value

medium

Anyone can get swaps for free given certain conditions in `swap`.

medium

`msg.value` is Sent Multipletimes When Performing a Swap

Rolla contest

Rolla contest

5,475.5 USDC • 2 total findings • Code4rena • hyh

bronze

medium

Arbitrary code can be run with Controller as msg.sender

medium

Spreads can be minted with a deactivated oracle

Biconomy Hyphen 2.0 contest

Biconomy Hyphen 2.0 contest

5,540.82 USDT • 3 total findings • Code4rena • hyh

#5

high

[WP-H4] Deleting `nft Info` can cause users' `nft.unpaidRewards` to be permanently erased

high

[WP-H17] Users will lose a majority or even all of the rewards when the amount of total shares is too large, due to precision loss

medium

[WP-H23] Improper `tokenGasPrice` design can overcharge user for the gas cost by a huge margin

Timeswap contest

Timeswap contest

891.49 USDC • 1 total finding • Code4rena • hyh

#5

high

Manipulation of the Y State Results in Interest Rate Manipulation

Feb '22

Foundation contest

Foundation contest

2,574.75 USDC • 2 total findings • Code4rena • hyh

#9

high

An offer made after auction end can be stolen by an auction winner

medium

Escrowed NFT can be stolen by anyone if no active buyPrice or auction exists for it

Hubble contest

Hubble contest

6,571.73 USDC • 5 total findings • Code4rena • hyh

#4

high

denial fo service

medium

Assets sent from MarginAccount to InsuranceFund will be locked forever

medium

Blocking of the VUSD withdrawals is possible if the reserve token doesn't support zero value transfers

medium

ClearingHouse margin calculations will break up if an AMM returning non-6 decimals positions be white listed

medium

Liquidations can be run on the bogus Oracle prices

Tribe Turbo contest

Tribe Turbo contest

2,348.43 USDC • 1 total finding • Code4rena • hyh

#9

medium

[WP-M2] Wrong implementation of `TurboSafe.sol#less()` may cause boosted record value in TurboMaster bigger than actual lead to `BoostCapForVault` and `BoostCapForCollateral` to be permanently occupied

Ooki contest

Ooki contest

5,100 USDC • Code4rena • hyh

bronze
Redacted Cartel contest

Redacted Cartel contest

461.42 USDC • 3 total findings • Code4rena • hyh

#16

medium

Send ether with call instead of transfer.

medium

Wrong slippage check

medium

SafeERC20.sol is imported but not used in the transferBribes() function

Aave Lens contest

Aave Lens contest

16,888.71 USDC • 3 total findings • Code4rena • hyh

silver

medium

Basis points constant BPS_MAX is used as minimal fee amount requirement

medium

Collect modules can fail on zero amount transfers if treasury fee is set to zero

medium

Zero collection module can be whitelisted and set to a post, which will then revert all collects and mirrors with PublicationDoesNotExist

Nested Finance contest

Nested Finance contest

1,024.84 USDC • 2 total findings • Code4rena • hyh

#10

medium

Passing multiple ETH deposits in orders array will use the same msg.value many times

medium

`NestedFactory` does not track operators properly

Badger Citadel contest

Badger Citadel contest

743.5 USDC • 3 total findings • Code4rena • hyh

#12

high

StakedCitadel depositors can be attacked by the first depositor with depressing of vault token denomination

medium

[WP-H3] `saleRecipient` can rug buyers

medium

Funding.deposit() doesn't work if there is no discount set

Concur Finance contest

Concur Finance contest

2,594.12 USDC • 3 total findings • Code4rena • hyh

#8

high

Repeated Calls to Shelter.withdraw Can Drain All Funds in Shelter

medium

StakingRewards.setRewardsDuration allows setting near zero or enormous rewardsDuration, which breaks reward logic

medium

ConvexStakingWrapper deposits and withdraws will frequently be disabled if a token that doesn't allow zero value transfers will be added as a reward one

Jan '22

Yield-Convex contest

Yield-Convex contest

69.12 USDC • 1 total finding • Code4rena • hyh

#15

medium

Oracle data feed is insufficiently validated.

Notional contest

Notional contest

891.86 USDC • 1 total finding • Code4rena • hyh

#10

medium

`sNOTE.sol#_mintFromAssets()` Lack of slippage control

OpenLeverage contest

OpenLeverage contest

24,920 USDT • 2 total findings • Code4rena • hyh

gold

high

OpenLevV1Lib's and LPool's doTransferOut functions call native payable.transfer, which can be unusable for smart contract calls

medium

OpenLevV1.closeTrade with V3 DEX doesn't correctly accounts fee on transfer tokens for repayments

Behodler contest

Behodler contest

2,763.17 USDC • 2 total findings • Code4rena • hyh

#7

medium

UniswapHelper.buyFlanAndBurn is a subject to sandwich attacks

medium

Lack of access control in the `parameterize` function of proposal contracts

Trader Joe contest

Trader Joe contest

222.78 USDT • 1 total finding • Code4rena • hyh

#25

medium

ERC20 return values not checked

Sherlock contest

Sherlock contest

3,303.57 USDC • 2 total findings • Code4rena • hyh

#6

medium

tokenBalanceOfAddress of nftOwner becomes permanently incorrect after arbRestake

medium

updateYieldStrategy will freeze some funds with the old Strategy if yieldStrategy fails to withdraw all the funds because of liquidity issues

ElasticSwap contest

ElasticSwap contest

845 USDC • 1 total finding • Code4rena • hyh

#6

medium

[WP-H1] The value of LP token can be manipulated by the first minister, which allows the attacker to dilute future liquidity providers' shares

Livepeer contest

Livepeer contest

1,652.73 tokens) • Code4rena • hyh

#10

InsureDAO contest

InsureDAO contest

1,586.06 tokens) • Code4rena • hyh

#11

Sandclock contest

Sandclock contest

680.56 USDC • 1 total finding • Code4rena • hyh

#17

high

Vaults with non-UST underlying asset vulnerable to flash loan attack on curve pool

Timeswap contest

Timeswap contest

4,577.76 USDC • 1 total finding • Code4rena • hyh

#4

high

Manipulation of the Y State Results in Interest Rate Manipulation

Dec '21

Vader Protocol contest

Vader Protocol contest

1,456.8 USDC • 4 total findings • Code4rena • hyh

#5

high

Covering impermanent loss allows profiting off asymmetric liquidity provision at expense of reserve holdings

high

Mixing different types of LP shares can lead to losses for Synth holders

high

Using single total native reserve variable for synth and non-synth reserves of VaderPoolV2 can lead to losses for synth holders

high

LPs of VaderPoolV2 can manipulate pool reserves to extract funds from the reserve.

Yeti Finance contest

Yeti Finance contest

10,797.78 USDC • 1 total finding • Code4rena • hyh

#4

medium

SHOULD CHECK RETURN DATA FROM CHAINLINK AGGREGATORS

NFTX contest

NFTX contest

7,806.98 USDC • 5 total findings • Code4rena • hyh

silver

high

A vault can be locked from MarketplaceZap and StakingZap

medium

NFTXSimpleFeeDistributor._sendForReceiver doesn't return success if receiver is not a contract

medium

NFTXVaultFactoryUpgradeable implementation can be replaced in production breaking the system

medium

NFTXStakingZap and NFTXMarketplaceZap's transferFromERC721 transfer Cryptokitties to the wrong address

medium

transfer return value is ignored

Amun contest

Amun contest

2,492.08 USDC • 2 total findings • Code4rena • hyh

#11

medium

SingleNativeTokenExitV2 assumes first exchange holds the outputToken

medium

Function `joinTokenSingle` in `SingleTokenJoin.sol` and `SingleTokenJoinV2.sol` can be made to fail

Sublime contest

Sublime contest

2,211.16 USDC • 2 total findings • Code4rena • hyh

#6

high

SavingsAccount withdrawAll and switchStrategy can freeze user funds by ignoring possible strategy liquidity issues

medium

CreditLine.liquidate doesn't transfer borrowed ETH to a lender

Mellow Protocol contest

Mellow Protocol contest

0 USDC • Code4rena • hyh

#16

Maple Finance contest

Maple Finance contest

1,023.73 USDC • Code4rena • hyh

#5

Nov '21

Streaming Protocol contest

Streaming Protocol contest

5,433.2 USDC • 4 total findings • Code4rena • hyh

#5

high

recoverTokens doesn't work when isSale is true

high

Reward token not correctly recovered

high

Wrong calculation of excess depositToken allows stream creator to retrieve `depositTokenFlashloanFeeAmount`, which may cause fund loss to users

medium

Any arbitraryCall gathered airdrop can be stolen with recoverTokens

Malt Finance contest

Malt Finance contest

2,652.88 USDC • 3 total findings • Code4rena • hyh

#9

medium

Frontrunning in UniswapHandler calls to UniswapV2Router

medium

AbstractRewardMine.sol#setRewardToken is dangerous

medium

MiningService.setBonding should use BONDING role instead of REINVESTOR one

Overlay Protocol contest

Overlay Protocol contest

3,191.56 ETH • 1 total finding • Code4rena • hyh

#5

medium

Fee double counting for underwater positions

Nested Finance contest

Nested Finance contest

2,227.17 USDC • 2 total findings • Code4rena • hyh

#7

medium

Passing multiple ETH deposits in orders array will use the same msg.value many times

medium

`NestedFactory` does not track operators properly

Vader Protocol contest

Vader Protocol contest

3,306.79 USDC • 4 total findings • Code4rena • hyh

#7

high

Covering impermanent loss allows profiting off asymmetric liquidity provision at expense of reserve holdings

high

Mixing different types of LP shares can lead to losses for Synth holders

high

Using single total native reserve variable for synth and non-synth reserves of VaderPoolV2 can lead to losses for synth holders

high

LPs of VaderPoolV2 can manipulate pool reserves to extract funds from the reserve.

FairSide contest

FairSide contest

908.97 ETH • 1 total finding • Code4rena • hyh

#5

high

Anyone Can Arbitrarily Call `FSDVesting.updateVestedTokens()`

Boot Finance contest

Boot Finance contest

698.95 USDC • 1 total finding • Code4rena • hyh

#15

medium

Overwrite benRevocable

Oct '21

BadgerDAO ibBTC Wrapper contest

BadgerDAO ibBTC Wrapper contest

5,414.43 ETH • 2 total findings • Code4rena • hyh

gold

high

WrappedIbbtcEth contract will use stalled price for mint/burn if updatePricePerShare wasn't run properly

high

WrappedIbbtc and WrappedIbbtcEth contracts do not filter out price feed outliers

Mochi contest

Mochi contest

143.8 ETH • Code4rena • hyh

#15

Union Finance contest

Union Finance contest

1,230.32 ETH • 1 total finding • Code4rena • hyh

#10

medium

Rebalance will fail due to low precision of percentages

Tempus Finance contest

Tempus Finance contest

1,022.73 USDC • Code4rena • hyh

#6