AI & Security

How Modern Smart Contract Auditors Use AI and Security Tooling

How smart contract auditors combine manual research with static analysis, fuzzing, symbolic execution, formal verification, and AI security skills.

How modern smart contract auditors use AI and security tooling, Kann Audits research

Smart contract audits are now tool-assisted but researcher-led. This guide explains what each class of security tooling actually contributes, where AI security skills fit into the workflow, and why every result still needs human reproduction before it becomes a finding.

Each Technique Sees a Different Slice of the System

Modern smart contract auditors combine manual security research with static analysis, fuzzing, symbolic execution, formal verification, and carefully controlled AI-assisted workflows. Slither and Aderyn can surface known Solidity patterns and support codebase navigation; Mythril explores EVM paths through symbolic execution; fuzzers probe inputs and transaction sequences; and formal methods test explicit properties against a model. Each technique sees a different slice of the system, so strong researchers use the outputs as evidence and hypotheses rather than treating a tool result as a validated vulnerability.

The table below summarizes what each class of technique is good at and where it stops. No single row covers a whole protocol, which is why serious audits layer them and then put a researcher in charge of the conclusions.

What each technique contributes to a smart contract audit
TechniqueStrong atBlind spotsCommon tools
Static analysisKnown code patterns, unsafe calls, missing checks, fast codebase navigationBusiness logic, economic attacks, intent across contractsSlither, Aderyn
Symbolic executionConcrete paths to reachable failures and dangerous EVM statesDeep or unbounded paths, large protocol stateMythril, Halmos
Fuzzing and invariant testingUnexpected inputs and call sequences that break written propertiesProperties nobody wrote downEchidna, Medusa, Foundry
Formal verificationProving explicit properties against a modelWrong or incomplete specifications, behavior outside the modelCertora Prover, Solidity SMTChecker
AI-assisted analysisSummaries, threat models, invariant candidates, test scaffolding, candidate issuesReliability, reachability, and severity judgmentPublic security skills, Kann AI

Static Analysis and Symbolic Execution: Fast Signals, Not Verdicts

Static analyzers read source code or its compiled representation without executing it. Slither ships a large set of detectors for known Solidity issues and printers that map inheritance, call graphs, state variable access, and function summaries. Aderyn, written in Rust, parses the Solidity AST and produces a report of detected patterns. Researchers use both for two different jobs: catching familiar mistakes early, and getting oriented in a large codebase quickly.

Symbolic execution treats inputs as symbols and asks a solver whether a dangerous state is reachable. Mythril analyzes EVM bytecode this way, and Halmos applies symbolic reasoning to Foundry-style tests. When a solver finds a path, it returns concrete inputs, which makes the result easy to check. When the path is too deep or the state too large, the tool times out or gives up, so silence is not evidence of safety.

Both techniques produce noise. A detector cannot know that a low-level call is intentional, that a role is held by a timelock, or that an unchecked value is bounded elsewhere. Triage is part of the work: every warning is either confirmed with a reproduction, explained and dismissed, or turned into a question for the development team.

  • Run analyzers on the exact audited commit so results map to the reviewed code.
  • Use printers and call graphs to find privileged paths and external calls worth manual tracing.
  • Record why each dismissed warning is safe, so later reviewers do not repeat the analysis.
  • Treat a timeout or an empty result as unknown, not as proof that a path is safe.

Fuzzing and Invariant Testing: Searching for the Sequence That Breaks the Rules

Fuzzers generate large numbers of inputs and transaction sequences and check whether a property ever fails. Echidna and Medusa are property-based fuzzers built for smart contracts, and Foundry provides fuzz tests and stateful invariant tests directly in the Solidity test suite. The value comes from the properties: a fuzzer can only find what someone has expressed as a rule.

Auditors therefore spend real effort writing invariants. Typical examples are solvency (assets held cover what users can withdraw), conservation (total shares match the sum of balances), monotonicity (an index never decreases), and authorization (only a defined role can change a parameter). Handlers constrain the fuzzer to realistic calls, and ghost variables track expected values so the test can compare intent with actual state.

