agentsclimarketplace

Vulnerability scanning

Skill 0xendale/evm-agent-toolkit/skills/vulnerability-scanning

Use when auditing an EVM/Solidity contract for security vulnerabilities — including reentrancy, access-control gaps, EIP-7702 delegation risks, EIP-1153 transient storage flaws, unsafe delegatecall, or hardcoded secrets — or when evaluating contract safety and producing a severity-rated finding set.From its SKILL.md

Install
npx -y skills add 0xendale/evm-agent-toolkit --skill vulnerability-scanning

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

4.9 KB, as published. Nobody here has run it

Vulnerability Scanning

Overview

Find security vulnerabilities in an EVM contract and return a severity-rated finding set. A pattern match is a hypothesis, not a finding. Every candidate must be confirmed reachable and un-neutralized before it is reported.

The Iron Rule: never report an unconfirmed candidate as a confirmed vulnerability. A false positive that triggers a needless rewrite is its own kind of harm; an unconfirmed-but-flagged item must be labeled as such.

When to Use

  • Security-auditing Solidity/Vyper/bytecode before deployment or review
  • Symptoms: "is this safe?", "audit this", suspected reentrancy, access-control, tx.origin, delegatecall, selfdestruct, unchecked calls
  • Producing a severity-rated report for a contract or PR

Do NOT use for: gas optimization (use gas-optimization) or arbitrage/economic analysis (use arbitrage-analysis).

Workflow

Four reasoning steps, in order. You perform them; they are not scripts.

  1. Seek — Read the contract and match it against reference/patterns.md. List every candidate with file:line and its SWC id.
  2. Innovate — Beyond the library, reason about contract-specific risks (storage-layout collisions in proxies, oracle manipulation, integer edges). Propose a remediation per candidate.
  3. Execute — Confirm each candidate per reference/severity-model.md: check reachability and existing guards. Utilize Action-State Differential Verification (taking pre- and post-trigger state snapshots in a local fork like Foundry) to definitively prove exploitability. Corroborate with tools (Slither, Aderyn, Echidna) if available. Assign final severity; drop neutralized candidates.
  4. Manage — Emit the report: each confirmed finding with severity, location, SWC id, impact, and remediation. List dropped candidates and why. State explicitly if Slither was unavailable.

Verification

  • Use Bug-Context Extraction (BCE) to isolate focused function-level slices before executing complex tests.
  • For static analysis, prefer the MCP tool evm_scan_vulnerabilities (schema-validated findings with code snippets; supports severityFilter and detectors for focused scans). Fall back to raw slither <path> or aderyn only when the MCP server is unavailable. Reconcile findings either way.
  • To confirm reachability of a candidate on a local fork, prefer evm_trace_call — the structured call tree shows whether the vulnerable frame executes, what it calls, and where it reverts.
  • For proxy storage-collision candidates, use evm_inspect_storage_layout on both implementations and diff the slot assignments.
  • For dynamic verification, leverage Foundry/Echidna in a Generate-Repair-Execute (GRE) loop to compile and test Proofs of Concept — the MCP tools evm_compile_and_diagnose and evm_run_tests (structured failures with fuzz counterexamples) drive this loop; fall back to raw forge when the MCP server is unavailable.
  • When tools/Foundry are absent, explicitly state so, fall back to manual review, and mark findings as manual review, not tool-confirmed. Never present manual review as tool-confirmed.

Quick Reference

PatternSignatureSeveritySWC
Reentrancy.call{value:CriticalSWC-107
tx.origin authtx.originHighSWC-115
Unchecked low-level call.call( / .delegatecall(MediumSWC-104
Reachable selfdestructselfdestruct(HighSWC-106
Unsafe delegatecall.delegatecall(CriticalSWC-112
Missing access controlstate write, no modifierHighSWC-105
Timestamp dependenceblock.timestampLowSWC-116
EIP-7702 Delegation Risksigned auth tuples / delegatecallCritical-
Transient Storage LockTSTORE / TLOADHigh-
Hardcoded CredentialsprivateKey = / apiKey =Critical-

Full detail: reference/patterns.md and reference/severity-model.md.

Common Mistakes

  • Reporting a grep hit without checking reachability. An internal helper behind a guard is not the same risk as a public path.
  • Missing that a nonReentrant guard already neutralizes a candidate.
  • Calling a finding tool-confirmed when no tool was run.
  • Over-rating style issues as High. Match severity to actual impact.

Red Flags — STOP

  • "It matches the pattern so it's a finding" → confirm reachability first.
  • "I'll mark it Critical to be safe" → severity must match impact.
  • "Slither isn't installed but I'll report findings as confirmed" → mark as manual review.

Keep looking

Skills are one crate of 627,801. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.