
Senior Blockchain Security Researcher. Move/EVM/Rust. #15 All time Cantina Leaderboard. Founder @VulsightSec
Joined December 2014
- Tweets494
- Following574
- Followers1.7K
- Likes258
Pinned Tweet
$300,000 from a single bounty.
Also yes, it was Move related.
Move helps, but it doesn’t magically make protocols safe.
The real bugs still live in assumptions, invariants, and integrations.
Proud of what VulSight has been doing too. We’ve cleared over $500k in bounties in the last 2 months.
If you’re a founder and you want an audit team that consistently finds criticals, we’re a DM away.
Big congratulations to @VulsightSec for scoring their very first paid report on Immunefi.
And it's huge, huge payout.
Well done!
You can pledge behind them here to earn IMU when they find bugs:
immunefi.com/pledge/vulsight…
Would be in Singapore Oct 1–12 for TOKEN2049, focused on agentic finance.
AI agents will increasingly move real money onchain and an agent’s judgment is not a security control.
At @vulsightsec, we secure agents that transact.
If you’re building in this space, let’s talk. Dinners on me.
#TOKEN2049 #AgenticFinance
5
14
743
BREAKING: White House announces solution to AI existential risk. Only Google will be allowed to develop frontier AI. Humanity is expected to survive.
After doing extensive Bug Bounty and interacting with dozens of protocols. In the Infra Space among the major blockchains, I believe only these protocols (currently) actually care about security:
1. Solana
2. Ethereum
3. Monad
4. Sei
Most of the other blockchains don't care about either security or respecting whitehats.
Suppose we have a critical drain vulnerability that two whitehats find at the same time.
One reports it to the bbp.
Meanwhile when the report is being reviewed, the other whitehat executes a whitehat attack to secure the funds.
Who gets the bounty 👀
Personal security tip (that may or may not work)
Always keep a small amount like 100 USDC in your MetaMask wallet. So you would likely know if your PC is compromised.
Likewise for a hardware wallet, store funds using a pass phrase. While keeping a small amount of funds in the default wallet.
3
24
1,996
The first place I look in any lending protocol isn’t the interest rate model. It isn’t the oracle.
It’s the liquidation logic.
Blacklisted collateral token. Transfer reverts. Liquidation blocked. Bad debt can accumulate silently.
Zero-amount interaction. Revert. Position can become stuck permanently.
Multi-asset basket where a partial liquidation removes the highest-LTV asset and the health score worsens instead of improving.
Three edge cases. Each one worth treating as high severity until proven otherwise.
One question decides everything: “Can this position ever reach a state where liquidation reverts or fails to improve solvency?”
If yes, the protocol may have a trapped bad debt path. It just doesn’t know it yet.
If your protocol has liquidations and you haven’t tested what happens when they can’t execute, that’s one of the first places I’d look for a critical.
Response to a critical report in a bug bounty that would have caused losses of 8 figures dependent on a feature that was to be activated in 2 weeks.
"The finding even though critical is not valid for a payout as the deployment is 2 weeks away and we would fix the bug before deployment"
MF how would you even would have fixed it in the first place if I didn't report it??
Your Stack Is Split Across Move, EVM, Rust, and ZK
4 ecosystems. Each fails in very different ways.
1. EVM → reentrancy variants + accounting/invariant bugs
2. Move → resource lifecycle bugs + cross-module interaction failures.
3. ZK → under-constrained circuits.
4. Rust on Solana → PDA validation gaps + CPI guard bypasses.
A generalist who's "pretty good" at four ecosystems misses the bugs specialists catch. One ecosystem specialist can't help you when your stack spans two.
If your protocol spans more than one ecosystem and needs a team that can audit across the full stack. Feel free to reach out to us.
Audits happen. Reports get filed. Protocols still get drained.
This is why I only work with teams that treat security as survival, not marketing.
There are a lot of reasons this keeps happening:
• The team gets the audit report and fixes the Highs. marks everything else as "acknowledged." ships.
• "Acknowledged" means "we read it and accepted the risk" but actually means "we don't have time and the deadline is Friday"
• The patch for the critical finding introduces a new vulnerability in the fix. Nobody reviewed the remediation. they just assumed patching was safe.
• The audit covered commit abc123. The deployment was committed by xyz789. six new functions added after the audit completed. Nobody mentioned it.
• Six months after launch there's a new integration. no re-audit. the integration is 40% of the attack surface.
• The economic exploit that drained everything wasn't in the code. The code was correct. The math was wrong. The audit reviewed code. not economics.
• Leadership says "we can't afford a longer audit" then spends 20x the audit cost on the launch marketing campaign
• The post-mortem after the hack says "we have now engaged additional security partners." the new partners review the same codebase. Nobody asks why the first audit missed it.
Every one of these is fixable.
We don't sign off until the deployed commit matches the audited commit.
And we treat "acknowledged" findings like ticking time bombs, because that's what they are.
If you want an audit team that solves the problems above instead of contributing to them,DM us at @VulSightSec .
For a protocol with a bug bounty on multiple platforms, Which one would you use to submit your Crit/High? And Why?
58%Immunefi
42%Hackenproof/Cantina
108 votes • Final results 5
16
1,970
Three years ago I submitted my first Web3 contest entry on Code4rena.
Found one QA issue. Thought maybe I'd chosen the wrong career path.
This year I collected $300,000 from a single critical bug report.
This space rewards depth and patience in ways I didn't fully understand when I started.
Everyone thinks they understand flash loan attacks.
Most don't.
Most people think flash loans are about the money. Borrow millions. Manipulate a price. Return the loan. Pocket the difference.
That's the surface.
What if the attack isn't related to the capital. What if it utilizes the state manipulation that the capital enables within a single transaction.
Beanstalk. April 2022. $182 million.
The attacker didn't exploit a price oracle. They used the flash loan to temporarily acquire governance control. Passed a malicious proposal. Drained the treasury.
In one transaction.
The vulnerability wasn't in the flash loan mechanics. It wasn't even in the price feed. It was in the assumption that governance proposals couldn't be executed within a borrowing window.
I found a similar governance timing assumption in a recent audit. The protocol had a 24-hour timelock on proposals. No protection against flash-loan-powered quorum acquisition. The team had reviewed every oracle interaction. They hadn't considered that an attacker could borrow their way into governance power.
Never audit flash loan surfaces by just looking at the surface.
Audit what the loan temporarily makes possible.
Recently, saw some chatter about how total payouts vary across web3 bug bounty platforms.
So I compared the top 10 earners on each:
Immunefi: $55.3M
HackenProof: $6.3M
Cantina: $1.5M
Immunefi is ~8.8x HackenProof.
HackenProof is ~4.2x Cantina.
Curious how much of this is:
- platform maturity
- deal flow
- private vs public payouts
- where top researchers choose to spend time
(Note some of these numbers could be inaccurate as I calculated these numbers on publically available information in the leaderboards)
Food for thought:
Web3 founders are being ripped off by AI tools.
These tools are sold to founders as the answer to smart contract security.
The protocols buying them are becoming the next “$100M stolen” case studies.
In the past eighteen months, multiple protocols launched after AI-assisted security review flagged zero critical findings. Human researchers reviewing the same code post-exploit found the vulnerability in under two hours. The AI did not miss it because the AI was wrong.
The AI missed it because the vulnerability lived in the economic assumptions underneath the code. Not in the code itself.
AI tools audit what is written. They cannot audit what was assumed.
The false confidence created by a clean AI report is not neutral. It is actively dangerous. A team that receives "no critical findings" from an automated tool ships with certainty. No human review scheduled. No invariant testing campaign. The tool already checked it.
Except the tool optimized for pattern matching. And the exploit required understanding intent.
Now imagine this playing out across an ecosystem where reducing audit cost is a competitive pressure. Where "AI-assisted security review" becomes an industry norm. Where founders can't distinguish between a tool that found nothing dangerous and a tool that couldn't see the danger that existed.
AI tool companies are selling "automated security coverage" to protocols. Protocol teams are buying it to ship faster and cheaper. Attackers are actively cataloguing the vulnerability classes these tools consistently miss and building their exploit playbooks around exactly those gaps.
Three different actors. Three different incentives. All producing the same outcome.
The attack surface AI tools cannot see is the attack surface that will be exploited.
The teams purchasing AI audit tools are not solving their security problem.
They are paying to feel like they did
I was six days into an audit when I stopped reading the code.
The protocol was clean. Good architecture. Solid access controls. Consistent naming. The kind of codebase that makes most auditors write "no critical findings" and move on.
I didn't write that.
Instead I opened a blank document and wrote one sentence: "How would I steal everything in this contract right now?"
Then I spent the next twelve hours answering that question.
Most auditors review your code looking for mistakes. I review your code trying to drain it. Different starting point. Completely different findings.
When I work through a codebase, I don't start at line one. I start at the withdraw function. The transfer function. The liquidation function. Any function that moves value.
Then I ask: what sequence of calls would let an attacker walk away with everything?
This approach doesn't catch more bugs. It catches more criticals. Because critical vulnerabilities don't look like bugs. They look like features used in the wrong order.
If you're shipping soon and want someone who hunts for the drain before an attacker does, DM us at @VulsightSec
Spent 3 days building a proof of concept for a critical in a bug bounty. Full exploit chain.
Exact steps showing how to drain the pool.
Marked duplicate. Another researcher submitted the same finding hours before me.
72 hours of work. Zero payout.
On to the next one.
The exploit that drains your protocol probably won't be sophisticated.
It will be a single missing check.
A function that accepts arbitrary token addresses without a whitelist. An attacker deploys a malicious contract that returns inflated price data. Uses it as collateral. Borrows real assets. Drains the pool.
The fix is one line of code. A whitelist check on accepted collateral addresses.
This exact pattern shows up constantly. In lending protocols. In liquidation functions. In any system that trusts external token inputs without validation.
I've caught this pattern in pre-deployment audits. The teams that had it reviewed avoided catastrophic loss. The ones that didn't are the ones you read about.
The difference between a multimillion dollar loss and a $0 loss is often just one review by someone who's seen the pattern before.
How many protocols are live right now with this same vulnerability


