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

0xCiphky

Security Researcher

Contact Me

High

47

Total

Medium

2

Solo

50

Total

$48.40K

Total Earnings

#188 All Time

22x

Payouts

gold

1x

1st Places

silver

2x

2nd Places

bronze

1x

3rd Places

All

Code4rena

CodeHawks

Aug '24

Phi

Phi

312.07 USDC • 8 total findings • Code4rena • 0xCiphky

#9

high

Unrestricted Changes to Token Settings Allow Artists to Alter Critical Features

high

Reentrancy Vulnerability Allows Bypass of Cooldown, Leading to Unfair Reward Extraction Through Flash Loan

high

Signature replay in `createArt` allows to impersonate artist and steal royalties

medium

`PhiFactory:claim` Potentially Causing Loss of Funds If `mintFee` Changed Beforehand

medium

Refunds sent to incorrect addresses in certain cases

medium

Incorrect Fee Handling Prevents Protocol from Updating Fees

medium

Attacker can DOS user from selling shares of a credId

medium

PhiNFT1155 contracts continue sending fees/royalties to old protocol destination address

Fjord Token Staking

Fjord Token Staking

113.49 USDC • 2 total findings • CodeHawks • 0xCiphky

#13

medium

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

medium

Owner of a cancelled Sablier stream will be elegible for a full amount reward claim, due to a revert in `FjordStaking::onStreamCanceled(...)`

Jul '24

Munchables

Munchables

1,632.81 USDC • 5 total findings • Code4rena • 0xCiphky

silver

high

Single plot can be occupied by multiple renters

high

Failure to Update Dirty Flag in transferToUnoccupiedPlot Prevents Reward Accumulation On Valid Plot

high

in `farmPlots()` an underflow in edge case leading to freeze of funds (NFT)

high

Invalid validation in _farmPlots function allowing a malicious user repeated farming without locked funds

medium

Users can farm on zero-tax land if the landlord locked tokens before the LandManager deployment

Karak Restaking

Karak Restaking

5,403.35 USDC • 4 total findings • Code4rena • 0xCiphky

silver

high

Violation of Invariant Allowing DSSs to Slash Unregistered Operators

high

The operator can create a `NativeVault` that can be silently unslashable.

medium

Delayed Slashing Window and Lack of Transparency for Pending Slashes Could Lead to Loss of Funds

medium

Slashing’s will Always Fail In Some Cases

TempleGold

TempleGold

352.42 USDC • 3 total findings • CodeHawks • 0xCiphky

#10

medium

Not upadting `_totalAuctionTokenAllocation` when removing last auction config at cooldown leads to wrong accounting of `_totalAuctionTokenAllocation` and permanent lock of auction tokens

medium

Changes to vesting period is not handled inside `_getVestingRate`

low

TempleGold tokens cannot be recovered when a `DaiGoldAuction` ends with 0 bids

Apr '24

Renzo

Renzo

2,329.44 USDC • 9 total findings • Code4rena • 0xCiphky

#6

high

The amount of `xezETH` in circulation will not represent the amount of `ezETH` tokens 1:1

high

Incorrect withdraw queue balance in TVL calculation

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

Potential Arbitrage Opportunity in the xRenzoDeposit L2 contract

medium

Deposits will always revert if the amount being deposited is less than the bufferToFill value

medium

Not handling the failure of cross chain messaging

medium

Lack of slippage and deadline during withdraw and deposit

medium

Withdrawals and Claims are meant to be pausable, but it is not possible in practice

Mar '24

Ondo Finance

Ondo Finance

498.91 USDC • 1 total finding • Code4rena • 0xCiphky

#11

medium

Users can lose access to funds due to minimum withdrawal limits.

Feb '24

Wise Lending

Wise Lending

15,460.18 USDC • 3 total findings • Code4rena • 0xCiphky

#4

high

Exploitation of the receive Function to Steal Funds

medium

Lack of update when modifying pool fee

medium

