Skip to main content
Sigvex

EVM Exploit Discovery

In-browser fuzzing for EVM contracts with configurable worker pool, batch size, and corpus, producing crash and revert groupings.

What it is

An in-browser fuzzing page for EVM contracts. The user configures worker count, batch size, batch interval, and corpus size, then Start Discovery launches a campaign that groups results by function and classifies crashes (security / revert / runtime noise) with reproducer snippets.

Why it exists

Targeted fuzzing finds bugs static analysis misses — reverts, unexpected VM failures, and input shapes that trip detector blind spots. This page runs that fuzzing loop directly in the browser via Web Workers, so the user does not need a local fuzzing toolchain.

Who uses it

  • Auditor — stresses a contract’s entry points with random calldata.
  • Researcher — explores crash categories and mines reproducers for exploit writing.

How to open it

  1. From /evm-contractExploit Discovery breadcrumb action.
  2. From /smart-contracts with an EVM contract selected.
  3. Direct URL — /evm-fuzzing with a contract selected.

Using the page

  1. Workers — 1–16 Web Workers (default derived from hardware, typically half of navigator.hardwareConcurrency, clamped 2–8).
  2. Batch size — inputs per batch, 10–1000 (default 100).
  3. Interval — delay between batches in milliseconds, 10–1000 (default 100).
  4. Max Corpus — maximum interesting inputs kept for mutation, 100–100000 (default 10000).
  5. Start Discovery — launches the campaign.
  6. Function Results — per-function summary updates live.
  7. Crash Details — grouped crashes with category badges (security, revert, noise), input variants, and reproducer commands. Each entry has Copy buttons for the input or reproducer command.
  8. Export Results — downloads the full campaign as JSON.
  9. Run Again — restarts the campaign with the current configuration.
  10. View Analysis — links back to the contract overview.

Inputs and outputs

Input Source Required
Contract selection Upstream context yes
Workers / Batch Size / Interval / Max Corpus Form inputs defaults apply
Output Format Destination
Function results and crashes In-page HTML
Campaign export JSON Browser download
Reproducer command Clipboard Copy cmd

Controls reference

  • Workers / Batch Size / Interval / Max Corpus — campaign configuration inputs.
  • Start Discovery — begin fuzzing.
  • Export Results — JSON download.
  • Run Again — relaunch with current configuration.
  • View Analysis — return to the contract overview.
  • Copy / Copy calldata / Copy cmd — per-crash clipboard actions.

Limits

  • Requires a signed-in account and an EVM contract in focus.
  • Fuzzing runs in the browser — CPU load scales with worker count.
  • Reproducer commands are emitted when the crash has a deterministic input; noise-category crashes may not have reproducers.

Troubleshooting

Symptom or error Cause Action
“No Contract Selected” state No contract in focus Open a contract from /smart-contracts?runtime=evm.
Campaign stalls Worker count exceeds browser capacity Reduce Workers and restart.
Crash variants look identical Same input trigger with minor byte variations Use the grouped count (× N) as the signal, not individual rows.