تیم Project Zero گوگل به مقایسه دو ابزار خودکار که برای شناسایی آسیبپذیریها در موتور جاوااسکریپت کروم (V8) استفاده میشوند، پرداخته است. این دو ابزار عبارتند از Fuzzilli که یک Fuzzer مولد (Generative) برای موتورهای جاوااسکریپت است و BigSleep که سیستمی مبتنی بر مدلهای زبانی بزرگ (LLM) برای یافتن باگهاست.
نتایج کمی و نرخ شناسایی
در یک بازه ششماهه، BigSleep توانست تعداد بیشتری آسیبپذیری را نسبت به Fuzzilli شناسایی کند (۴۵ مورد در مقابل ۳۷ مورد). با این حال، تحلیلها نشان میدهد که همپوشانی (Overlap) بین باگهای گزارش شده توسط این دو سیستم در محیط عملیاتی حدود ۲۵٪ است. در آزمایشهای اختصاصی برای بررسی همپوشانی تئوریک، این عدد به حدود ۶۰٪ رسید. این نتایج ثابت میکند که بخش قابل توجهی از آسیبپذیریها تنها توسط LLMها یا تنها از طریق Fuzzing قابل شناسایی هستند.
مکمل بودن رویکردها
اگرچه توانایی LLMها در شناسایی سریع باگها بسیار نویدبخش است، اما Fuzzing و هوش مصنوعی همچنان رویکردهایی مکمل یکدیگر هستند. گوگل توصیه میکند که توسعهدهندگان برای به حداکثر رساندن تعداد آسیبپذیریهای شناسایی شده پیش از اثرگذاری بر کاربران، هر دو روش Fuzzing و تحلیلهای Agentic را به طور همزمان به کار بگیرند.
تحلیل عمیقتر همپوشانی و دشواری باگها
در بررسی رابطه بین «دشواری باگ» و «قابلیت شناسایی»، نتایج جالبی به دست آمد. معیار دشواری باگ بر اساس زمانی که Fuzzilli برای یافتن آن صرف کرده بود، اندازهگیری شد. یافتهها نشان داد باگهایی که برای یک Fuzzer سخت هستند، احتمالاً برای یک Agent مبتنی بر هوش مصنوعی نیز دشوار خواهند بود. همچنین، همپوشانی در بخش کامپایلرهای JIT (Just-In-Time) به طور قابل توجهی کمتر بود، جایی که Fuzzilli تخصص بیشتری دارد.
مطالعه موردی: قدرت استدلال در BigSleep
یکی از نمونههای برجسته عملکرد BigSleep، شناسایی باگی در مربوط به Temporal Dead Zone (TDZ) در جاوااسکریپت بود. در V8، متغیرهایی که با let یا const تعریف میشوند، تا زمان مقداردهی اولیه در وضعیت TDZ قرار دارند و دسترسی به آنها منجر به خطا میشود. V8 برای بهینهسازی عملکرد، بررسیهای تکراری TDZ را حذف میکند.
سیستم BigSleep با تحلیل یک Patch قبلی، متوجه شد که منطق حذف بررسیها در مورد labeled breaks (شکستن حلقههای تودرتو با برچسب) دچار نقص است. این Agent با فرموله کردن یک فرضیه آسیبپذیری و نوشتن یک Proof-of-Concept (PoC) پیچیده که شامل دستور switch برای دور زدن مکانیسمهای حفاظتی بود، توانست باگی را پیدا کند که احتمالاً برای یک Fuzzer سنتی، تحریک کردن آن در زمان معقول بسیار دشوار بود.
جمعبندی فنی
- Fuzzing: در شناسایی باگهای مربوط به کامپایلر و موارد Edge-caseهای ساختاری همچنان برتری دارد.
- LLM-based Agents: در درک منطق کد، تحلیل Patchها و استدلال برای یافتن گونههای جدید (Variants) از باگهای شناخته شده بسیار توانمندتر هستند.
- استراتژی پیشنهادی: ترکیب هر دو متدولوژی برای پوشش حداکثری سطح حمله (Attack Surface).