First depositor inflation attack in `PendlePowerFarmToken`

AI Arena

AI Arena

132.18 USDC • 10 total findings • Code4rena • 0xCiphky

#39

high

Malicious user can stake an amount which causes zero curStakeAtRisk on a loss but equal rewardPoints to a fair user on a win

high

A locked fighter can be transferred; leads to game server unable to commit transactions, and unstoppable fighters

high

Since you can reroll with a different fighterType than the NFT you own, you can reroll bypassing maxRerollsAllowed and reroll attributes based on a different fighterType

high

Players have complete freedom to customize the fighter NFT when calling `redeemMintPass` and can redeem fighters of types Dendroid and with rare attributes

high

Player can mint more fighter NFTs during claim of rewards by leveraging reentrancy on the `claimRewards() function `

high

Fighters cannot be minted after the initial generation due to uninitialized `numElements` mapping

high

Non-transferable `GameItems` can be transferred with `GameItems::safeBatchTransferFrom(...)`

medium

NFTs can be transferred even if StakeAtRisk remains, so the user's win cannot be recorded on the chain due to underflow, and can recover past losses that can't be recovered(steal protocol's token)

medium

Constraints of dailyAllowanceReplenishTime and allowanceRemaining during mint() can be bypassed by using alias accounts & safeTransferFrom()

medium

Fighter created by mintFromMergingPool can have arbitrary weight and element

Jan '24

Salty.IO

Salty.IO

453.39 USDC • 6 total findings • Code4rena • 0xCiphky

#28

high

User can evade `liquidation` by depositing the minimum of tokens and gain time to not be liquidated

high

First Liquidity provider can claim all initial pool rewards

medium

changeWallets() can be confirmed immediately after proposalWallets() by manipulating activeTimelock beforehand

medium

DOS of proposals by abusing ballot names without important parameters

medium

Unwhitelisting does not clear _arbitrageProfits, so re-whitelisting may result in an unfair distribution of liquidity rewards.

medium

If there is only one USDS borrower, he can never be liquidated

Dec '23

The Standard

The Standard

2,620.86 USDC • 7 total findings • CodeHawks • 0xCiphky

bronze

high

Looping over unbounded `pendingStakes` array can lead to permanent DoS and frozen funds

high

swap fees going to the liquidation pool manager contract will be accounted for as part of the liquidation amount

medium

Divergence in the pricing method for collateral within the `calculateMinimumAmountOut()` may result in vaults transitioning into an uncollateralized state after executing swaps.

medium

Incorrect calculation of amount of EURO to burn during liquidation

medium

Removing assets in the `TokenManager` leads to major issues

low

Removal of approved token from token manager can lead to unintended liquidation of vaults

low

Incorrect value returned by position() function

Revolution Protocol

Revolution Protocol

238.23 USDC • 5 total findings • Code4rena • 0xCiphky

#26

high

Incorrect amounts of ETH are transferred to the DAO treasury in `ERC20TokenEmitter::buyToken()`, causing a value leak in every transaction

medium

Once EntropyRateBps is set too high, can lead to denial-of-service (DoS) due to an invalid ETH amount

medium

CultureIndex.sol#dropTopVotedPiece() - Malicious user can manipulate topVotedPiece to DoS the whole CultureIndex and AuctionHouse

medium

Bidder can use donations to get VerbsToken from auction that already ended.

medium

`encodedData` argument of `hashStruct` is not calculated perfectly for EIP712 singed messages in `CultureIndex.sol`

Nov '23

Panoptic

Panoptic

559.39 USDC • 1 total finding • Code4rena • 0xCiphky

#16

medium

removedLiquidity can be underflowed to lock other user's deposits

Oct '23

Steadefi

Steadefi

1,611.58 USDC • 7 total findings • CodeHawks • 0xCiphky

#8

high

`GMXVault` can be blocked by a malicious actor

high

Incorrect Execution Fee Refund address on Failed Deposits or withdrawals in Strategy Vaults

medium

`emergencyPause` does not check the state before running && can cause loss of funds for users

medium

Setter functions for core GMX contracts

medium

Missing minimum token amounts in the emergency contract functions allows MEV bots to take advantage of the protocols emergency situation

medium

Inaccurate Fee Due to missing lastFeeCollected Update Before feePerSecond Modification

medium

emergencyResume does not handle the afterDepositCancellation case correctly

The Wildcat Protocol

The Wildcat Protocol

13,133.89 USDC • 8 total findings • Code4rena • 0xCiphky

gold

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

When withdrawalBatchDuration is set to zero lenders can withdraw more then allocated to a batch

high

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

high

Borrowers can escape from paying half of the penalty fees by closing the market, and those remaining penalty fees will be covered by the lender who withdraws last

high

Borrower can drain all funds of a sanctioned lender

medium

Function WildcatMarketController.setAnnualInterestBips allows for values outside the factory range

medium

`create2WithStoredInitCode()` does not revert if contract deployment failed

medium

Blocked accounts keep earning interest contrary to the WhitePaper

Sep '23

DittoETH

DittoETH

2,752.02 USDC • 8 total findings • CodeHawks • 0xCiphky

#6

high

Users can avoid liquidation while being under the primary liquidation ratio if on the last short record

high

Flag can be overriden by another user

medium

Combining shorts can incorrectly reset the shorts flag

low

Incorrect check for cRation_MAX

low

Lack of Duplicate ID Check in combineShorts Function

low

Partial filled short does not reset liquidation flag after user gets fully liquidated, meaning healthy position will still be flagged if the rest of the order gets filled.

low

Missing minimum and maximum deposit checks for bridge contract interactions

low

Event in secondaryLiquidation could be misused to show false liquidations

Aug '23

Chainlink Staking v0.2

Chainlink Staking v0.2

86.42 USDC • Code4rena • 0xCiphky

#52

Dopex

Dopex

206.57 USDC • 5 total findings • Code4rena • 0xCiphky

#56

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`

high

`UniV3LiquidityAMO::recoverERC721` will cause `ERC721` tokens to be permanently locked in `rdpxV2Core`

medium

`sync` function in `RdpxV2Core.sol` should be called in multiple scenarios to account for the balance changes that occurs

veRWA

veRWA

146.07 USDC • 2 total findings • Code4rena • 0xCiphky

#27

high

Voters from VotingEscrow can vote infinite times in vote_for_gauge_weights() of GaugeController

high

If governance removes a gauge, user's voting power for that gauge will be lost.

Jul '23

Beedle - Oracle free perpetual lending

Beedle - Oracle free perpetual lending

15.82 USDC • 9 total findings • CodeHawks • 0xCiphky

#138

high

Tokens with less than 18 decimals allow for draining of funds

high

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

high

During refinance() new Pool balance debt is subtracted twice

high

[H-04] Lender#buyLoan - Malicious user could take over a loan for free without having a pool because of wrong access control

high

Fee on transfer tokens will cause users to lose funds

high

Token spending by Uniswap router doesn't get approved

medium

No expiration deadline leads to losing a lot of funds

medium

Lender contract can be drained by re-entrancy in `seizeLoan`

low

Rounding error risk in borrow() function in Lender.sol

CodeHawks Escrow Contract - Competition Details

CodeHawks Escrow Contract - Competition Details

329.35 USDC • 4 total findings • CodeHawks • 0xCiphky

#16

medium

Fee-on-transfer tokens aren't supported

medium

High - Funds can be lost if any participant is blacklisted

low

Constructor of `Escrow` should make sure that `buyer`, `seller`, `arbiter` are different from each other.

gas

The arbiter should not be either the buyer or the seller.

May '23

Maia DAO Ecosystem

Maia DAO Ecosystem

10.4 USDC • 1 total finding • Code4rena • 0xCiphky

#69

medium

Lack of slippage protection can lead to significant loss of user funds