atheris

Fuzz Python functions and C extensions to discover crashes and memory-safety bugs.

Updated May 2, 2026
One-click install
npx skills add https://github.com/ayehiaa/my-travel-assistant --skill atheris-ayehiaa
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: atheris
Source: https://github.com/ayehiaa/my-travel-assistant/tree/main/.agents/skills/atheris
Command: npx skills add https://github.com/ayehiaa/my-travel-assistant --skill atheris-ayehiaa

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Atheris helps you find crashes and memory-safety bugs in Python programs by generating inputs that increase code coverage until something breaks.

Core Features & Use Cases

  • Coverage-guided fuzzing: Instruments Python code so the fuzzer can steer toward new execution paths.
  • Native extension fuzzing: Works with compiled Python C extensions and supports AddressSanitizer to detect memory corruption.
  • Harness-driven testing: Lets you define a byte-driven test_one_input(data: bytes) entry point and run repeated fuzzing campaigns.

Use case example: You maintain a Python package with a C extension that parses untrusted binary inputs; run Atheris to stress the parser and surface memory corruption with ASan.

Quick Start

Run the Atheris harness by executing your fuzz script (for example, python fuzz.py).

Frequently Asked Questions about atheris

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I fuzz Python code to find crashes and memory bugs?

Fuzz Python code by instrumenting functions with `@atheris.instrument_func` or `atheris.instrument_imports()`, defining a `test_one_input(data: bytes)` harness, calling `atheris.Setup()`, and running `atheris.Fuzz()` to generate inputs that increase code coverage until crashes occur.

Can I fuzz Python C extensions for memory corruption?

Yes, you can fuzz Python C extensions by configuring AddressSanitizer and LD_PRELOAD during your fuzzing campaign to detect memory corruption in compiled native extensions that parse untrusted byte inputs.

What is coverage-guided fuzzing for Python functions?

Coverage-guided fuzzing instruments Python code so the fuzzer steers input generation toward new execution paths, continuously mutating byte inputs to increase code coverage until a crash or memory-safety bug is discovered.

How do I set up a fuzzing harness for Python byte inputs?

Set up a fuzzing harness by creating a Python script with a `test_one_input(data: bytes)` entry function, instrumenting it with `atheris.instrument_func`, initializing with `atheris.Setup(sys.argv, test_one_input)`, and executing the script with `python fuzz.py`.

Does Atheris fuzzing support parallel jobs and corpora?

Yes, Atheris supports harness-based fuzz campaigns with corpora and parallel jobs to stress pure Python functions and C extensions by running repeated fuzzing campaigns with coverage-guided input generation.

Why do I need AddressSanitizer when fuzzing native Python extensions?

AddressSanitizer is required when fuzzing native Python extensions to detect memory corruption and memory-safety bugs that coverage-guided fuzzing surfaces in compiled C code parsing untrusted binary inputs.