Security Researcher
Full Stack Developer ⌨️ | BEng Computer Science 🖥️ | BSc Finance 🪙 | 🦅 at @CodeHawks | Web3 development & security enthusiast ⛓️
High
Total
Medium
Total
Total Earnings
#1303 All Time
Payouts
Top 10
Top 25
Top 50
All
Sherlock
Code4rena
CodeHawks
Feb '24
high
A locked fighter can be transferred; leads to game server unable to commit transactions, and unstoppable fighters
high
Non-transferable `GameItems` can be transferred with `GameItems::safeBatchTransferFrom(...)`
medium
Burner role can not be revoked
medium
DoS in `MergingPool::claimRewards` function and potential DoS in `RankedBattle::claimNRN` function if called after a significant amount of rounds passed.
Jan '24
Aug '23
Jul '23
high
Lender contract can be drained by re-entrancy in `setPool`
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
Stealing any loan opening for auction through others' lending pool
high
Token spending by Uniswap router doesn't get approved
high
A pool lender can fully drain another user's pool by abusing `buyLoan`
high
Hardcoded Router Address May Cause Token Lockup in Non-Standard Networks
high
Lender can Sandwich a borrower to seize his collateral
medium
The `borrow` and `refinance` functions can be front-run by the pool lender to set high interest rates
medium
Lender contract can be drained by re-entrancy in `seizeLoan`
medium
Lender contract can be drained by re-entrancy in `refinance` (collateral)
gas
Cannot use `_burn` Function in Beedle.sol Contract
90.91 USDC • 9 total findings • CodeHawks • sobieski
#18
medium
DSC protocol can consume stale price data or cannot operate on some EVM chains
medium
All of the USD pair price feeds doesn't have 8 decimals
medium
`liquidate` does not allow the liquidator to liquidate a user if the liquidator HF < 1
low
Improving the burnDsc() to allow users to mitigate their liquidation's impact
gas
Double checks
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
Constants should be be used for hardcoded values
gas
Redundant check for transfer success
gas
Misleading comment in DSCEngine._healthFactor