Security Researcher @QuillAudits_AI | Ambassador

🌏
Joined April 2014
I witnessed firsthand how a protocol could live with a live bug (and possibly never catch it) because there's no way to responsibly disclose these issues. In a review with @QuillAudits_AI , an RWA project had forked a portion of @DinariGlobal's code but requested we treat it as a black box. (Un)fortunately, I tend to digress when not working with code I'm familiar with -- and stumbled on a sizeable vulnerability in their codebase Thankfully it wasn't exploited before it was patched, but they had ~$3m at risk (which grew to $60m in less than 4 months), big liquidity injection in RWA's this year (and likely for the next few years)💰 While this isn't Yearn-scale, many small drops fill a barrel. Josselin has been talk about the need to beef up internal security -- this awareness is something I expect to grow as well, and this exploit is another example why (ty for your talk with Rajeev and Alex at DSS).
1
10
791
Our auditor @cryptanu is taking the stage at @summit_defi in Mumbai! Damn Vulnerable Daml: live CTF-style challenges built from real bugs he found on the Canton network while reviewing Daml code. Inspired by Ethernaut and Damn Vulnerable DeFi. 1st Nov, 02:30PM IST, Amber room Save it to your agenda: defisecuritysummit.org/2026/… See you there. 🛡️
2
4
1
21
642
🙌
Our auditor @cryptanu is taking the stage at @summit_defi in Mumbai! Damn Vulnerable Daml: live CTF-style challenges built from real bugs he found on the Canton network while reviewing Daml code. Inspired by Ethernaut and Damn Vulnerable DeFi. 1st Nov, 02:30PM IST, Amber room Save it to your agenda: defisecuritysummit.org/2026/… See you there. 🛡️
1
14
199
I had the best experience with the development of this tool when I saw our clients say it's one of the best tools aiding their continuous development. Win-win.
Scan your smart contracts before attackers do. We are opening beta access to QuillShield, our multi-agent auditor for EVM smart contracts, for the first 50 teams. October has made it clear that waiting is no longer an option. In the last few days alone: • PHP: pre-auth remote code execution, CVSS 9.2 • GitLab: CVSS 10, self-hosted servers back to 2014 • Node.js: 10 CVEs in one release • Railway: customer secrets accessed • LiteLLM: credential stealer shipped on PyPI AI helped find some of these bugs, and attackers have the same tools. A bug in a deployed smart contract can drain funds in a single transaction, so we built QuillShield to find them first. Here's what it has done so far: > 25 Critical or High vulnerabilities caught across 155 projects > 497 findings, with 85% of auditor-reviewed ones confirmed valid > 350,000+ lines of Solidity reviewed > 83.8% on EVMBench, against 45.6% for the best published model Here's the beta link: shield.quillaudits.com/
12
231
This reminds me of Cloudflare just a few months ago. At this point, APTs could be a well-funded attacker with a crazy amount of credits to spend.
If your deployer key was sitting in a Railway variable, who owns your contracts right now? Possibly the attacker. Railway was breached today. Their disclosure says an unauthorised party may have accessed customer environment variables and decrypted some of them. Railway thinks the target was AI inference keys. On-chain trackers say a sweeper script went through the same dump and hit 200+ addresses across 19+ EVM chains, around $371k as of Oct 21 evening UTC. Here is the part the “rotate your keys” advice skips. An API key has an issuer. You revoke it with OpenAI or Stripe or your database provider and get a new one. A private key has no issuer, so there is nothing to rotate. Once it has been read, that address is gone, and the balance in it is usually the least of what it controls. The same key is the owner, upgrader or minter on whatever contracts you pointed it at, and that is what the attacker can use next. So if you ran a bot, relayer, keeper, indexer or backend on Railway with a signing key in its variables, do these 5 things first, from a clean machine with a new key. None of them touch Railway, so you don’t have to wait for deploys to come back. 1. Treat every address whose private key or seed phrase was in a Railway variable as controlled by the attacker. Move what’s left and retire it. One key is the same address on every EVM chain, so check all of them, not just mainnet. The sweeper already did. 2. Find every contract where that address holds a role. Owner, admin, proxy upgrader, minter, pauser, oracle updater, guardian, relayer allowlist. Transfer each to a new address. Start with the deployer key, because in most codebases the account that deploys a contract becomes its default owner and nobody ever changes it. 3. If the key is a signer on a Safe or another multisig, replace it. Then check the threshold still makes sense without it. 4. Revoke token approvals. The ones that address granted, and the ones other addresses granted to it. 5. Set monitoring on the old addresses and on the attacker address in the first reply. A role the attacker hasn’t used yet can still be used. Then rotate the normal secrets. RPC keys, database passwords, registry credentials, AI API keys. Do it with the provider that issued them, because changing the value inside Railway does nothing to the old one. And go through services you stopped months ago. One engineering lead on X traced a stolen AWS key to a Railway service that had been idle since July. A stopped service keeps its variables. None of this is unusual practice, which is the uncomfortable part. At least one template on Railway’s own deploy page asks you to paste a 0x-prefixed wallet private key straight into a variable. Longer term, three things. A hot key on someone else’s platform holds a few hours of float and no admin roles at all. Admin roles sit behind a multisig with a timelock. If you can, sign through a KMS or HSM so the raw key is never in an env var in the first place. It is also worth running a key leak drill once, because the thing most teams discover mid-incident is that nobody can list which contracts a given key still controls.
6
150
If your deployer key was sitting in a Railway variable, who owns your contracts right now? Possibly the attacker. Railway was breached today. Their disclosure says an unauthorised party may have accessed customer environment variables and decrypted some of them. Railway thinks the target was AI inference keys. On-chain trackers say a sweeper script went through the same dump and hit 200+ addresses across 19+ EVM chains, around $371k as of Oct 21 evening UTC. Here is the part the “rotate your keys” advice skips. An API key has an issuer. You revoke it with OpenAI or Stripe or your database provider and get a new one. A private key has no issuer, so there is nothing to rotate. Once it has been read, that address is gone, and the balance in it is usually the least of what it controls. The same key is the owner, upgrader or minter on whatever contracts you pointed it at, and that is what the attacker can use next. So if you ran a bot, relayer, keeper, indexer or backend on Railway with a signing key in its variables, do these 5 things first, from a clean machine with a new key. None of them touch Railway, so you don’t have to wait for deploys to come back. 1. Treat every address whose private key or seed phrase was in a Railway variable as controlled by the attacker. Move what’s left and retire it. One key is the same address on every EVM chain, so check all of them, not just mainnet. The sweeper already did. 2. Find every contract where that address holds a role. Owner, admin, proxy upgrader, minter, pauser, oracle updater, guardian, relayer allowlist. Transfer each to a new address. Start with the deployer key, because in most codebases the account that deploys a contract becomes its default owner and nobody ever changes it. 3. If the key is a signer on a Safe or another multisig, replace it. Then check the threshold still makes sense without it. 4. Revoke token approvals. The ones that address granted, and the ones other addresses granted to it. 5. Set monitoring on the old addresses and on the attacker address in the first reply. A role the attacker hasn’t used yet can still be used. Then rotate the normal secrets. RPC keys, database passwords, registry credentials, AI API keys. Do it with the provider that issued them, because changing the value inside Railway does nothing to the old one. And go through services you stopped months ago. One engineering lead on X traced a stolen AWS key to a Railway service that had been idle since July. A stopped service keeps its variables. None of this is unusual practice, which is the uncomfortable part. At least one template on Railway’s own deploy page asks you to paste a 0x-prefixed wallet private key straight into a variable. Longer term, three things. A hot key on someone else’s platform holds a few hours of float and no admin roles at all. Admin roles sit behind a multisig with a timelock. If you can, sign through a KMS or HSM so the raw key is never in an env var in the first place. It is also worth running a key leak drill once, because the thing most teams discover mid-incident is that nobody can list which contracts a given key still controls.
11
4
10
34
7,838
Anu retweeted
Railway is compromised and reports are that attackers are actively draining keys. Rotate any API keys stored in railway immediately. Deployments are down so unfortunately this means many deployments will wind up broken, but it is better than the alternative. Internet D-Day
105
155
36
780
104,320
3 criticals. 17 highs. 30 days. That was September for our audit team at @QuillAudits_AI. One of the criticals would have let one side of an ETH to TRON swap keep their coins and take the other side's, given 30 minutes of patience. Here's what it was, and how we caught it 👇
6
5
1
19
763
Even a tiny change to a composed library or contract affects upstream code significantly. Not being able to recognize and trace the impact of these changes is the introduction of a new series of bugs. Glad to share we've been developing the best mitigation to this in-house!
8 years of auditing smart contracts. Thousands of findings. And the same pattern every time: the code was done, the audit was next, the launch was waiting. We built something that reviews the code while it's still being written. First look at QuillShield. The most powerful AI security reviewer for onchain code we've ever built. It reviews every pull request with the full context of your protocol, starting from a complete audit of it. Opening a small beta. DM for access.
1
14
345
Excited to announce that I will speak at DSS this year in Mumbai on 1–2 November. In my session, I will present the gamification of Daml contracts, and how to find those failures before an attacker does. Thank you @summit_defi and @QuillAudits_AI Register: luma.com/9qtxqqxx
On the DSS 2026 agenda: @cryptanu of QuillAudits. “Damn Vulnerable Daml” Explore the talk, then add it to My agenda: defisecuritysummit.org/2026/… Join us in Mumbai: luma.com/9qtxqqxx
9
26
446
Visited an Ethereum Community Hub today and met Gbenga hard at work with ZK. Is Ikorodu on Lagos life too? 😅 Thanks for having me, Web3Bridge!
11
156
Anu retweeted
I’ve been researching @Zcash security as part of our internal work at @osec_io. Today, I’m happy to share that the total amount I’ll be receiving in bug bounties from @Zcash has finally been confirmed at $972K. I’m really proud of what came out of this research. More importantly, I’m glad our work contributed to improving Zcash’s security and got more security researchers interested in Zcash. It’s especially great to see that many researchers are still looking into Zcash, finding and reporting bugs, and keeping an eye on its security. Huge thanks to the teams across the Zcash ecosystem, including @Zcash, @zodl_co, @ZcashFoundation, @ValarGroup, @ShieldedLabs, @TachyonZcash, and @ZcashCommGrants, for taking security seriously and rewarding researchers, and to the entire Zcash community for all the support. I’ll keep doing my best to find more bugs.
82
46
8
926
65,625
AI has solved security but somehow we have more work to do than ever before
14
3
3
61
3,975
🛠️✅
With Devcon coming up and attackers actively looking for opportunities through social engineering, it is important to have a security checklist before you travel, while you are there and after you come back. Here is what I would keep in mind:
2
101
We’re starting Quill Findings 🥷 Detailed write-ups of real issues from client audits. What we caught, why it mattered, and what the fix was. First one: Eligibility Replay in Tokenized Assets. A gold-backed vault where the bar left and the custody certificate did not. That leftover NFT minted a second claim. Full breakdown below 👇
2
3
16
754
Another week to be world-class 👏
5
3
1
30
546
This critical severity issue would have caused permanent asset loss. It proves really useful (time and time again) to not overlook an external audit before going to production. ERC4626 vaults are interesting DeFi use-case. Adding on delays to make vault functionality asynchronous increases the surface of risk and trust assumptions. For this audit, we consumed lots of resources on ERC7575 and ERC7540 to understand the tweaks made to the regular vault mechanism. Happy to lend an unbiased pair of eyes to any developers pushing new changes. Reach out and I'll connect you to the best auditors on the team @QuillAudits_AI .
Another audit wrapped at @QuillAudits_AI . 10 findings: 1 Critical, 5 Medium, 4 Low.
1
6
123
Getting licensed in Dubai is the easy part. VARA doesn't shut down the projects that get hacked, it shuts down the ones that can't prove they were protected. The 7 things that have to be in place before you go live👇
3
17
626
OpenAI is closing the door to new subscribers on its $200/month ChatGPT Pro plan. Starting yesterday, September 10, @OpenAI is temporarily pausing new sign-ups and upgrades to Pro 20x. Existing subscriptions will continue to renew, and the $100 Pro plan remains available. The catch: If you cancel or downgrade and let the change take effect, you can't get the $200 plan back until the pause is lifted. You can still reverse a scheduled cancellation before your billing cycle ends. No reopening date is given. For anyone relying on the highest usage limits, that's a pretty consequential change.
3
143
RWA security is not an ERC-20 review with extra steps. $38B already live. $355B represented. Almost all of it sits on three standards: 3643: identity + freeze/force 4626: share price + rounding 7518: partitions + lock math This is the attack surface. Checklists in the thread 👇
On-chain RWAs have crossed $38B in distributed assets, representing $355B in assets and reaching 2.9M holders. All of that value runs on a handful of token standards. Each one has a live attack surface, and the industry is short on people who can find the bugs. We wrote the checklists. 🧵
2
5
1
26
1,654