آخرین اخبار
همهٔ اخبار
گزارش‌ها و تحلیل‌ها گزارش بحرانیت ۴/۱۰

اتوماسیون Fuzzing با استفاده از عامل هوشمند Taskflow در GitHub Security Lab

اتوماسیون Fuzzing با استفاده از عامل هوشمند Taskflow در GitHub Security Lab

فرآیند Fuzzing مداوم، علی‌رغم کارایی بالا، یک راهکار جادویی نیست. حتی پروژه‌هایی که سال‌ها در OSS-Fuzz حضور دارند، همچنان ممکن است دارای باگ‌های بحرانی باشند؛ زیرا این فرآیند نیازمند نظارت انسانی برای بررسی میزان Coverage، نوشتن Harnessهای جدید برای بخش‌های دست‌نیافته کد و Triaging کرش‌ها است. برای رفع این گلوگاه، GitHub Security Lab ابزاری به نام Fuzzing Taskflow را معرفی کرده است که یک خط لوله (Pipeline) خودکار برای پروژه‌های C/C++ است.

ساختار و عملکرد Fuzzing Taskflow

این سیستم بر پایه Taskflow Agent بنا شده و از مدل‌های زبانی بزرگ (LLM) برای اتوماسیون کارهای تکراری استفاده می‌کند. کاربر تنها نیاز دارد آدرس مخزن (Repository) گیت‌هاب را ارائه دهد و سپس عامل هوشمند مراحل زیر را به صورت خودکار انجام می‌دهد:

  • شناسایی نقاط ورود (Entrypoints) مناسب.
  • تحلیل سیستم Build و نوشتن Harnessها.
  • اجرای AFL++ و تحلیل گزارش‌های Coverage.
  • بهبود مستمر Harnessها و Triaging کرش‌ها.
  • تدوین گزارش آسیب‌پذیری برای هر باگ منحصر‌به‌فرد.

جداسازی تصمیم‌گیری از اجرا

در طراحی این ابزار، تفکیک دقیقی بین LLM Agent (که مسئول تصمیم‌گیری است) و MCP Tools (که مسئول اجرا هستند) وجود دارد. عامل هوشمند تصمیم می‌گیرد چه چیزی Fuzz شود یا چه شکافی در Coverage باید پر شود، اما برای اجرای عملیاتی از ابزارهایی مانند run_afl_for یا compile_harness استفاده می‌کند. تمامی وضعیت‌ها در یک پایگاه داده SQLite ذخیره می‌شوند تا انتقال داده‌ها بین مراحل به صورت ساختاریافته باشد.

بهبود هوشمند Coverage و ورودی‌ها

یکی از ویژگی‌های برجسته این ابزار، استفاده از Plateau Detection است. اگر در دو تکرار متوالی، میزان Coverage کمتر از حد تعیین شده (به طور پیش‌فرض ۱٪) افزایش یابد، سیستم برای جلوگیری از اتلاف منابع، از آن هدف عبور کرده و به سراغ هدف بعدی می‌رود.

همچنین برای غلبه بر محدودیت‌های Mutatorهای پیش‌فرض AFL در مواجهه با ورودی‌های ساختاریافته (مانند JSON یا XML)، چهار مکانیسم به کار گرفته شده است:

  • دیکشنری‌های اختصاصی: استفاده از Mutatorهای سفارشی برای فرمت‌های شناخته شده.
  • دیکشنری سطح منبع (Source-level): استخراج رشته‌ها و ثابت‌های عددی مستقیماً از فایل‌های .c و .h.
  • غنی‌سازی پویا: شناسایی توکن‌های جدید از طریق بررسی Guardهای کد (مانند memcmp) در خطوط پوشش‌نیافته.
  • Corpus-splice: ترکیب نواحی تصادفی از فایل‌های موجود در Corpus برای تولید ورودی‌های پیچیده‌تر.

تحلیل خودکار ریشه (Root-Cause Analysis)

پس از شناسایی کرش، سیستم مراحل زیر را طی می‌کند:

  • کمینه کردن کرش با afl-tmin و ثبت Stack Trace با استفاده از ASan.
  • حذف موارد تکراری (Deduplication) بر اساس هشِ بالای پشته.
  • تحلیل زنجیره فراخوانی از API عمومی تا تابع کرش‌کننده.
  • ارائه گزارش Markdown شامل تحلیل ریشه، ارزیابی قابلیت Exploit و پیشنهاد Patch (که نیاز به بازبینی انسانی دارد).

نکات امنیتی در اجرا

از آنجایی که این ابزار دستورات Build و AFL را مستقیماً روی میزبان اجرا می‌کند و از کانتینر استفاده نمی‌کند، ریسک Prompt Injection وجود دارد. توصیه می‌شود این ابزار تنها در محیط‌های ایزوله و یک‌بار مصرف مانند Codespaces یا VMهای موقت و بدون دسترسی‌های مدیریتی (Elevated Privileges) اجرا شود.