https://sherlock-files.ams3.digitaloceanspaces.com/twitter_images/63f61a15-f3fa-43ff-9456-8997848c7fcd.jpg

gpersoon

Security Researcher

Solidity security reviews @SpearbitDAO https://t.co/2Ql2W2oCjY @code4rena https://t.co/fSM2NaWqa5

Contact Me

High

44

Total

Medium

55

Total

$325.64K

Total Earnings

#27 All Time

56x

Payouts

gold

5x

1st Places

silver

5x

2nd Places

bronze

6x

3rd Places

All

Code4rena

Cantina

Oct '24

mev-commit

mev-commit

169.92 USDC • 2 total findings • Cantina • gpersoon

#31

high

Finding not yet public.

medium

Finding not yet public.

Sep '24

uniswap-v4

uniswap-v4

10,000 USDC • Cantina • gpersoon

#12

Mar '24

Smart Wallet

Smart Wallet

36.34 USDC • Code4rena • gpersoon

#14

Jan '24

Blast

Blast

13,765.91 USDC • 1 total finding • Cantina • gpersoon

#26

high

Finding not yet public.

Jun '23

LUKSO

LUKSO

6,244.37 USDC • 1 total finding • Code4rena • gpersoon

#4

medium

Permission escalation by adding the same permission twice

Jan '22

XDEFI contest

XDEFI contest

30.27 USDC • Code4rena • gpersoon

#29

Dec '21

Yeti Finance contest

Yeti Finance contest

239.08 USDC • Code4rena • gpersoon

#21

Amun contest

Amun contest

2,657.56 USDC • 2 total findings • Code4rena • gpersoon

#10

medium

`totalSupply` may exceed `LibBasketStorage.basketStorage().maxCap`

medium

block.timestamp or deadline

Sublime contest

Sublime contest

1,535.14 USDC • 1 total finding • Code4rena • gpersoon

#8

medium

Unlinked address can link immediately again

PoolTogether TwabRewards contest

PoolTogether TwabRewards contest

773.86 USDC • 4 total findings • Code4rena • gpersoon

#11

high

Malicious tickets can lead to the loss of all tokens

high

Continue claiming reqrds after numberOfEpochs are over

high

cancelPromotion is too rigorous

high

Rewards can be claimed multiple times

Kuiper contest

Kuiper contest

511.74 ETH • 1 total finding • Code4rena • gpersoon

#9

medium

Scoop ERC20 tokens from basket contract

Nov '21

Streaming Protocol contest

Streaming Protocol contest

5,894.8 USDC • 4 total findings • Code4rena • gpersoon

#4

high

ts.tokens sometimes calculated incorrectly

high

Tokens can be stolen when `depositToken == rewardToken`

high

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

medium

Storage variable unstreamed can be artificially inflated

Malt Finance contest

Malt Finance contest

1,696.1 USDC • 2 total findings • Code4rena • gpersoon

#13

medium

No max for advanceIncentive

medium

_notSameBlock() can be circumvented in bondToAccount()

Overlay Protocol contest

Overlay Protocol contest

6,558.33 ETH • 3 total findings • Code4rena • gpersoon

bronze

medium

pow() is missing check on input parameters with 0 value

medium

Can't enableCollateral after a disableCollateral

medium

_totalSupply not updated in _transferMint() and _transferBurn()

Nested Finance contest

Nested Finance contest

18.83 USDC • Code4rena • gpersoon

#25

Boot Finance contest

Boot Finance contest

2,360.32 USDC • 4 total findings • Code4rena • gpersoon

#8

high

Claim airdrop repeatedly

medium

Can't claim last part of airdrop

medium

Investor can't claim the last tokens (via claim() )

medium

Overwrite benRevocable

Oct '21

Slingshot Finance contest

Slingshot Finance contest

588.84 ETH • 1 total finding • Code4rena • gpersoon

#9

medium

`initialBalance` for native token is wrong

BadgerDAO ibBTC Wrapper contest

BadgerDAO ibBTC Wrapper contest

382.06 ETH • 1 total finding • Code4rena • gpersoon

#15

high

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

Mochi contest

Mochi contest

6,350.9 ETH • 3 total findings • Code4rena • gpersoon

