Payouts
1st Places
2nd Places
3rd Places
All
Sherlock
Code4rena
Immunefi
Apr '24
medium
low
Feb '24
medium
low
Mar '23
high
When rolling over, user will lose his winnings from previous epoch
high
Depositor can totally bypass deposit fee using deposit queue
high
Rollover mechanism doesn't update the queue index counter after removing item from queue
high
When updating an existing rollover queue entry, `ownerToRollOverQueueIndex` will point to wrong place
medium
A null epoch can be resolved using `triggerEndEpoch`, thereby losing user funds
medium
`mintRollovers` might automatically generate bad rollover entries in which `assets<=relayerFee`, resulting in rollover bricking
medium
Emissions would be lost in null epochs
Oct '22
high
Infinite minting is possible for markets who don't support all protocols
high
Attacker can steal funds from redemptions by minting matured PTs
high
Minting iPTs through iPTs will inflate iPT's totalSupply and mess up accounting
high
Reentrancy in lending functions allows attacker to mint infinite amount of iPTs
high
User-supplied AMM pools and no input validation allows stealing of stEth protocol fees
high
`authRedeem` and `autoRedeem` do not check if the market is paused
high
`ERC5095.redeem/withdraw` do not work before token maturity
high
Reentrancy in redemption methods can lead to total bricking of Sense redemption
medium
Wrong slippage control in `ERC5095.mint` will make user get less tokens than deserved
medium
Protocol will lose fees when lending on Swivel and swapping in YieldPool
medium
Extra minting after `yield()` function causes iPT supply inflation and skewed accounting
Jul '22
high
Proposal which started buyout which fails is able to settle migration as if its buyout succeeded.
high
Fund will be stuck if a buyout is started while there are pending migration proposals
high
Division rounding can make fraction-price lower than intended (down to zero)
high
Migration: no check that user-supplied `proposalId` and `vault` match
high
Migration::withdrawContribution falsely assumes that user should get exactly his original contribution back
high
Migration's `leave` function allows leaving a committed proposal
high
Cash-out from a successful buyout allows an attacker to drain Ether from the `Buyout` contract
high
Malicious User Could Burn The Assets After A Successful Migration
high
```migrateFractions``` may be called more than once by the same user which may lead to loss of tokens for other users
medium
An attacker can DoS vault's buyout with as little as 1 wei per 4 days
medium
A VAULT OWNER CAN FRONTRUN A PLUGIN CALL AND CHANGE ITS IMPLEMENTATION
Jun '22
high
Allowance check always true in ERC5095 redeem
high
Redeemer.redeem() for Element withdraws PT to wrong address.
high
Tempus lend method wrongly calculates amount of iPT tokens to mint
high
Redeem Sense can be bricked
high
ERC5095 redeem/withdraw does not update allowances
high
Lender: no check for paused market on mint
high
Incorrect implementation of APWine and Tempus `redeem`
high
Unable to redeem from Notional
high
Able to mint any amount of PT
high
Funds may be stuck when `redeeming` for Illuminate
high
Illuminate PT redeeming allows for burning from other accounts
high
[H-05] Not minting iPTs for lenders in several lend functions
high
Pendle Uses Wrong Return Value For `swapExactTokensForTokens()`
medium
Swivel lend method doesn't pull protocol fee from user
medium
Lend method signature for illuminate does not track the accumulated fee
medium
sellPrincipalToken, buyPrincipalToken, sellUnderlying, buyUnderlying uses pool funds but pays msg.sender
medium
[M-01] Easily bypassing admins 'pause' for swivel
medium
`Lender.mint()` May Take The Illuminate PT As Input Which Will Transfer And Mint More Illuminate PT Cause an Infinite Supply
medium
Centralisation Risk: Admin Can Change Important Variables To Steal Funds
May '22
high
RubiconRouter _swap does not pass whole amount to RubiconMarket
high
RubiconRouter: Offers created through offerWithETH() can be cancelled by anyone
medium
USDT is not supported because of approval mechanism
medium
Strategists can't be removed
medium
previewWithdraw calculates shares wrongly
medium
Strategists can take more rewards than they should using the function strategistBootyClaim().
medium
No cap on fees can result in a DOS in BathToken.withdraw()
medium
Possible token reentrancy in release() of BathBuddy.sol
medium
Use `safeTransfer()`/`safeTransferFrom()` instead of `transfer()`/`transferFrom()`
medium
Use `call()` instead of `transfer()` when transferring ETH in RubiconRouter
high
MerkleVesting withdrawal does not verify that tokens were transferred successfully
high
SpeedBumpPriceGate: Excess ether did not return to the user
medium
Malicious token reward could disable withdrawals
medium
amount requires to be updated to contract balance increase (1)
medium
ERC20 tokens with different decimals than 18 leads to loss of funds
Apr '22
Feb '22
Jan '22
Dec '21
Nov '21
medium
Frontrunning `PublicLock.initialize()` can prevent upgrades due to insufficient access control
medium
Support of different ERC20 tokens
medium
MixinPurchase:shareKey allows to generate keys without purchasing
medium
Key buyers will not be able to get refund if lock manager withdraws profits
medium
Refund mechanism doesn't take into account that key price can change
medium
Missing maxNumberOfKeys checks in shareKey and grantKey
medium
Key transfer will destroy key if from==to
Oct '21
Sep '21