https://sherlock-files.ams3.digitaloceanspaces.com/twitter_images/1acefc88-b06c-43d3-9a27-900a26036921.jpg

Schnilch

Security Researcher

Smart Contract Auditor

Contact Me

High

23

Total

Medium

1

Solo

21

Total

$56.48K

Total Earnings

#158 All Time

18x

Payouts

gold

1x

1st Places

regular

9x

Top 10

regular

12x

Top 25

All

Sherlock

Code4rena

CodeHawks

Immunefi

Apr '25

Cabal Liquid Staking Token

Cabal Liquid Staking Token

7,560.73 USDC • Code4rena • TheSchnilch

gold
BitVault

BitVault

650.53 USDC • 1 total finding • Code4rena • TheSchnilch

#5

medium

The current implementation is incompatible with `WBTC` as collateral token

Mar '25

Symmio, Staking and Vesting

Symmio, Staking and Vesting

1,156.91 USDC • 1 total finding • Sherlock • Schnilch

#4

medium

Readding the reward token causes userRewardPerTokenPaid to be incorrect for some users, resulting in them receiving too many rewards.

Feb '25

SEDA Protocol

SEDA Protocol

528.57 USDC • 2 total findings • Sherlock • Schnilch

#13

high

A validator can reuse their signature multiple times to post a batch with low voting power on Secp256k1ProverV1

high

batchSender can be a smart contract without the ability to receive native tokens, which would DOS postResult because the fee transfer would fail

Jan '25

Peapods

Peapods

1,726.45 USDC • 6 total findings • Sherlock • Schnilch

#11

medium

The attacker can steal rewards from AutoCompoundingPodLP because in _processRewardsToPodLp, the rewards from TokenRewards are not distributed

medium

Attacker can steal rewards in AutoCompoundingPodLp because he can revert the compounding with slippage

medium

The attacker can steal rewards from spTKNs because they can influence the fee processing by making a direct token transfer to the pod when the fees are below the minimum

medium

Pods with `hasTransferTax` set to `true` have an incorrect `totalSupply` because the burn fee is applied recursively to itself

medium

Swapping in _acquireBorrowTokenForRepayment is not working when the sell fee is enabled because the swap does not support fee-on-transfer tokens

medium

Transferring of _userProvidedDebtAmtMax does not work in _acquireBorrowTokenForRepayment because _props.sender is never set, which leads to a transferFrom call from address(0), causing the transaction to revert

Plaza Finance

Plaza Finance

12.62 USDC • 3 total findings • Sherlock • Schnilch

#74

high

`transferReserveToAuction` uses the wrong period, which is why `endAuction` will always fail, and the bidders' bids will be locked

high

An attacker can get many shares with a flashloan within one transaction and thus receive a lot of rewards and cause auctions to fail without having to permanently deposit reserve tokens.

medium

There are shares in a period with failed auctions, which leads to some users receiving rewards from other users from successful periods

Dec '24

SecondSwap

SecondSwap

113.34 USDC • 2 total findings • Code4rena • TheSchnilch

#24

high

In `transferVesting`, the `grantorVesting.releaseRate` is calculated incorrectly, which leads to the sender being able to unlock more tokens than were initially locked.

high

Users can claim more that their actual allotment

Aug '24

IOP | ThunderNFT

IOP | ThunderNFT

2,331 USDC • 2 total findings • Immunefi • Schnilch

#9

high

Finding not yet public.

high

Finding not yet public.

Jun '24

Attackathon | Fuel Network

Attackathon | Fuel Network

27,366 USDC • 5 total findings • Immunefi • Schnilch

#8

high

Finding not yet public.

high

Finding not yet public.

medium

Finding not yet public.

low

Finding not yet public.

low

Finding not yet public.

Apr '24

DYAD

DYAD

282.08 USDC • 6 total findings • Code4rena • TheSchnilch

#42

high

Design flaw and mismanagement in vault licensing leads to double counting in collateral ratios and positions collateralized entirely with kerosine

high

Users can get their Kerosene stuck until TVL becomes greater than Dyad's supply

high

User can get their Kerosene stuck because of an invalid check on withdraw

high

Unable to withdraw Kerosene from `vaultmanagerv2::withdraw` as it expects a `vault.oracle()` method which is missing in Kerosene vaults

high

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

medium

Incorrect deployment / missing contract will break functionality

Mar '24

Acala

Acala

1,175.02 USDC • 1 total finding • Code4rena • TheSchnilch

#6

medium

Unbond_instant removes incorrect amount of shares

Feb '24

HydraDX

HydraDX

7,861.35 USDC • 1 total finding • Code4rena • TheSchnilch

#4

medium

Re-adding assets to the omnipool can cause a problem with the oracle

Dec '23

Ethereum Credit Guild

Ethereum Credit Guild

368.24 USDC • 6 total findings • Code4rena • TheSchnilch

#35

high

The userGaugeProfitIndex is not set correctly, allowing an attacker to receive rewards without waiting

high

Users staking via the `SurplusGuildMinter` can be immediately slashed when staking into a gauge that had previously incurred a loss

medium

Wrong ProfitManager in GuildToken, will always revert for other types of gauges leading to bad debt

medium

`totalBorrowedCredit` can revert, breaking gauges.

medium

Incorrect calculations in debtCeiling

medium

LendingTerm::debtCeiling() can return wrong debt as the min() is evaluated incorrectly

Nov '23

Kelp DAO | rsETH

Kelp DAO | rsETH

7.42 USDC • 1 total finding • Code4rena • TheSchnilch

#51

high

The price of rsEHT could be manipulated by the first staker

Oct '23

Steadefi

Steadefi

2,267.36 USDC • 5 total findings • CodeHawks • schnilch

#6

high

try-catch does not store the state when it is reverted

high

`GMXVault` can be blocked by a malicious actor

high

User can revert processWithdraw

medium

Incorrect state transition may cause vault in stuck

medium

Token injection leads to unintended behavior of vault

Sep '23

DittoETH

DittoETH

3,031.76 USDC • 3 total findings • CodeHawks • schnilch

#4

high

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

high

User's can loose collateral when exiting a short

low

Event in secondaryLiquidation could be misused to show false liquidations

Aug '23

Sparkn

Sparkn

11.16 USDC • 4 total findings • CodeHawks • schnilch

#53

medium

Malicious/Compromised organiser can reclaw all funds, stealing work from supporters

low

Lack of checking the existence of the Proxy contract

low

Centralization Risk for trusted organizers

low

Insufficient validation leads to locking up prize tokens forever

Jul '23

Foundry DeFi Stablecoin CodeHawks Audit Contest

Foundry DeFi Stablecoin CodeHawks Audit Contest

24.83 USDC • 5 total findings • CodeHawks • schnilch

#59

medium

Anyone can burn **DecentralizedStableCoin** tokens with `burnFrom` function

low

Lack of events for critical actions

gas

`++i`/`i++` should be `unchecked{++i}`/`unchecked{i++}` when it is not possible for them to overflow, as is the case when used in `for`- and `while`-loops

gas

Spelling errors

gas

Prefer array assignment over pushing elements in for-loops