#7

high

registerAsset() can overwrite _assetClass value

high

debts calculation is not accurate

medium

griefing attack to block withdraws

Tally contest

Tally contest

0 ETH • Code4rena • gpersoon

#14

Covalent contest

Covalent contest

695.14 ETH • 1 total finding • Code4rena • gpersoon

#7

medium

reward tokens could get lost due to rounding down

Ambire contest

Ambire contest

11,270.54 USDC • 2 total findings • Code4rena • gpersoon

silver

high

`QuickAccManager.sol#cancel()` Wrong `hashTx` makes it impossible to cancel a scheduled transaction

high

Prevent execution with invalid signatures

Union Finance contest

Union Finance contest

3,552.52 ETH • 1 total finding • Code4rena • gpersoon

#6

medium

MAX_TRUST_LIMIT might be too high

Tempus Finance contest

Tempus Finance contest

22,727.27 USDC • 1 total finding • Code4rena • gpersoon

gold

high

Steal tokens from TempusController

PoolTogether v4 contest

PoolTogether v4 contest

3,232.42 USDC • Code4rena • gpersoon

#5

Sep '21

Swivel contest

Swivel contest

16,285.84 ETH • 3 total findings • Code4rena • gpersoon

gold

high

Swivel: Taker is charged fees twice in exitVaultFillingVaultInitiate

high

transferNotionalFrom doesn't check from != to

medium

Previously created markets can be overwritten

Wild Credit contest

Wild Credit contest

594.74 USDC • Code4rena • gpersoon

#7

Kuiper contest

Kuiper contest

1,557.79 USDC • 1 total finding • Code4rena • gpersoon

#9

medium

Scoop ERC20 tokens from basket contract

Sushi Trident contest phase 1

Sushi Trident contest phase 1

1,467.16 USDC • Code4rena • gpersoon

#11

Sushi Miso contest

Sushi Miso contest

18,141.9 USDC • 1 total finding • Code4rena • gpersoon

silver

high

Last person to withdraw his tokens might not be able to do this, in Crowdsale (edge case)

yAxis contest

yAxis contest

85.12 tokens) • Code4rena • gpersoon

#11

Aug '21

Notional contest

Notional contest

7,612.83 USDC • 1 total finding • Code4rena • gpersoon

#4

high

Self transfer can lead to unlimited mint

Reality Cards contest

Reality Cards contest

10,077.43 tokens) • 9 total findings • Code4rena • gpersoon

gold

high

Can access cards of other markets

high

Unchecked ERC20 transfers can cause lock up

high

findNewOwner edgecase

medium

Critical uberOwner address changes should be a two-step process

medium

Missing balancedBooks modifier could result in failed system insolvency detection

medium

payout doesn't fix isForeclosed state

medium

minRentalDayDivisor can be different between markets and treasury

medium

Uninitialized Variable `marketWhitelist` in `RCTreasury.sol`

medium

Parameter updates not propagated

Yield micro contest #1

Yield micro contest #1

819.45 USDC • Code4rena • gpersoon

#6

Float Capital contest

Float Capital contest

13,090.87 USDC • 4 total findings • Code4rena • gpersoon

gold

high

copy paste error in _batchConfirmOutstandingPendingActions

high

2 variables not indexed by marketIndex

medium

Prevent markets getting stuck when prices don't move

medium

latestMarket used where marketIndex should have been used

Jul '21

PoolTogether micro contest #1

PoolTogether micro contest #1

4,166.7 USDC • 2 total findings • Code4rena • gpersoon

silver

high

onlyOwnerOrAssetManager can swap Yield Source in SwappableYieldSource at any time, immediately rugging all funds from old yield source

high

setYieldSource leads to temporary wrong results

Sherlock contest

Sherlock contest

17,918.99 USDC • 3 total findings • Code4rena • gpersoon

silver

high

Single under-funded protocol can break paying off debt

medium

reputation risks with updateSolution

medium

Yield distribution after large payout seems unfair

Spartan Protocol contest

Spartan Protocol contest

4,356.2 USDC • 6 total findings • Code4rena • gpersoon

#6

high

Result of transfer / transferFrom not checked

medium

In the beginning its relatively easy to gain majority share

