دستیارهای کدنویسی مبتنی بر هوش مصنوعی نام بسته‌هایی را ارائه می‌دهند که وجود خارجی ندارند، و مهاجمان این توهمات را به ریسک‌های واقعی در زنجیره تأمین تبدیل می‌کنند.

زمانی که بار لانیادو (Bar Lanyado)، پژوهشگر امنیتی از Lasso Security، از یک ابزار کدنویسی مبتنی بر هوش مصنوعی یک کلاینت پایتون خواست، مدل پیشنهاد نصب huggingface-cli را داد. این بسته یک نام خیالی است؛ کتابخانه اصلی تحت نام huggingface_hub فعالیت می‌کند. لانیادو برای اثبات این خطر، نام جعلی را در Python Package Index (PyPI) به عنوان یک جایگزین خالی ثبت کرد. ظرف مدت سه ماه، این نام رزرو شده بیش از ۳۰,۰۰۰ دانلود داشت، در مستندات عمومی ظاهر شد و حتی در نمونه کدهای استخراج‌شده از مخازن Alibaba دیده شد.

چگونه یک بسته خیالی به یک تهدید واقعی تبدیل می‌شود

۱. دستور (Prompt) ← توهم – توسعه‌دهنده از هوش مصنوعی کمک می‌خواهد. مدل که بر روی داده‌های پرنویز اینترنت آموزش دیده است، یک نام بسته با ظاهر باورپذیر ابداع می‌کند. ۲. کپی-پیست ← مستندات – پیشنهاد مذکور در یک فایل README، یک پاسخ در Stack Overflow یا یک ویکی داخلی قرار می‌گیرد. پس از نوشته شدن، این نام در میان جامعه برنامه‌نویسان پخش می‌شود. ۳. ادغام در کد – توسعه‌دهنده با اعتماد به هوش مصنوعی، نام را به فایل requirements اضافه کرده و آن را به محیط عملیاتی (production) می‌فرستد.

چرا دفاع‌های موجود این مشکل را نادیده می‌گیرند

ابزارهای تحلیل ایستا (Static analysis) و اسکنرهای آسیب‌پذیری به دنبال CVEهای شناخته‌شده و کتابخانه‌هایی با تاریخچه انتشار هستند. یک بسته که به تازگی منتشر شده و قبل از پیشنهاد هوش مصنوعی، صفر دانلود داشته است، فاقد CVE و اعتبار است و بنابراین «پاک» به نظر می‌رسد. بررسی استانداردِ «آیا این نسخه آسیب‌پذیر است؟» پاسخ منفی می‌دهد و به توسعه‌دهندگان احساس امنیت کاذبی می‌بخشد.

آنچه این آزمایش ثابت می‌کند

  • نام‌های ابداع‌شده توسط هوش مصنوعی به محیط عملیاتی می‌رسند – وجود بیش از ۳۰,۰۰۰ دانلود نشان می‌دهد که توسعه‌دهندگان واقعاً در حال دریافت این بسته‌های خیالی هستند.
  • توهمات به مستندات تبدیل می‌شوند – زمانی که یک نام جعلی در یک راهنمای عمومی ظاهر شود، می‌تواند برای مدت نامحدودی باقی بماند و خطا را منتشر کند.
  • ثبت نام بسیار ساده است – انتشار یک بسته در PyPI هزینه‌ای ندارد و تنها چند دقیقه زمان می‌برد، که این امر مانع ورود به سوءاستفاده از زنجیره تأمین را کاهش می‌دهد.

گام‌های دفاعی که واقعاً موثر هستند

  • هر وابستگی (dependency) را اعتبارسنجی کنید – قبل از اضافه کردن یک نیاز جدید، در ایندکس بسته‌ها جستجو کنید و مطمئن شوید که نام آن با یک کتابخانه موجود و مستند شده مطابقت دارد.
  • با منابع رسمی تطبیق دهید – نام پیشنهادی را با مخزن فروشنده یا راهنمای نصب رسمی مقایسه کنید.
  • با بسته‌های جدید و کم‌کاربرد به عنوان ریسک بالا برخورد کنید – هر وابستگی که کمتر از چند دانلود داشته یا تاریخ انتشار بسیار جدیدی دارد را برای بررسی دستی علامت‌گذاری کنید.

آنچه باید در آینده زیر نظر داشت

نتیجه‌گیری ساده است: یک پیشنهاد هوش مصنوعی تضمین‌کننده نیست. با هر وابستگی جدید مانند یک مؤلفه شخص ثالث بررسی‌نشده برخورد کنید، منشأ آن را تأیید کنید و پیش از آنکه اجازه دهید یک بسته خیالی به محیط عملیاتی نفوذ کند، زنجیره تأمین را زیر نظر داشته باشید.