این مقاله به بررسی پیامدهای امنیتی استفاده از GitHub Copilot، یک ابزار تولید کد مبتنی بر هوش مصنوعی، از طریق تجزیه و تحلیل کدهای تولید شده توسط آن برای یافتن آسیبپذیریها میپردازد.
مقدمه
- ابزارهای تولید کد مبتنی بر یادگیری ماشین (ML) مانند GitHub Copilot به دلیل افزایش فشار بر توسعهدهندگان برای تولید سریع کد، محبوبیت زیادی پیدا کردهاند.
- Copilot روی حجم عظیمی از کد متنباز، از جمله کدهایی با الگوهای ناامن، آموزش داده شدهاست که نگرانیهایی را در مورد امنیت پیشنهادات آن ایجاد میکند.
- این مطالعه به طور سیستماتیک شیوع و شرایطی را که منجر به توصیه کد ناامن توسط Copilot میشود، بررسی میکند.
روششناسی
- محققان، Copilot را برای تولید کد در سناریوهای مرتبط با نقاط ضعف امنیت سایبری با ریسک بالا، به ویژه موارد موجود در لیست "25 آسیبپذیری برتر" CWE MITRE، تحریک کردند.
- آنها عملکرد Copilot را در سه بعد بررسی کردند:
- تنوع ضعفها (DOW): آزمایش توانایی آن در جلوگیری از تولید کد با آسیبپذیریهای مختلف CWE.
- تنوع اعلانها (DOP): بررسی پاسخ آن به اعلانهای مختلف برای یک آسیبپذیری واحد (تزریق SQL).
- تنوع دامنه: ارزیابی عملکرد آن در تولید کد برای یک دامنه کمتر رایج (Verilog برای طراحی سختافزار).
- کد تولید شده با استفاده از CodeQL و بازرسی دستی برای شناسایی نقاط ضعف امنیتی تجزیه و تحلیل شد.
نتایج
- از 1689 برنامه تولید شده در 89 سناریو، تقریباً 40٪ آسیبپذیر شناخته شدند.
- Copilot حداقل یک بار در هر سناریو، کد آسیبپذیر تولید کرد.
- برخی از CWEها (به عنوان مثال، CWE-22 پیمایش مسیر) در کد تولید شده بیشتر از سایرین (به عنوان مثال، CWE-79 اسکریپتنویسی متقابل سایت) شیوع داشتند.
- تغییرات کوچک در اعلان، حتی در نظرات، میتواند بر امنیت کد تولید شده تأثیر بگذارد.
- Copilot در تولید کد Verilog در مقایسه با پایتون و C، احتمالاً به دلیل دادههای آموزشی کمتر، با مشکل مواجه شد.
بحث
- عملکرد امنیتی مختلط Copilot به کیفیت امنیتی متغیر کد متنبازی که روی آن آموزش داده شدهاست، نسبت داده میشود.
- شیوههای برتر قدیمی در دادههای آموزشی میتواند منجر به پیشنهاد رویکردهای ناامن توسط Copilot شود.
مشاهده مطلب اصلی