Fuzzing is especially effective at finding rounding drift, ordering problems, and edge cases that only appear after several calls. It cannot prove that no counterexample exists, and a poorly bounded handler can hide real paths or generate impossible ones. Results still need manual reproduction and an impact assessment.

A simplified Foundry invariant test

The handler limits the fuzzer to valid deposits and withdrawals, and the invariant states that the vault can always cover the shares it has issued.

Simplified invariant testSolidity
contract VaultInvariants is Test {
    Vault vault;
    VaultHandler handler;

    function setUp() public {
        vault = new Vault(asset);
        handler = new VaultHandler(vault, asset);
        targetContract(address(handler)); // fuzz only realistic user flows
    }

    // Must hold after every generated call sequence.
    function invariant_vaultCoversIssuedShares() public view {
        uint256 owed = vault.convertToAssets(vault.totalSupply());
        assertGe(asset.balanceOf(address(vault)), owed);
    }
}

Formal Verification: Proving Explicit Properties Against a Model

Formal methods attempt to prove that a property holds for every behavior within a model of the system, rather than for the inputs a test happened to try. Tools such as the Certora Prover and the Solidity SMTChecker check written rules against the contract logic. When a proof succeeds, it gives strong assurance about that specific property.

The limits are equally specific. A proof says nothing about properties nobody wrote, about behavior outside the model, or about assumptions such as an oracle always being honest. Writing good specifications is skilled work, and a vacuous or incomplete rule can pass while the real risk remains. Formal verification is most valuable for narrow, high-impact properties such as solvency, access control, accounting conservation, and message uniqueness.

A passing proof is only as strong as the property and the model behind it. Specification review belongs in the audit scope.

Reusable AI Security Skills Are Becoming Part of the Toolkit

Reusable security skills are also becoming part of researcher-led AI orchestration. Public examples include Pashov Skills, Plamen, Trail of Bits Security Skills, OpenZeppelin Security Skills, and Cyfrin Solskill. These repositories can encode repeatable tasks such as threat-model generation, invariant discovery, focused review passes, or test scaffolding. An auditor may run several independent passes, compare their outputs, and move only well-supported candidates into manual reproduction. Teams should still review each skill's code, dependencies, permissions, license, update history, and data-handling assumptions before using it on sensitive repositories.

The public repositories differ in purpose. Some focus on audit-style review, some on pre-audit preparation, and some on helping AI coding assistants write safer contracts in the first place. The descriptions below reflect what each project publishes about itself.

Pashov Skills

Published by Pashov Audit Group. Includes a Solidity auditor skill that runs specialized review agents, an x-ray skill that produces a pre-audit report with a threat model, invariants, and entry points, and a skill that generates Echidna and Medusa fuzzing suites.

github.com/pashov/skills

Plamen

An autonomous Web3 security auditor for AI coding agents that orchestrates many agents across multiple phases to produce audit reports with proof-of-concept exploits. It lists support for EVM and Solidity, Solana and Anchor, Aptos and Sui Move, Soroban, DAML and Canton, and L1 node clients written in Go and Rust.

github.com/PlamenTSV/plamen

Trail of Bits Security Skills

A plugin marketplace from Trail of Bits with skills for AI-assisted security analysis, including audit context building, variant analysis, static analysis workflows, fix verification, differential review, and blockchain-specific vulnerability scanners.

github.com/trailofbits/skills

OpenZeppelin Security Skills

Agent skills that give AI coding assistants current knowledge of the OpenZeppelin Contracts libraries for secure development, project setup, and upgrades across Solidity, Cairo, Stylus, Stellar, and Sui.

github.com/OpenZeppelin/openzeppelin-skills

Cyfrin Solskill

Cyfrin's Solidity development standards packaged as agent skills, with instructions for writing production-grade Solidity and working with BattleChain deployments.

github.com/Cyfrin/solskill

What Researcher-Led AI Orchestration Looks Like in Practice

In a researcher-led workflow, AI does not decide what goes into the report. The researcher defines the scope and the threat model, chooses which passes to run, and decides what each output is worth. Independent passes are useful precisely because they disagree: a candidate that appears in several unrelated passes and survives manual tracing deserves attention, while a single unsupported claim usually does not.

