https://sherlock-files.ams3.digitaloceanspaces.com/twitter_images/9179d3ac-ffc8-456e-9a94-0059b141456c.png

duc

Security Researcher

Smart contract developer and security researcher

Contact Me

High

15

Total

Medium

3

Solo

19

Total

$17.06K

Total Earnings

#383 All Time

8x

Payouts

silver

1x

2nd Places

regular

4x

Top 10

regular

6x

Top 25

All

Sherlock

Feb '24

Tapioca

Tapioca

10,834.31 USDC • 13 total findings • Sherlock • duc

#4

high

`_computeClosingFactor` function will return incorrect values, lower than needed, because it uses `collateralizationRate` to calculate the denominator

high

Liquidation without bad debt doesn't update totalBorrow of market

high

The borrowing approval of the market is risky for users, as the spender can steal unlimited funds of user with a small allowance

high

Liquidation's caller in the market can avoid fees

high

`SGLLiquidation._extractLiquidationFees()` function transfers fee shares directly to Penrose, resulting in these fees being stuck

medium

`totalBorrow.elastic` can exceed the totalBorrowCap, resulting in the risk of overflow in `_accrue()` function due to an incorrect limit cap of extraAmount.

medium

Using wrong token for the approve action in the `buyCollateral` function

medium

`buyCollateral` function pass a `false` value of skim param for adding collateral

medium

Depositing incorrect tokens in the `BBLeverage.sellCollateral` function

medium

The repaying action in `BBLeverage.sellCollateral` function pulls YieldBox shares of asset from wrong address

medium

`leverageAmount` is incorrect in `SGLLeverage.sellCollateral` function due to calculation based on the new states of YieldBox after withdrawal

medium

The mismatch between leverage executor contracts and the utilized interface in market

medium

`getCollateral` and `getAsset` functions of the AssetTotsDaiLeverageExecutor contract decode data incorrectly

Jul '23

Tokemak

Tokemak

2,303.15 USDC • 6 total findings • Sherlock • duc

#12

high

`_withdraw` function of `LMPVault` contract updates idleIncrease wrongly

high

Incorrect handling of ETH when interacting with the `LMPVaultRouterBase.deposit()`

high

Absence of `params.sellToken` transfer from `LiquidationRow` to `asyncSwapper` during liquidation process

high

Maverick oracle can be manipulated

high

Sender can lose more tokens when attempting to call function `AbstractRewarder.queueNewRewards()`

medium

Incorrect handling of Stash Tokens within the `ConvexRewardsAdapter._claimRewards()`

Jun '23

RealWagmi

RealWagmi

2,845.13 USDC • 3 total findings • Sherlock • duc

silver

high

The `_estimateWithdrawalLp` function might return a very large value, result in users losing significant incentives or being unable to withdraw from the Dispatcher contract

high

The `getAmountOut` function in Multipool contract might be permanently unactive or manipulated with low liquidity pools

medium

The fees are incorrectly updated in the `_deposit` and `_withdraw` functions, which allows the attacker to break the protocol fees

Apr '23

Teller

Teller

147.36 USDC • 5 total findings • Sherlock • duc

#32

high

Because of unrestricted permissions for who can commit collateral to a loan, attackers can potentially drain borrowers' funds

medium

Fee-on-transfer tokens will be unable to used as collateral

medium

When the loan can be liquidated, anyone can withdraw on behalf of the lender, even if it is not authorized by the lender.

medium

The owner of the marketplace can execute a sandwich attack and steal the funds of the users

medium

The malicious owner of TellerV2 contract can steal the funds of user

Mar '23

Gitcoin

Gitcoin

79.39 USDC • Sherlock • duc

#39

Taurus

Taurus

213.98 USDC • 2 total findings • Sherlock • duc

#8

high

Wrong calculation of collateral ratio with the collateral tokens which are not in decimals 18

medium

The function `burnFrom` of token TAU is incorrect, leading to the vault can mint only a part of its limit

Feb '23

Hats

Hats

524.83 USDC • 4 total findings • Sherlock • duc

#10

high

Function `reconcileSignerCount` updates wrong threshold, leads to freezing safe’s actions

medium

When all signers of the gate lose their hats, `reconcileSignerCount` will not update threshold, then `targetThreshold` can be updated to be lower than the current threshold during here, leads to freeze safe's actions.

medium

Function `_removeSigner` updates incorrect signerCount and threshold

medium

Signers can have a free signature to execute transaction of safe if address(0) if a valid wearer.

Jan '23

UXD Protocol

UXD Protocol

116.77 USDC • 1 total finding • Sherlock • duc

#24

medium

Inconsistent decimals of the param `amount` of function `_placePerpOrder` in contract `PerpDepository`