Cover photo

Triaged, Reproduced, and Discarded: The Dark Side of Web3 Bug Bounties

At 17, I found a zero-day in a major blockchain's core infrastructure. Instead of a bounty, I was silenced by an automated spam filter. Here is the censored story of my research journey.

A deep dive into the research process, the thrill of discovery, and the harsh reality of responsible disclosure in modern bug bounty programs.

Most 17-year-olds are worrying about university applications or finishing high school projects. I was spending my nights reading the Ethereum Yellow Paper, spinning up local Cosmos testnets, and tracing EVM state transitions line by line.

Security research isn’t just about running automated scanners and waiting for a CVE to pop up. It’s about understanding the fundamental physics of the virtual machine. Recently, that curiosity led me to a critical, zero-day vulnerability in a core infrastructure component of the Cosmos ecosystem—a flaw that bypassed explicit security policies and allowed unauthorized smart contracts to manipulate vital network consensus parameters.

I did everything right. I built a meticulous Proof of Concept (PoC), wrote comprehensive Go unit tests, and submitted a detailed report. But what happened next taught me a harsh lesson about the modern bug bounty ecosystem: sometimes, bureaucracy and automated algorithms matter more than the code itself.

Here is the story of my research journey, the challenges of responsible disclosure, and the lessons I’ve learned navigating the blockchain security space as a young researcher.


The Deep Dive: Chasing State Transitions

My target was a foundational layer of the Cosmos ecosystem—specifically, a module within a currently supported "Release Family" that bridges the Cosmos SDK with the Ethereum Virtual Machine (EVM).

I wasn't looking for simple logic errors. I was interested in the boundary between the EVM’s execution environment and the blockchain’s native state machine. How does the underlying consensus layer truly perceive the caller when an EVM transaction is in flight?

To test this, I built a rigorous local environment. I wasn't just interacting with a public RPC; I was compiling the core node software from source, patching genesis files to enable specific precompiled contracts, and writing custom Go tests to mock the state database (StateDB). I wanted to see exactly how the system validated caller identity during transient execution phases.

The Discovery: A Flaw in the Boundary

Without exposing the sensitive mechanics—because the vulnerability remains unpatched in production as of today, March 31, 2026, and I refuse to compromise network security—the flaw lived in how caller identity is validated during specific EVM execution phases.

The system’s security policy explicitly forbade smart contracts from accessing a critical governance function. The code even contained a comment enforcing this rule. However, by leveraging a documented, yet often overlooked, EVM state transition behavior defined in the Ethereum Yellow Paper (Section 7), I found a way to make a deploying contract look exactly like a standard Externally Owned Account (EOA) to the precompiled logic.

During this transient execution phase, the system's security check evaluated to false, completely bypassing the restriction. I wrote a Solidity exploit, deployed it via a local testnet transaction, and watched as my smart contract successfully registered itself as a network validator, violating the explicit security policy.

Seeing the PASS on my Go unit test and watching the consensus layer react exactly as theorized on my local node was one of the most exhilarating moments of my life. I had found a critical authorization bypass.

Going the Extra Mile: The Persistent Vector

A good security researcher doesn't just stop at the first bug; they map the entire threat surface.

A few days after my initial discovery, I realized the first exploit left a "fingerprint"—once the contract finished deploying, its runtime code was stored, and subsequent restricted calls would be correctly blocked. But what if the contract didn't have a persistent state?

I spent the next 48 hours developing a secondary, much more dangerous exploitation path. By utilizing advanced deterministic deployment mechanisms combined with same-transaction lifecycle manipulation, I created an ephemeral execution loop. This turned a one-time bypass into a repeatable, persistent control mechanism.

An attacker could now continuously manipulate network parameters, attract delegations, and deliberately trigger consensus penalties—all while the operator address appeared completely empty and normal to standard block explorers and monitoring tools. I documented this secondary vector meticulously, providing end-to-end bash reproduction scripts, factory contracts, and architectural diagrams.

I submitted the initial report on February 23, 2026, and updated it with the persistent vector shortly after.

The Reality Check: When Algorithms Override Triage

This is where the story shifts from a technical triumph to a lesson in industry bureaucracy.

My report was received, triaged, and successfully reproduced by the internal security team. It was a validated, critical infrastructure bug affecting a supported release family.

Then, on March 2, the bug bounty platform (HackerOne) introduced a new reputation policy. Suddenly, an automated macro swept through the queue and closed my triaged, critical zero-day as "Spam."

The reason? My account didn't meet a new reputation threshold and account-age requirement—a policy that did not even exist when I submitted the report. The platform applied the new criteria retroactively to an already-validated technical submission.

I immediately appealed, pointing out that standard industry guidelines dictate reports should be evaluated based on the policy active at the time of submission. I reached out to HackerOne support. I reached out to the Cosmos security team.

The response? Complete silence.

Despite responsibly disclosing a vulnerability that could impact network liveness and consensus, I received no reward, no recognition, and no remediation timeline. The report remains closed, and as of today, March 31, the vulnerability still exists in production.

The Ethics of the Unpatched Zero-Day

When a platform treats you unfairly, the temptation to "drop the zero-day" publicly on X (Twitter) or GitHub is immense. It’s the ultimate way to prove you were right and publicly shame the bureaucracy that ignored you.

But I am building a professional career in cybersecurity, not just chasing internet points.

I chose to keep the exploit details heavily censored in this article. Disclosing the exact mechanics, function names, and EIP interactions would provide a blueprint for malicious actors to attack live chains, potentially slashing innocent delegators or halting block production. My ethical obligation to the ecosystem and its users outweighs my frustration with a broken triage system. I will not weaponize my research.

Lessons Learned: Building a Portfolio in the Dark

Navigating this experience at 17 has fundamentally shaped how I view the Web3 security landscape. Here are the core lessons I am taking forward:

  1. The Code Doesn't Care, But Bureaucracy Does: You can write the perfect PoC, cite the Yellow Paper, and build a flawless local testnet, but platform metrics and automated macros can still override technical merit. You have to be prepared for the administrative side of security research.

  2. Documentation is Your True Portfolio: Even though the platform closed my report, the methodology remains. The Go unit tests I wrote, the Solidity factory architecture I designed, and my ability to chain EVM state transitions—that is my real portfolio. The code speaks for itself to those who know how to read it.

  3. The Ecosystem Needs Better Triage: Automated spam filters should never be allowed to retroactively close critical, triaged infrastructure bugs. Human-in-the-loop triage is non-negotiable for core protocol security.

  4. Resilience is a Technical Skill: Rejection and silence are part of the job. The ability to absorb an unfair outcome, maintain your ethical boundaries, and immediately pivot to the next research target is what separates amateurs from professionals.

Moving Forward

I may not have received a bounty or a public "Hall of Fame" mention for this discovery, but I gained something far more valuable: the absolute certainty that I can go toe-to-toe with the core architecture of major blockchain ecosystems and find the flaws that others miss.

To the teams building the future of decentralized infrastructure: my code, my Go tests, and my methodology are my resume. I am 17, I am deeply embedded in the physics of the EVM, and I am just getting started.

If you are a security team lead or a protocol developer interested in discussing EVM state transitions, precompile architecture, or Cosmos SDK security, my DMs are open. Let's build a more secure ecosystem together.