atheris

Automate coverage-guided fuzzing of Python code and C extensions with libFuzzer and AddressSanitizer.

19.0k|5.6k|Updated Jul 9, 2024
One-click install
npx skills add https://github.com/elizaOS/eliza --skill atheris-elizaos
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: atheris
Source: https://github.com/elizaOS/eliza/tree/main/packages/skills/skills/testing-handbook-skills/skills/atheris
Command: npx skills add https://github.com/elizaOS/eliza --skill atheris-elizaos

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes scripts (resource) and references (resource) components.

What problem does it solve?

This Skill helps developers find bugs and security vulnerabilities in Python code and its C extensions by automatically generating diverse inputs to test code paths.

Core Features & Use Cases

  • Coverage-guided fuzzing: Explores code paths efficiently using libFuzzer.
  • Python & C Extension Support: Fuzzes both pure Python code and compiled C extensions.
  • Use Case: A developer can use Atheris to automatically discover memory corruption bugs or crashes in a Python library that has a C extension, ensuring greater stability and security.

Quick Start

Use the atheris skill to fuzz the provided python script 'fuzz_target.py'.

Frequently Asked Questions about atheris

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

FAQPage Schema
How does coverage-guided fuzzing find bugs in Python code?▼

Coverage-guided fuzzing finds bugs in Python code by automatically generating diverse inputs to explore code paths efficiently. It leverages libFuzzer to detect crashes and security vulnerabilities during execution.

Can I fuzz Python C extensions for memory corruption bugs?▼

Yes, you can fuzz Python C extensions for memory corruption bugs. The tool supports fuzzing compiled C extensions by leveraging libFuzzer and AddressSanitizer to detect memory issues.

What's the best way to automate security testing for Python libraries?▼

The best way to automate security testing for Python libraries is using coverage-guided fuzzing. This approach automatically generates diverse inputs to test code paths and discover crashes or vulnerabilities.

Do I need AddressSanitizer to fuzz pure Python code?▼

AddressSanitizer is not required to fuzz pure Python code, but it is leveraged when fuzzing compiled Python C extensions. The tool supports both pure Python and C extension fuzzing to find bugs.

How do I start fuzzing a Python script?▼

To start fuzzing a Python script, use the tool to run against your target script, such as 'fuzz_target.py'. The coverage-guided fuzzer will automatically generate inputs to explore code paths.

Why use fuzzing over standard unit testing for finding security vulnerabilities?▼

Fuzzing discovers security vulnerabilities that standard unit testing misses by automatically generating diverse, unexpected inputs. It efficiently explores code paths using libFuzzer to find crashes and memory corruption bugs.