Skip to content

Latest commit

Β 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ€– Auto-ROS2Fuzz

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.

πŸ“ Project Structure

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                     # μ„€λͺ…μ„œ

πŸš€ Features

  • 🧠 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.

🧰 Requirements

  • Python 3.8+
  • Docker
  • OpenAI Python SDK (pip install openai)
  • ROS2 Humble-compatible environment (inside Docker image)

πŸ”§ Setup & Usage

1. Clone & Install

git clone https://github.com/yourname/auto-ros2fuzz.git
cd auto-ros2fuzz
pip install -r requirements.txt

2. Place Your Target Project

Copy your ROS2 C++ project (e.g., turtlebot3) under:

target_projects/turtlebot3/

cont.

About

Sejong Univ. 2025-1 Capstone Design

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages