روابط عمومی شرکت ایدکو (توزیعکنندهی محصولات کسپرسکی در ایران)؛ کد تولیدشده توسط هوش مصنوعی در حال حاضر به طور گستردهای مورد استفاده قرار گرفته است — بر اساس برخی تخمینها، حدود ۴۰٪ از کدهای جدید در سال گذشته توسط هوش مصنوعی نوشته شدهاند. کوین اسکات، مدیر ارشد فناوری مایکروسافت، پیشبینی میکند که طی پنج سال آینده این رقم به ۹۵٪ خواهد رسید. نحوهی نگهداری و حفاظت صحیح از این کدها، به یک چالش جدی تبدیل شده است.
کارشناسان همچنان امنیت کدهای تولیدشده توسط هوش مصنوعی را پایین ارزیابی میکنند، زیرا این کدها پر از ایرادات کلاسیک برنامهنویسی هستند: آسیبپذیریهایی مانند تزریق SQL، افشای توکنها و اطلاعات محرمانه، سریالسازی ناامن، آسیبپذیریهای XSS، نقصهای منطقی، استفاده از رابطهای برنامهنویسی قدیمی (API)، الگوریتمهای رمزنگاری و هش ناامن، نداشتن مدیریت مناسب خطاها و ورودیهای نادرست کاربر، و بسیاری مشکلات دیگر. علاوه بر این، استفاده از دستیارهای هوشمند در توسعهی نرمافزار، یک مشکل غیرمنتظرهی دیگر نیز به همراه دارد: توهمات. پژوهش جدیدی به بررسی جزئیات نحوهی ایجاد این توهمات توسط مدلهای زبانی بزرگ (LLM) و ظهور آنها در کدهای تولیدی پرداخته است. نتایج نشان میدهد که برخی از کتابخانههایی که کدهای تولیدی به آنها ارجاع میدهند، اصلاً وجود خارجی ندارند.
وابستگیهای ساختگی در مدلهای زبانی متنباز و تجاری
برای مطالعهی پدیدهی کتابخانههای خیالی، پژوهشگران از ۱۶ مدل زبانی محبوب خواستند تا ۵۷۶ هزار نمونه کد پایتون و جاوااسکریپت تولید کنند. این مدلها میزان متفاوتی از ساخت و پرداخت را نشان دادند: GPT-4 و GPT-4 Turbo کمترین میزان توهم را داشتند (کمتر از ۵٪ از نمونهها دارای کتابخانههای ساختگی بودند)، پس از آن مدلهای DeepSeek قرار داشتند (بیش از ۱۵٪)، و در نهایت CodeLlama 7B بیشترین میزان خیالپردازی را نشان داد (بیش از ۲۵٪). جالب اینجاست که حتی تنظیمات مربوط به کنترل تصادفی بودن خروجی مدلها (مانند دما، top-p و top-k) نیز نتوانستند نرخ توهم را به مقدار ناچیزی کاهش دهند.
در کدهای پایتون وابستگیهای ساختگی کمتری (۱۶٪) نسبت به جاوااسکریپت (۲۱٪) مشاهده شد. عامل زمان نیز تاثیرگذار بود: استفاده از بستهها، فناوریها و الگوریتمهایی که تازه در سال گذشته محبوب شدهاند، منجر به ۱۰٪ وابستگیهای ساختگی بیشتر شد. اما خطرناکترین نکته دربارهی بستههای ساختگی این است که نام آنها تصادفی انتخاب نمیشود، بلکه شبکههای عصبی بارها و بارها به همان کتابخانههای ساختگی ارجاع میدهند. این موضوع در مرحلهی دوم آزمایش مشخص شد؛ جایی که پژوهشگران ۵۰۰ پرسشی را که منجر به توهم شده بود انتخاب و هر یک را ۱۰ بار تکرار کردند. نتایج نشان داد که ۴۳٪ از بستههای ساختگی در هر بار تولید مجدد ظاهر شدند.
یکی دیگر از نکات جالب، نحوهی نامگذاری بستههای ساختگی است: ۱۳٪ این بستهها تنها با یک حرف اختلاف نسبت به بستههای واقعی نامگذاری شدهاند (اشتباه تایپی)، ۹٪ از نامهای مربوط به زبانهای برنامهنویسی دیگر (مثلاً کدهای پایتون برای بستههای npm) قرض گرفته شدهاند، و ۳۸٪ نامهایی منطقی داشتهاند اما اختلاف قابل توجهی با بستههای واقعی داشتند.
آشنایی با Slopsquatting
تمام این مسائل میتواند زمینهساز نسل جدیدی از حملات به مخازن متنباز شود؛ حملاتی که اکنون به تقلید از "Typosquatting"، Slopsquatting نام گرفتهاند. در این نوع حمله، تصاحب دامنه یا کتابخانه نه از طریق غلطهای تایپی، بلکه از طریق دادههای بیکیفیت تولیدشده توسط هوش مصنوعی صورت میگیرد. از آنجا که کدهای تولیدی توسط هوش مصنوعی نام بستههای خیالی را بارها تکرار میکنند، مهاجمان میتوانند مدلهای محبوب را اجرا کرده، نام بستههای خیالی تکراری را شناسایی کنند و کتابخانههای واقعی — اما مخرب — با همین نامها منتشر کنند. اگر توسعهدهندهای بدون دقت تمام بستههای مورد ارجاع در کد تولیدشده را نصب کند، یا دستیار هوشمند خودش اقدام به نصب بستهها کند، یک وابستگی مخرب وارد برنامهی کامپایلشده شده و زنجیرهی تامین را در معرض حملهی جدی قرار میدهد (ATT&CK T1195.001)). این خطر با گسترش "کدنویسی احساسی" — یعنی نوشتن کد از طریق دادن دستورات به هوش مصنوعی بدون بررسی دقیق خروجی — بیشتر هم خواهد شد. با توجه به اینکه تمام مخازن اصلی متنباز در سال گذشته چندین بار با بستههای مخرب آلوده شدهاند (حداقل ۲۰ هزار کتابخانهی مخرب کشف شده است)، میتوان مطمئن بود که دیر یا زود این روش جدید نیز توسط مهاجمان سازماندهی خواهد شد. این سناریو به ویژه برای برنامهنویسان مبتدی و همچنین تیمهای IT سازمانی که پروژههای اتوماسیون داخلی انجام میدهند، خطرناک است.
چگونه با slopsquatting مقابله کنیم و از هوش مصنوعی به صورت ایمن استفاده کنیم؟
راهنماهایی برای پیادهسازی ایمن هوش مصنوعی در توسعهی نرمافزار وجود دارد (مانند OWASP، NIST و راهنمای اختصاصی ما)، اما بسیاری از آنها بسیار گسترده و اجرای آنها زمانبر است. بنابراین، در اینجا چند راهکار ساده و کاربردی برای مقابله با مشکل بستههای خیالی ارائه شده است:
- افزودن اسکن کد منبع و تست امنیتی ایستا به چرخه توسعه: همهی کدها، حتی کدهای تولیدشده توسط هوش مصنوعی، باید معیارهای مشخصی را رعایت کنند: عدم وجود توکنها یا اسرار تعبیه شده، استفاده از نسخههای صحیح کتابخانهها و وابستگیها و غیره. این کارها به راحتی در چرخه CI/CD قابل ادغام است — مثلاً با کمک ابزار Kaspersky Container Security.
- افزودن چرخههای اعتبارسنجی اضافی توسط خود مدل هوش مصنوعی: مدل باید پس از تولید کد، خودش آن را از نظر وجود خطا بررسی کند. همچنین میتوان از مدل خواست میزان محبوبیت و کاربردپذیری هر بستهی مورد ارجاع را تحلیل کند. استفاده از پایگاههای دادهی آمادهی کتابخانههای محبوب برای بهبود مدل و بهرهگیری از تکنیک بازیابی تقویتشده (RAG) نیز تعداد خطاها را کاهش میدهد. در این مطالعه، با این روشها نرخ بستههای ساختگی به ۲.۴٪ برای DeepSeek و ۹.۳٪ برای CodeLlama کاهش یافته است. البته این ارقام هنوز با صفر فاصلهی زیادی دارند.
- ممنوعیت استفاده از دستیارهای هوش مصنوعی در توسعهی اجزای حیاتی و مورد اعتماد: برای بخشهایی که استفاده از هوش مصنوعی مجاز است، فرآیند بررسی کد باید توسط توسعهدهندهی انسانی انجام شود، با استفاده از یک چکلیست مخصوص کدهای تولیدشده توسط هوش مصنوعی.
- ایجاد فهرستی از وابستگیهای مورد اعتماد: دستیارهای هوشمند و کاربران انسانی باید تنها امکان استفاده از کتابخانهها و وابستگیهای تاییدشدهی داخلی را داشته باشند.
- آموزش توسعهدهندگان: برنامهنویسان باید در زمینهی امنیت هوش مصنوعی و کاربرد ایمن آن در توسعهی نرمافزار آموزش ببینند.
کسپرسکی آنلاین (ایدکو)
کسپرسکی اسم یکی از بزرگترین شرکتهای امنیتی و سازنده آنتی ویروس است که برخی از کاربران اشتباهاً این شرکت و محصولات آنتی ویروس آن را با عناوینی نظیر کسپرسکای،کاسپرسکی، کسپراسکای، کسپراسکای، و یا کاسپراسکای نیز میشناسد. همچنین لازم به ذکر است مدیرعامل این شرکت نیز یوجین کسپرسکی نام دارد.