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

anonymousjoe

Security Researcher

Contact Me

High

56

Total

Medium

4

Solo

48

Total

$13.90K

Total Earnings

#504 All Time

21x

Payouts

gold

1x

1st Places

silver

1x

2nd Places

bronze

1x

3rd Places

All

Sherlock

Code4rena

Cantina

CodeHawks

Sep '25

Ammplify

Ammplify

3,465.66 USDC • 12 total findings • Sherlock • anonymousjoe

silver

high

SubTreeBorrowedX/Y is not propogated upward in Liq.sol causing loss of funds for all users

high

Incorrect High tick in poolWalker causes dirty nodes to be present after traversal leading to loss of funds and DOS of protocol

high

Inconsistent calculation of node.fees.makerXFeesPerLiqX128 in splitMakerFees

high

Attackers can drain the protocol tokens

high

Liquidity not instantly minted of siblings of Borrow nodes at the edge(low tick) causes DOS of node.

high

CollectFees doesnt work for positions that have adjusted to reduce their liquidity and EOA's will get their funds stolen

medium

Incorrect calculation of the rootWidth of the segment tree causes many ticks to not be accomodated in the tree

medium

collectFees function changes the asset.timestamp even for non-compounding makers

medium

adjustMaker doesnt allow certain valid adjustments

medium

The NFTManager can be DOS'ed

medium

There is no way for the admin/anyone to claim the JIT Penalty tokens

medium

The protocol doesnt support weird tokens like Tether Gold (that return false on every operation)

Jul '25

Allbridge Core Yield

Allbridge Core Yield

150.46 USDC • 1 total finding • Sherlock • anonymousjoe

bronze

medium

Anybody can steal other user's funds

Apr '25

mighty-contracts

mighty-contracts

10.9 USDC • 1 total finding • Cantina • anonymousjoe

#76

high

Finding not yet public.

Mar '25

PinLink: RWA-Tokenized DePIN Marketplace

PinLink: RWA-Tokenized DePIN Marketplace

28.81 USDC • Sherlock • anonymousjoe

#32

Feb '25

Core Contracts

Core Contracts

3,982.94 usdc • 41 total findings • CodeHawks • anonymousjoe

gold

high

Faulty Gauge Weight Update Formula: Voting Power Delta Not Considered Leading to Arithmetic Underflow and Vote Weight Inconsistency

high

`BaseGauge` users can claim rewards without staking

high

Users Can Overwrite Existing Locks in veRAACToken Resulting in Permanent Loss of Funds

high

Gauge period cannot be updated

high

`GaugeController::_calculateReward` implementation will cause smaller shares to be allocated to every gauge

high

Reward manipulation vulnerability in StabilityPool

high

Incorrect Reward Claim Logic in FeeCollector::claimRewards Causes Denial of Service

high

RToken's transfer function lead to loss of funds due to incorrect math

high

Users can borrow more assets than they have deposited as collateral

high

NFTs Get Permanently Locked in Stability Pool After Liquidation

high

Double Usage Index Scaling in StabilityPool Liquidation Inflates Required CRVUSD Balance

high

Ownership Parameter Mismatch in LendingPool’s Vault Withdrawal Logic

high

Lack of Access Control in BoostController::updateUserBoost Leading to Unauthorized Delegation Overwrite.

high

Attackers can double voting power and veToken amount by locking and increasing

high

Incorrect Debt Token Accounting Due to Multiple Scaling Issues

high

Gauge rewards are not transferred to gauge when distributeRewards() is called

medium

Gauge reward period can be extended indefinitely

medium

Incorrect utilization rate forces protocol to issue maximum rewards indefinitely

medium

LendingPool deposits do not work with CurveVault due to lack of funds

medium

LendingPool::getNormalizedIncome() returns stale liquidity index

medium

`RToken::calculateDustAmount` are incorrectly calculated, leading to not be able to transfer the accrued dust amount

medium

Missing Liquidity Rebalancing in Repayments and Liquidations Leading to Inefficient Liquidity Management

medium

Permanent boost inflation through delegation removal in Boostcontroller.sol

medium

Inconsistent Scaling in RToken Transfer Functions

medium

User's voting power never decays over time.

medium

When bad debt is accumulated the loss is not distributed amongst all suppliers leading to a huge loss for the last supplier to withdraw

medium

Inaccurate interest-rate and liquidity calculations due to omitted `updateInterestRatesAndLiquidity()` call in `setProtocolFeeRate()`

medium

Liquidity rate calculation applies protocol fee as a discount instead of charging it in ReserveLibrary

medium

StabilityVault can be drained of RTokens when LendingPool reserve.liquidityIndex >= 2 RAY

medium

Updating the prime rate will change the interest for a time that was already passed

medium

userBoosts.amount in BoostController will have different scales when using different functions to update it

medium

notifyRewardAmount may always revert if the rewardAmount is greater than periodState.emission

medium

reserve.totalUsage not updated correctly causes incorrect Rtoken minting/burning

low

Limited veRaac Token Supply Triggers DoS, Hampering Proper Governance Participation.

low

Lack of enforcement of the `MAX_TOTAL_LOCKED_AMOUNT`

low

Incorrect Initialization of minBoost in BaseGauge Constructor Breaks Core Contract Functionality

low

Borrow, withdraw, deposit revert due to curve vault not having available liquidity or being paused.

low

Deposits/Withdrawals can be DOS'ed if crvVault::withdraw produces any losses

low

`LendingPool` yield generated in curve vault is lost and cannot be withdrawn by users

low

Inconsistent time boundary check in `Governance::state` and `Governanane::castVote`

low

Multiple Vesting Schedules Can’t Be Created for Beneficiaries in Different Categories

Jan '25

Liquid Ron

Liquid Ron

0 USDC • 1 total finding • Code4rena • anonymousjoe

#12

medium

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

daao-contracts

daao-contracts

128.44 USDC • 7 total findings • Cantina • anonymousjoe

#28

high

Finding not yet public.

high

Finding not yet public.

high

Finding not yet public.

high

Finding not yet public.

high

Finding not yet public.

high

Finding not yet public.

medium

Finding not yet public.

dahlia-protocol

dahlia-protocol

1,535.13 USDC • 1 total finding • Cantina • anonymousjoe

#11

high

Finding not yet public.

Dec '24

Alchemix Transmuter

Alchemix Transmuter

0.00 op • 1 total finding • CodeHawks • anonymousjoe

#31

low

Old router retains token allowance after update

SecondSwap

SecondSwap

0 USDC • 1 total finding • Code4rena • anonymousjoe

#67

high

Users can claim more that their actual allotment

Lambo.win

Lambo.win

0 USDC • 1 total finding • Code4rena • anonymousjoe

#36

high

Minting zero tokens when underlyingToken is not Ether in cashIn()

Nov '24

Nouns DAO - Auction Streams

Nouns DAO - Auction Streams

90.28 USDC • Sherlock • anonymousjoe

#31

Oct '24

Dria

Dria

45.57 USDC • 4 total findings • CodeHawks • anonymousjoe

#31

high

Subtraction in `variance()` will revert due to underflow

high

Potential underflow vulnerability in score range calculation of `LLMOracleCoordinator::finalizeValidation`, leading to DoS.

medium

Unrestricted validation score range for validators in `LLMOracleCoordinator::validate`.

medium

Users can list assets with price < 1 ERC20 (ETH, WETH), leading to potential DoS vulnerability.

Sep '24

infinitypools

infinitypools

1,592.99 USDC • 1 total finding • Cantina • anonymousjoe

#13

high

Finding not yet public.

Royco Protocol

Royco Protocol

862.88 USDC • 10 total findings • Cantina • anonymousjoe

#10

high

Finding not yet public.

high

Finding not yet public.

high

Finding not yet public.

high

Finding not yet public.

high

Finding not yet public.

medium

Finding not yet public.

medium

Finding not yet public.

medium

Finding not yet public.

medium

Finding not yet public.

medium

Finding not yet public.

