Tự động hóa Fuzzing với GitHub Security Lab Taskflow Agent
GitHub Security Lab giới thiệu Fuzzing Taskflow, một pipeline tự động sử dụng LLM để thực hiện fuzzing cho các dự án C/C++, từ việc viết harness, phân tích coverage cho đến triage...
- Giọng nữ Bắc
Fuzzing liên tục không phải là giải pháp vạn năng. Ngay cả với các dự án tham gia OSS-Fuzz lâu năm, các lỗ hổng nghiêm trọng vẫn có thể tồn tại do thiếu sự giám sát về độ bao phủ (coverage), thiếu các harness phù hợp hoặc quá trình triage lỗi thủ công tốn kém. GitHub Security Lab đã phát triển Fuzzing Taskflow, một pipeline tự động hóa dành cho các dự án C/C++ dựa trên framework Taskflow Agent, nhằm giải quyết bài toán này.
Table Of Content
Cách thức hoạt động
Fuzzing Taskflow cho phép người dùng chỉ định một repository trên GitHub, sau đó agent sẽ tự động thực hiện các bước: xác định entrypoint, phân tích hệ thống build, tạo harness, chạy AFL++, đọc báo cáo coverage, cải thiện harness và cuối cùng là triage các crash để tạo báo cáo lỗ hổng. Tất cả quy trình này diễn ra mà không cần sự can thiệp thủ công.
Kiến trúc của hệ thống bao gồm ba tầng chính:
- Shell driver: Điều phối các giai đoạn của pipeline.
- Taskflow YAML: Các prompt định nghĩa nhiệm vụ cho LLM agent.
- MCP tools: Các công cụ thực thi các tác vụ cụ thể như chạy AFL, biên dịch harness, hoặc đọc báo cáo.
Điểm mấu chốt trong thiết kế là sự phân tách trách nhiệm: LLM agent đưa ra quyết định (chọn code để fuzz, viết harness), trong khi các MCP tools thực hiện hành động kỹ thuật. Mọi trạng thái của quá trình đều được lưu trữ trong cơ sở dữ liệu SQLite (fuzz_context.db).
Vòng lặp phản hồi Coverage
Đây là trái tim của hệ thống. Thay vì con người phải đọc báo cáo LCOV và viết lại harness, agent sẽ tự động thực hiện các hành động dựa trên các nhánh code chưa được bao phủ: thêm seed mới, chỉnh sửa source harness, hoặc làm phong phú từ điển (dictionary) của AFL. Thời gian chạy cho mỗi vòng lặp sẽ tăng dần (từ 30 giây đến 16 phút) để tối ưu hóa hiệu suất.
Triage và Báo cáo
Sau khi tìm thấy crash, hệ thống sẽ tự động thực hiện afl-tmin, tái hiện lỗi dưới ASan, và gán nhãn cho các crash. Agent sẽ phân tích chuỗi gọi hàm (call chain) và đưa ra phán quyết: liệu đó là một vulnerability thực sự, một lỗi trong harness, hay chỉ là các vấn đề như OOM hoặc timeout. Hệ thống thậm chí còn cung cấp một bản nháp sửa lỗi (suggested fix) dưới dạng unified diff để lập trình viên tham khảo.
Lưu ý quan trọng: Vì công cụ này thực thi các lệnh build tùy ý do LLM chọn, người dùng chỉ nên chạy trong môi trường cô lập như Codespace hoặc máy ảo không có đặc quyền cao.
Nguồn tham khảo: GitHub Blog



No Comment! Be the first one.