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.