هوش مصنوعی ۳۰۰ باگ در افزونههای وردپرس را در ۷۲ ساعت پیدا کرد
هوش مصنوعی با سرعت باگها را پیدا میکند. همچنین با سرعت کد مینویسد. این موضوع شکاف خطرناکی برای توسعهدهندگان افزونه ایجاد میکند.
محققان امنیتی از هوش مصنوعی برای یافتن بیش از ۳۰۰ آسیبپذیری بحرانی «روز صفر» (zero-day) در اکوسیستم وردپرس استفاده کردند. آنها این کار را تنها در ۷۲ ساعت انجام دادند.
مشکل، «vibe coding» است. این زمانی رخ میدهد که توسعهدهندگان کدی تولید شده توسط LLMها را منتشر میکنند که قادر به بازبینی (audit) آن نیستند. یک افزونه به همین دلیل ۱۰۰ مشکل امنیتی مجزا داشت.
هوش مصنوعی دو لایه حفاظتی قدیمی شما را از بین میبرد: زمان و پنهانکاری (obscurity).
مهاجمان اکنون از هوش مصنوعی برای یافتن حفرهها استفاده میکنند. توسعهدهندگان از هوش مصنوعی برای نوشتن کد استفاده میکنند. این کدها اغلب مراحل امنیتی را نادیده میگیرند، مانند:
- پاکسازی دادهها (Escaping data)
- بررسی سطح دسترسی (Capability checks)
- اعتبارسنجی Nonce
فاصله زمانی بین گزارش عمومی یک باگ تا بهرهبرداری گسترده از آن، اکنون تنها پنج ساعت است. این فرصتی برای واکنش نیست؛ بلکه مسابقهای است که شما در آن بازنده خواهید بود.
من این را به سختی یاد گرفتم. من یک افزونه چتبات هوش مصنوعی ساخته بودم. یک بررسی امنیتی ۳۵ باگ در کد من پیدا کرد. یکی از آنها تزریق HTML (HTML injection) بود.
من اشتباه کردم. من به خروجی هوش مصنوعی اعتماد کردم. فکر میکردم چون یک مدل متن را تولید کرده، پس امن است. اما نبود. خروجی مدل شامل دادههایی از کاربران و سایتهای خارجی است. شما باید با آن به عنوان دادهای غیرقابل اعتماد برخورد کنید.
من گردش کار خود را تغییر دادم. دیگر تصور نمیکنم که کد صرفاً چون اجرا میشود، امن است. من هر بخش نوشته شده توسط هوش مصنوعی را به صورت دستی در سه حوزه بررسی میکنم:
- ورودی (Input): چگونه دادهها وارد سیستم میشوند.
- خروجی (Output): چگونه دادهها از سیستم خارج میشوند.
- مجوزها (Permissions): چه کسی میتواند آن عمل را انجام دهد.
در بخش خروجی، اکنون از توابعی مانند esc_html و wp_kses استفاده میکنم. برای هر عملیات نوشتن در پایگاه داده از $wpdb->prepare استفاده میکنم. در هر نقطه ورود، مجوزها را با current_user_can بررسی میکنم.
بحران واقعی فقط باگها نیستند، بلکه زمان پاسخگویی است.
- ۵۲٪ از توسعهدهندگان پیش از عمومی شدن یک باگ، وصلهای (patch) منتشر نمیکنند.
- ۴۶٪ از باگهای فاش شده، اصلاً هیچ راه حلی ندارند.
اکثر توسعهدهندگان به تنهایی کار میکنند. آنها پولی برای رفع سریع باگها دریافت نمیکنند. هوش مصنوعی این شکاف را آشکار میکند.
اگر افزونه منتشر میکنید، فقط با دقت بنویسید و امیدوار باشید، کافی نیست. فرض کنید مهاجمان در عرض چند ثانیه حفرههای شما را پیدا خواهند کرد.
این دفاعها را ایجاد کنید:
- تمام ورودیها، خروجیها و مجوزها را به صورت دستی بازبینی کنید.
- تمام پاسخهای مدل را پاکسازی (Sanitize) کنید.
- راهی ایجاد کنید تا افراد بتوانند باگها را به صورت خصوصی به شما گزارش دهند.
داشتن یک راه ارتباطی امنیتی ساده در فایل readme شروع خوبی است. شما به کانالی برای دریافت گزارشها نیاز دارید، پیش از آنکه یک باگ به یک تهدید عمومی تبدیل شود.