The practical safeguards are the same ones a team would apply to any third-party code that touches a private repository. Pin the skill version that was reviewed. Run it in a workspace without production keys, deployment secrets, or unnecessary network access. Check what data leaves the machine and under which provider terms. Keep a record of which passes ran on which commit, so a later reviewer can tell how a candidate was produced.

01Scope and threat model
02Independent tool and AI passes
03Compare and deduplicate
04Manual reproduction
05Impact and severity
06Report and fix verification

The Researcher Remains Responsible for the Judgment

Tools increase coverage and generate hypotheses. The security researcher remains responsible for architecture understanding, reproduction, exploitability, severity, false-positive filtering, and final judgment. That responsibility includes deciding whether a result is reachable in the deployed system, whether protocol economics change the impact, and whether a remediation addresses the root cause. Kann AI is one optional analysis capability in this broader tool-assisted landscape; it is not presented as a substitute for an expert-led audit or as an automatic part of every engagement.

This division of labor matters for the people who read the report. A finding should describe a real path, with evidence, an accurate severity, and a remediation that was checked against the root cause. A list of unvalidated tool warnings looks thorough but shifts the verification work back onto the protocol team.

“A tool result is a hypothesis. A finding is a hypothesis that a researcher has proven.”

How Kann Audits Uses Tooling in an Engagement

Kann Audits Expert Security Audits are led by security researchers who read the code line by line, trace privileged actions and state transitions, and test the assumptions behind the protocol's economics and integrations. Tooling is chosen for the codebase in front of them, whether that means static analysis on a Solidity repository, invariant suites for an accounting-heavy vault, or symbolic checks on a narrow critical function.

Teams that want automated analysis on its own can use the AI Security Scan, which applies Kann AI to a codebase as a separate service. When teams are choosing between providers, our 2026 smart contract auditing companies comparison explains how different firms combine manual review, tooling, and formal methods.

Questions About AI and Security Tooling in Audits

Short answers to the questions teams most often ask about how auditors use tools and AI.

Can AI replace a smart contract security audit?

No. AI-assisted analysis can summarize code, propose threat models, suggest invariants, and surface candidate issues, but it cannot reliably establish reachability, economic impact, or severity in a specific deployed system. A qualified security researcher still has to reproduce each candidate, discard false positives, and make the final judgment.

Which static analysis tools do smart contract auditors use?

Slither and Aderyn are widely used for Solidity static analysis. They detect known patterns and help researchers navigate inheritance, call graphs, and state variables. Their output is a list of leads to investigate, not a list of confirmed vulnerabilities.

What is the difference between fuzzing and formal verification?

Fuzzing executes the code with many generated inputs and transaction sequences to search for a counterexample to a property. Formal verification attempts to prove that a property holds for every behavior within a model. Fuzzing can find bugs quickly but cannot prove their absence; a proof is only as strong as the specification and model behind it.

Are public AI security skills safe to run on private code?

They can be, after review. Teams should inspect each skill's code, dependencies, permissions, license, update history, and data-handling assumptions, pin the version they reviewed, and run it in an environment without secrets or unnecessary network access before using it on a sensitive repository.

Does Kann Audits use AI in every audit?

No. Kann AI is one optional analysis capability in a broader tool-assisted workflow. It is not presented as a substitute for an expert-led audit or as an automatic part of every engagement. Every finding in a Kann Audits report is validated by security researchers.

Should we run security tools before our audit starts?

Yes. Running static analysis and your own fuzz or invariant tests before the audit removes known low-level issues early and lets the audit team spend more time on business logic, integrations, and economic attack paths. Share the results and any accepted warnings with the auditors.

Primary references

Sources and further reading

A note on scope: Security reviews reduce uncertainty within a defined code and architecture scope. They do not guarantee that every vulnerability has been found or cover changes made after review.

Back to all research

Tool-assisted, researcher-led

Get findings that a researcher has already proven

Kann Audits combines manual security research with the tooling each codebase calls for, and validates every finding before it reaches your report.