GitHub Security Lab Taskflow Agent द्वारा संचालित एक LLM-आधारित फ़ज़िंग पाइपलाइन
नेटिव C/C++ प्रोजेक्ट्स के लिए एक LLM-संचालित, OSS-Fuzz-शैली की फ़ज़िंग पाइपलाइन। निष्पादन के लिए AFL++, कवरेज के लिए clang+lcov, हार्नेस लेखन, कवरेज-फ़ीडबैक निर्णयों, ट्राइएज और रिपोर्टिंग के लिए एक LLM एजेंट।
इस रिपॉज़िटरी में
GitHub Security Lab Taskflow Agent के लिए फ़ज़िंग टास्कफ़्लो शामिल है।
यह कुछ साझा बिल्डिंग ब्लॉक्स
(fetch_source_code टास्कफ़्लो, local_file_viewer / gh_file_viewer
टूलबॉक्स, और डिफ़ॉल्ट model_config) के लिए
seclab-taskflows
सहयोगी रिपॉज़िटरी पर निर्भर करता है — ये
Python डिपेंडेंसी के रूप में स्वचालित रूप से इंस्टॉल हो जाते हैं।
योगदान का स्वागत है! कृपया दिशानिर्देशों के लिए CONTRIBUTING.md देखें।
apt तक पहुँच वाला एक Linux वातावरण (या Codespace)gh)pip install git+https://github.com/GitHubSecurityLab/seclab-taskflows-fuzzing
यह seclab-taskflow-agent और seclab-taskflows (parent) को ट्रांज़िटिव रूप से शामिल करता है, इसलिए
seclab_taskflows.taskflows.audit.*,
seclab_taskflows.toolboxes.local_file_viewer,
seclab_taskflows.toolboxes.gh_file_viewer, और
seclab_taskflows.configs.model_config के रूप में हर डॉटेड संदर्भ रनटाइम पर parent
डिस्ट्रिब्यूशन से रिज़ॉल्व होता है।
यह टास्कफ़्लो एक पूरी तरह से स्वायत्त फ़ज़िंग पाइपलाइन है। एक नेटिव C/C++ प्रोजेक्ट के GitHub रेपो को देखते हुए, यह:
.afl बाइनरी, एक AFL++ CMPLOG-इंस्ट्रुमेंटेड .cmplog बाइनरी और एक clang कवरेज-इंस्ट्रुमेंटेड .cov बाइनरी के रूप में बनाएगा,यह पाइपलाइन भावना में OSS-Fuzz-शैली की है: यह कई समान तकनीकों का उपयोग करती है (प्रति-फ़ॉर्मेट म्यूटेटर और डिक्शनरी, संरचना-जागरूक टोकन स्प्लाइसिंग, कवरेज-संचालित हार्नेस सुधार, मशीन-रीडेबल रिपोर्ट, डीडुप्ड स्टैक-हैश्ड क्रैश) लेकिन यह बहुत छोटी और स्व-निहित है।
# Inside the codespace (or a host with python + git available):
./scripts/fuzzing/run_fuzzing.sh tukaani-project/xz
यही पूरा इंटरफ़ेस है। स्क्रिप्ट स्वायत्त है; यह पहली बार चलाने पर AFL++
इंस्टॉल करेगी, फिर बाकी टास्कफ़्लो को चलाएगी। आउटपुट फ़ाइलें
~/.local/share/seclab-taskflow-agent/seclab-taskflows/ में लिखी जाती हैं।
डैशबोर्ड बैकग्राउंड में स्वतः शुरू हो जाता है; Codespace में, पोर्ट 8765
स्वतः फ़ॉरवर्ड हो जाता है — प्रगति को लाइव देखने के लिए इसे किसी भी ब्राउज़र में खोलें।
एक त्वरित स्मोक-टेस्ट के लिए, एक छोटा लक्ष्य उपयोग करें:
./scripts/fuzzing/run_fuzzing.sh DaveGamble/cJSON
तीन परतें, ऊपर से नीचे:
┌────────────────────────────────────────────────────────────────────┐
│ scripts/fuzzing/run_fuzzing.sh │
│ shell driver; chains the taskflow stages with `set +e` │
└────────────────────┬───────────────────────────────────────────────┘
│
▼
┌────────────────────────────────────────────────────────────────────┐
│ src/seclab_taskflows/taskflows/fuzzing/*.yaml │
│ LLM agent prompts; one YAML per pipeline stage │
└────────────────────┬───────────────────────────────────────────────┘
│ (calls MCP tools)
▼
┌────────────────────────────────────────────────────────────────────┐
│ src/seclab_taskflows/mcp_servers/ │
│ ├ fuzz_context.py persistence (SQLite via SQLAlchemy) │
│ └ fuzz_runner.py subprocess wrappers (AFL, clang, lcov, ...) │
│ │
│ scripts/fuzzing/dashboard.py │
│ read-only HTML view of fuzz_context.db │
└────────────────────────────────────────────────────────────────────┘
मुख्य डिज़ाइन नियम: