https://sherlock-files.ams3.digitaloceanspaces.com/profile_images/4cba3d7c-b0fe-4116-88fa-d5aa6fc8d856.png

HChang26

Security Researcher

Smart Contract Security Researcher at @code4rena and @sherlockdefi Multiple Top-5 finishes DM for private audits

Contact Me

High

22

Total

Medium

27

Total

$14.36K

Total Earnings

#430 All Time

29x

Payouts

bronze

1x

3rd Places

regular

6x

Top 10

regular

17x

Top 25

All

Sherlock

Code4rena

CodeHawks

Feb '25

Yieldoor

Yieldoor

29.53 USDC • 1 total finding • Sherlock • HChang26

#21

high

Incorrect UpperTick for VestingPosition in `collectFees()`

Jan '25

Liquid Ron

Liquid Ron

0 USDC • 1 total finding • Code4rena • HChang26

#12

medium

Incorrect Logic in onlyOperator Modifier Leading to Denial-of-Service for Authorized Operators Across Critical Functions

Jul '24

MakerDAO Endgame

MakerDAO Endgame

1,999.48 USDC • Sherlock • HChang26

#44

Jun '24

Vultisig

Vultisig

160.72 USDC • 1 total finding • Code4rena • HChang26

#23

high

Most users won't be able to claim their share of Uniswap fees

May '24

Gamma - Locked Staking Contract

Gamma - Locked Staking Contract

133.81 USDC • 1 total finding • Sherlock • HChang26

bronze

medium

`earlyExitById()` and `exitLateById()` calls near the end of `lockPeriod` are vulnerable to attacks.

Apr '24

NOYA

NOYA

2.89 USDC + NOYA stars • 2 total findings • Code4rena • HChang26

#110

high

`executeWithdraw` may be blocked if any of the users are blacklisted from the `baseToken`

medium

First depositor can make subsequent depositor lose all of her or his deposit

DYAD

DYAD

255.32 USDC • 2 total findings • Code4rena • HChang26

#46

high

Attacker Can Frontruns User's Withdrawals To Make Them Reverts Without Costs

medium

No incentive to liquidate when CR <= 1 as asset received < dyad burned

Mar '24

Ondo Finance

Ondo Finance

3,036.83 USDC • 1 total finding • Code4rena • HChang26

#5

high

`OUSGInstantManager` will allow Excessive OUSG Token Minting During USDC Depeg Event

Abracadabra Mimswap

Abracadabra Mimswap

15.33 USDC • Code4rena • HChang26

#24

Jan '24

Curves

Curves

39.7 USDC • 3 total findings • Code4rena • HChang26

#70

medium

onBalanceChange causes previously unclaimed rewards to be cleared

medium

Curves::_buyCurvesToken(), Excess of Eth received is not refunded back to the user.

medium

Withdrawing with amount = 0 will forcefully set name and symbol to default and disable some functions for token subject

Dec '23

Olas

Olas

830.39 USDC • 1 total finding • Code4rena • HChang26

#6

high

Bonds created in year cross epoch's can lead to lost payouts

Nov '23

Canto Application Specific Dollars and Bonding Curves for 1155s

Canto Application Specific Dollars and Bonding Curves for 1155s

1.37 USDC • 1 total finding • Code4rena • HChang26

#31

medium

No slippage protection for Market functions

Kelp DAO | rsETH

Kelp DAO | rsETH

938.6 USDC • 2 total findings • Code4rena • HChang26

#10

high

Possible arbitrage from Chainlink price discrepancy

high

Protocol mints less rsETH on deposit than intended

Oct '23

Party Protocol

Party Protocol

1,261.79 USDC • 2 total findings • Code4rena • HChang26

#5

high

Single host can unfairly skip veto period for proposal that does not have full host support

medium

Some arbitrary proposal calls will fail because executeProposal() in ProposalExecutionEngine is not payable

NextGen

NextGen

14.73 USDC • 3 total findings • Code4rena • HChang26

#84

high

Attacker can drain all ETH from AuctionDemo when block.timestamp == auctionEndTime

medium

Bidder Funds Can Become Unrecoverable Due to 1 second Overlap in `participateToAuction()` and `claimAuction()`

medium

Auction winner can prevent payments via `safeTransferFrom` callback

Ethena Labs

Ethena Labs

285.46 USDC • 2 total findings • Code4rena • HChang26

#14

medium

Soft Restricted Staker Role can withdraw stUSDe for USDe

medium

``FULL_RESTRICTED`` Stakers can bypass restriction through approvals

Open Dollar

Open Dollar

37.14 USDC • 1 total finding • Code4rena • HChang26

#47

medium

Approved address can approve other addresses for an owner's safe

The Wildcat Protocol

The Wildcat Protocol

104.42 USDC • 3 total findings • Code4rena • HChang26

#46

high

Lenders can escape the blacklisting of their accounts because they can move their MarketTokens to different accounts and gain the WithdrawOnly Role on any account they want

high

Borrower has no way to update `maxTotalSupply` of `market` or close market.

medium

Blocked accounts keep earning interest contrary to the WhitePaper

Canto Liquidity Mining Protocol

Canto Liquidity Mining Protocol

1,020.85 USDC • 1 total finding • Code4rena • HChang26

#5

medium

Rewards cannot be transferred when calling protocol command

Sep '23

Venus Prime

Venus Prime

129.33 USDC • 1 total finding • Code4rena • HChang26

#26

high

Prime.sol - User can claim Prime token without having any staked XVS, because his `stakedAt` isn't reset whenever he is issued an irrevocable token.

Maia DAO - Ulysses

Maia DAO - Ulysses

0.11 USDC • 1 total finding • Code4rena • HChang26

#62

high

All tokens can be stolen from `VirtualAccount` due to missing access modifier

Allo V2

Allo V2

329.38 USDC • 5 total findings • Sherlock • HChang26

#24

high

`distribute()` can be front-run by toggling pool status to steal funds

high

Infinite Votes Possible Due to Incorrect `voiceCredits` Handling

medium

`percentFee` can be avoided.

medium

Multiple Calls to `setMilestones()` Allowed Before Completing First `upcomingMilestone`

medium

Vote Inflation Issue in `_qv_allocate()` Leads to Unfair Fund Distribution in `_distribute()`

Centrifuge

Centrifuge

1,143.09 USDC • 1 total finding • Code4rena • HChang26

#12

medium

Investors claiming their maxDeposit by using the LiquidityPool.deposit() will cause that other users won't be able to claim their maxDeposit/maxMint

Aug '23

Livepeer Onchain Treasury Upgrade

Livepeer Onchain Treasury Upgrade

695.61 USDC • 1 total finding • Code4rena • HChang26

#11

medium

withdrawFees does not update checkpoint

Cooler Update

Cooler Update

0.70 USDC • 1 total finding • Sherlock • HChang26

#20

medium

Malicious lender can increase loan.amount

Dopex

Dopex

954.93 USDC • 6 total findings • Code4rena • HChang26

#22

high

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

high

The peg stability module can be compromised by forcing lowerDepeg to revert.

high

Users can get immediate profit when deposit and redeem in `PerpetualAtlanticVaultLP`

medium

Inaccurate swap amount calculation in ReLP leads to stuck tokens and lost liquidity

medium

Can not withdraw RDPX if WETH withdrawn is zero

medium

User that delegate eth to `RdpxV2Core` will incur loss if his delegated eth fulfilled by decaying bonds

veRWA

veRWA

9.82 USDC • Code4rena • HChang26

#52

Good Entry

Good Entry

925.1 USDC • 2 total findings • Code4rena • HChang26

#11

high

Unused funds are not returned and not counted in `GeVault`

medium

User can steal refunded underlying tokens from `initRange` operation inside `RangeManager`

Jul '23

Beedle - Oracle free perpetual lending

Beedle - Oracle free perpetual lending

1.17 USDC • 7 total findings • CodeHawks • HChang26

#193

high

Sandwich attack to steal all ERC-20 tokens in the Fees contract

high

Fee on transfer tokens will cause users to lose funds

medium

The `borrow` and `refinance` functions can be front-run by the pool lender to set high interest rates

gas

+= and -= are more expensive

gas

Uncheck Arithmetic where overflow/underflow impossible

gas

Using Private Rather Than Public For Constants,Saves Gas

gas

For the borrow(), repay() & startAuction() functions in Lender.sol the public visibility modifiers should be changed to external, to help optimize gas usage