medium

grantFunds will revert after a DAO upgrade.

medium

Missleading onlyDAO modifiers

medium

Dao.sol: Insufficient validation for proposal creation

medium

Block usage of addCuratedPool

Connext contest

Connext contest

1,943.54 USDC • 2 total findings • Code4rena • gpersoon

#5

high

activeTransactionBlocks are vulnerable to DDoS attacks

high

Router liquidity on receiving chain can be double-dipped by the user

Wild Credit contest

Wild Credit contest

1,356.41 USDC • Code4rena • gpersoon

#7

Gro Protocol contest

Gro Protocol contest

21,625.53 USDC • 3 total findings • Code4rena • gpersoon

bronze

high

sortVaultsByDelta doesn't work as expected

high

implicit underflows

high

Incorrect use of operator leads to arbitrary minting of GVT tokens

Jun '21

Tracer contest

Tracer contest

11,627.67 USDC • 4 total findings • Code4rena • gpersoon

bronze

high

Malicious owner can drain the market at any time using SafetyWithdraw

medium

prb-math not audited

medium

Claim liquidation escrow

medium

avoid paying insurance

PoolTogether contest

PoolTogether contest

1,856.78 USDC • 1 total finding • Code4rena • gpersoon

#5

medium

Return values of ERC20 `transfer` and `transferFrom` are unchecked

Reality Cards contest

Reality Cards contest

8,099.47 USDC • 9 total findings • Code4rena • gpersoon

silver

high

Can access cards of other markets

high

Unchecked ERC20 transfers can cause lock up

high

findNewOwner edgecase

medium

Critical uberOwner address changes should be a two-step process

medium

Missing balancedBooks modifier could result in failed system insolvency detection

medium

payout doesn't fix isForeclosed state

medium

minRentalDayDivisor can be different between markets and treasury

medium

Uninitialized Variable `marketWhitelist` in `RCTreasury.sol`

medium

Parameter updates not propagated

May '21

Yield contest

Yield contest

39,207.69 USDC • 5 total findings • Code4rena • gpersoon

gold

high

Duplication of Balance

high

YieldMath.sol / Log2: >= or > ?

high

auth collision possible

medium

auth only works well with external functions

medium

Witch can't give back vault after 2x grab

FairSide contest

FairSide contest

1,703.76 USDC • 2 total findings • Code4rena • gpersoon

#6

medium

Incorrect use of _addTribute instead of _addGovernanceTribute

medium

gracePeriod not increased after membership extension

Visor contest

Visor contest

6,828.92 USDC • 2 total findings • Code4rena • gpersoon

#4

high

Unbounded loop in `_removeNft` could lead to a griefing/DOS attack

medium

transferERC721 doesn't clean timelockERC721s

88mph contest

88mph contest

8,809.1 USDC • Code4rena • gpersoon

bronze
NFTX contest

NFTX contest

7,229.38 USDC • 3 total findings • Code4rena • gpersoon

#5

high

Missing allValidNFTs and afterRedeemHook with swapTo?

high

`getRandomTokenIdFromFund` yields wrong probabilities for ERC1155

medium

Randomization of NFTs returned in redeem/swap operations can be brute-forced

Apr '21

LarvaLabs Meebits Contest

LarvaLabs Meebits Contest

668.45 USDC • Code4rena • gpersoon

#6

Based Loans contest

Based Loans contest

2,916.68 USDC • Code4rena • gpersoon

#5

Vader Protocol contest

Vader Protocol contest

1,759.15 USDC • 2 total findings • Code4rena • gpersoon

#10

medium

Incorrect operator used in deploySynth() of Pools.sol

medium

Init function can be called by everyone

Maple Finance contest

Maple Finance contest

2,446.17 USDC • Code4rena • gpersoon

#7

Marginswap contest

Marginswap contest

6,017.02 USDC • Code4rena • gpersoon

bronze

Feb '21

ElasticDAO contest

ElasticDAO contest

2,074.39 ETH • Code4rena • gpersoon

#6

Slingshot Finance contest

Slingshot Finance contest

2,007.42 USDC • 1 total finding • Code4rena • gpersoon

bronze

medium

`initialBalance` for native token is wrong