Auto-ROS2Fuzz is an automated fuzzing framework for ROS2-based C++ projects. It leverages AI (OpenAI GPT models) to generate LibFuzzer-compatible fuzz harnesses and continuously fuzzes target code using coverage-guided techniques in a Dockerized environment.
AutoROS2Fuzz/
β
βββ main.py # μ§μ
μ (CLI μΈν°νμ΄μ€ λ° μ 체 νλ¦ μ μ΄)
β
βββ fuzzer/ # π§ νΌμ§μ μν μ νΈλ¦¬ν° λ° μ€ν μ€ν¬λ¦½νΈ
β βββ logger.py # λ‘κ·Έ μΆλ ₯ μ νΈλ¦¬ν° (μ»¬λ¬ μ§μ ν¬ν¨)
β βββ gen.py # GPT κΈ°λ° νλ€μ€ μμ±κΈ° (HarnessGenerator ν΄λμ€)
β βββ fuzz.py # Docker κΈ°λ° νΌμ§ μν μ€ν¬λ¦½νΈ
β βββ baseprompt.txt # νλ€μ€ μμ±μ μν κΈ°λ³Έ ν둬ννΈ
β βββ seedprompt.txt # νλ€μ€ μμ±μ μν μλ ν둬ννΈ
β
βββ target_projects/ # π― νΌμ§ λμ ROS2 νλ‘μ νΈ μμ€μ½λ
β βββ turtlebot3/ # μ: turtlebot3 μ 체 νλ‘μ νΈ μμ€
β βββ <other_project>/ # μΆκ° λμ νλ‘μ νΈ
β
βββ build/ # ποΈ νλ€μ€ μμ± λ° λΉλ λλ ν 리
β βββ turtlebot3/ # νλ€μ€ μμ± ν μ΄κ³³μ 볡μ¬νμ¬ colcon λΉλ
β β βββ src/ros2_fuzz/src/
β β β βββ fuzz_xyz.cpp # νλ€μ€ C++ νμΌ
β β β βββ ...
β β βββ ... # CMakeLists.txt λ±
β βββ <other_project>/
β
βββ results/ # π νΌμ§ μ€ν κ²°κ³Ό μ μ₯μ
β βββ turtlebot3/
β β βββ fuzz_create_node/
β β β βββ logs/ # νΌμ§ λ‘κ·Έ νμΌ
β β β βββ crashes/ # ν¬λμ μ
λ ₯κ° μ μ₯
β β βββ fuzz_create_publisher/
β β βββ ...
β βββ <other_project>/
β
βββ README.md # μ€λͺ
μ- π§ AI-generated LibFuzzer harnesses using GPT-4 or GPT-4o-mini.
- π οΈ Fully Dockerized fuzzing environment.
- π¦ Corpus & crash management per fuzzer.
- β»οΈ Auto Fuzz mode: Random fuzzer selection + 2-hour timeout rotation.
- π§Ό Crash deduplication: Avoids storing redundant crash logs via ASAN summaries.
- Python 3.8+
- Docker
- OpenAI Python SDK (
pip install openai) - ROS2 Humble-compatible environment (inside Docker image)
git clone https://github.com/yourname/auto-ros2fuzz.git
cd auto-ros2fuzz
pip install -r requirements.txtCopy your ROS2 C++ project (e.g., turtlebot3) under:
target_projects/turtlebot3/cont.