Aug '24

Fjord Token Staking

Fjord Token Staking

132.75 USDC • 2 total findings • CodeHawks • anonymousjoe

#12

medium

`FjordAuction` incorrect `block.timestamp` check allows users to bid after calling `auctionEnd` to claim more tokens than they should

medium

Epoch mismatch in FjordPoints and FjordStaking leads to user being able to stake and unstake instantly for rewards

Winnables Raffles

Winnables Raffles

137.50 USDC • 2 total findings • Sherlock • anonymousjoe

#15

high

Admin won't be able to withdraw ETH after a raffle cancellation

medium

Raffle can be cancelled even if minTicketsThreshold is reached

Tadle

Tadle

437.18 USDC • 15 total findings • CodeHawks • anonymousjoe

#16

high

Incorrect set up and logic of `referralInfoMap` in `SystemConfig::updateReferrerInfo` function

high

TokenManager - Unlimited withdraw

high

Taker of bid offer will loss assets without any benefit if he calls the DeliveryPlace::settleAskMaker() for partial settlement.

high

`DeliveryPlace::settleAskTaker` Has Incorrect Access Control

high

Formulaic Error Rounds Down Causing Total Loss Of Funds For Bid Takers During Abort

high

Malicious user can drain protocol by bypassing `ASK` offer abortion validation in `Turbo` mode

high

The `DeliveryPlace::settleAskTaker()` function mistakenly uses `makerInfo.tokenAddress` to update the `TokenBalanceType.PointToken` in the `userTokenBalanceMap` mapping, leading to a critical error.

high

[H-4] The function `PreMarkets::listOffer` charges an incorrect collateral amount, allowing users to manipulating collateral rates and drain the protocol's funds

high

listOffer maker can settle offer via settleAskMaker() in Turbo settle type.

high

Fund Withdrawal Flaw in preMarket Allows Users to Avoid Settlement Obligations

medium

Unnecessary balance checks and precision issues in TokenManager::_transfer

low

[Low-01] Missing Access Control in `CapitalPool::approve()` Function Allows any User to call it to set Allowance Amount `TokenContract` to `type(uint256).max`.

low

`listOffer` Unsafely References Fungible Identifiers

low

Validation of `collateralRate` in `PerMarkets::createOffer` function

low

CreateOffer allows eachTradeTax to be 100% ( 10000 bp ) violating code assumptions

Jul '24

TraitForge

TraitForge

581.99 USDC • 13 total findings • Code4rena • anonymousjoe

#9

high

`mintToken()`, `mintWithBudget()`, and `forge()` in the `TraitForgeNft` Contract Will Fail Due to a Wrong Modifier Used in `EntropyGenerator.initializeAlphaIndices()`

high

The maximum number of generations is infinite

high

Wrong minting logic based on total token count across generations

medium

Potential Uninitialized `entropySlots` Reading in `getNextEntropy`, Causing 0 Entropy Mint

medium

Users' ability to nuke will be DoSed for three days after putting NFTs up for sale and cancelling the sale

medium

Forger Entities can forge more times than intended

medium

Pause and unpause functions are inaccessible

medium

NFTs mature too slowly under default settings.

medium

`Golden God` Tokens can be minted twice per generation

medium

Each generation should have 1 "Golden God" NFT, but there could be 0

medium

Discrepancy between nfts minted, price of nft when a generation changes & position of `_incrementGeneration()` inside `_mintInternal()` & `_mintNewEntity()`

medium

TraitForgeNft: Generations without a golden god are possible

medium

Incorrect check against golden entropy value in the first two batches

Karak Restaking

Karak Restaking

711.16 USDC • 1 total finding • Code4rena • anonymousjoe

#9

high

Slashing NativeVault will lead to locked ETH for the users

MagicSea - the native DEX on the IotaEVM

MagicSea - the native DEX on the IotaEVM

6.13 USDC • 2 total findings • Sherlock • anonymousjoe

#54

high

User can vote even with remaining mlum staked time 0

medium

No restriction in number of BribeRewarders created by user