بر اساس تحقیقات جدید منتشر شده، کدهای کامپیوتری تولید شده توسط هوش مصنوعی مملو از ارجاعاتی به کتابخانههای شخص ثالث غیرموجود است. این وضعیت فرصت طلایی برای حملات زنجیره تامین ایجاد میکند که برنامههای قانونی را با بستههای مخرب آلوده میکند. این بستههای مخرب میتوانند دادهها را سرقت کنند، درهای پشتی (backdoors) کار بگذارند و اقدامات مخرب دیگری را انجام دهند.
این مطالعه که از ۱۶ مدل زبان بزرگ (LLM) پرکاربرد برای تولید ۵۷۶,۰۰۰ نمونه کد استفاده کرد، نشان داد که ۴۴۰,۰۰۰ از وابستگیهای بستهای (package dependencies) که در آنها وجود داشت "توهمی" (hallucinated) بودند، به این معنی که وجود خارجی نداشتند. مدلهای متنباز بیشترین توهم را داشتند؛ ۲۱ درصد از وابستگیها به کتابخانههای غیرموجود لینک میشدند. وابستگی یک جزء کد ضروری است که قطعه کد دیگری برای عملکرد صحیح به آن نیاز دارد. وابستگیها توسعهدهندگان را از زحمت بازنویسی کد نجات میدهند و بخش اساسی زنجیره تامین نرمافزار مدرن هستند.
فلاشبکهایی به توهم بسته
این وابستگیهای غیرموجود با تشدید حملات موسوم به سردرگمی وابستگی (dependency confusion) تهدیدی برای زنجیره تامین نرمافزار محسوب میشوند. این حملات با وادار کردن یک بسته نرمافزاری به دسترسی به وابستگی جزء نادرست عمل میکنند. برای مثال، مهاجم یک بسته مخرب منتشر میکند و نام آن را با نام بسته قانونی یکی میگذارد، اما با شماره نسخه بالاتر. نرمافزاری که به بسته وابسته است، در برخی موارد، نسخه مخرب را بهجای نسخه قانونی انتخاب میکند، زیرا نسخه مخرب جدیدتر بهنظر میرسد.
این نوع حمله که به نام سردرگمی بسته (package confusion) نیز شناخته میشود، اولین بار در سال ۲۰۲۱ در یک اثبات مفهوم (proof-of-concept) نشان داده شد که کد تقلبی را در شبکههای متعلق به برخی از بزرگترین شرکتهای جهان، از جمله اپل، مایکروسافت و تسلا، اجرا میکرد. این یکی از انواع تکنیکهای مورد استفاده در حملات زنجیره تامین نرمافزار است که هدفشان آلوده کردن نرمافزار در منبع اصلی آن است تا همه کاربران پاییندستی را آلوده کنند.
جوزف اسپراکلن، دانشجوی دکترا در دانشگاه تگزاس در سن آنتونیو و محقق اصلی، از طریق ایمیل به Ars گفت: «هنگامی که مهاجم بستهای را با نام توهمی منتشر میکند که حاوی کد مخرب است، به مدل (LLM) تکیه میکند که آن نام را به کاربران ناآگاه پیشنهاد دهد. اگر کاربر به خروجی LLM اعتماد کرده و بسته را بدون بررسی دقیق نصب کند، بار مخرب مهاجم که در بسته مخرب پنهان شده است، روی سیستم کاربر اجرا خواهد شد.»
در هوش مصنوعی، توهم زمانی رخ میدهد که LLM خروجیهایی تولید کند که از نظر واقعی نادرست، بیمعنی یا کاملاً بیربط به وظیفه محول شده باشند. توهم مدتهاست که گریبانگیر LLMها بوده است، زیرا سودمندی و قابل اعتماد بودن آنها را کاهش میدهد و پیشبینی و رفع آنها به طرز عجیبی دشوار بوده است. در مقالهای که قرار است در سمپوزیوم امنیت USENIX سال ۲۰۲۵ ارائه شود، آنها این پدیده را "توهم بسته" نامیدهاند.
برای این مطالعه، محققان ۳۰ آزمایش انجام دادند؛ ۱۶ آزمایش در زبان برنامهنویسی پایتون و ۱۴ آزمایش در جاوااسکریپت، که ۱۹,۲۰۰ نمونه کد در هر آزمایش، در مجموع ۵۷۶,۰۰۰ نمونه کد تولید کردند. از ۲.۲۳ میلیون ارجاع به بسته که در این نمونهها وجود داشت، ۴۴۰,۴۴۵ مورد، یا ۱۹.۷ درصد، به بستههایی اشاره داشتند که وجود نداشتند. از میان این ۴۴۰,۴۴۵ توهم بسته، ۲۰۵,۴۷۴ مورد دارای نام بسته منحصر به فرد بودند.
یکی از چیزهایی که توهمات بسته را به طور بالقوه در حملات زنجیره تامین مفید میسازد این است که ۴۳ درصد از توهمات بسته در بیش از ۱۰ پرسوجو تکرار شدند. محققان نوشتند: «علاوه بر این، در ۵۸ درصد موارد، یک بسته توهمی بیش از یک بار در ۱۰ تکرار تکرار میشود، که نشان میدهد اکثر توهمات فقط خطاهای تصادفی نیستند، بلکه پدیدهای قابل تکرار هستند که در چندین تکرار ادامه دارد. این مهم است زیرا یک توهم پایدار برای بازیگران مخربی که به دنبال بهرهبرداری از این آسیبپذیری هستند، باارزشتر است و بردار حمله توهم را به تهدیدی قابل قبولتر تبدیل میکند.»
به عبارت دیگر، بسیاری از توهمات بسته، خطاهای تصادفی و یکباره نیستند. بلکه نامهای خاص بستههای غیرموجود بارها و بارها تکرار میشوند. مهاجمان میتوانند با شناسایی بستههای غیرموجودی که به طور مکرر توهم میشوند، از این الگو استفاده کنند. سپس مهاجمان بدافزار را با استفاده از این نامها منتشر کرده و منتظر دسترسی تعداد زیادی از توسعهدهندگان به آنها میمانند.
این مطالعه تفاوتهایی را در LLMها و زبانهای برنامهنویسی که بیشترین توهم بسته را تولید کردند، نشان داد. میانگین درصد توهمات بسته تولید شده توسط LLMهای متنباز مانند CodeLlama و DeepSeek نزدیک به ۲۲ درصد بود، در مقایسه با کمی بیش از ۵ درصد برای مدلهای تجاری. کدهای نوشته شده به زبان پایتون کمتر از کدهای جاوااسکریپت توهم داشتند؛ با میانگین تقریباً ۱۶ درصد در مقایسه با کمی بیش از ۲۱ درصد برای جاوااسکریپت. در پاسخ به این سؤال که چه چیزی باعث این تفاوتها شده است، اسپراکلن نوشت:
این سوال دشواری است زیرا مدلهای زبان بزرگ سیستمهای فوقالعاده پیچیدهای هستند که ردیابی مستقیم علیت را سخت میکند. با این حال، ما تفاوت قابل توجهی بین مدلهای تجاری (مانند سری ChatGPT) و مدلهای متنباز مشاهده کردیم، که تقریباً مطمئناً به تعداد پارامترهای بسیار بزرگتر انواع تجاری نسبت داده میشود. بیشتر تخمینها نشان میدهند که مدلهای ChatGPT حداقل ۱۰ برابر بیشتر از مدلهای متنباز که ما آزمایش کردیم پارامتر دارند، اگرچه معماری دقیق و جزئیات آموزش اختصاصی باقی میمانند. جالب اینجاست که در میان مدلهای متنباز، ما ارتباط مشخصی بین اندازه مدل و نرخ توهم پیدا نکردیم، احتمالاً به این دلیل که همه در محدوده پارامتری نسبتاً کوچکتر عمل میکنند.
فراتر از اندازه مدل، تفاوت در دادههای آموزشی، تنظیم دقیق (fine-tuning)، آموزش دستوری (instruction training) و تنظیم ایمنی (safety tuning) همگی احتمالاً در نرخ توهم بسته نقش دارند. این فرآیندها برای بهبود قابلیت استفاده مدل و کاهش انواع خاصی از خطاها در نظر گرفته شدهاند، اما ممکن است اثرات ناخواستهای بر پدیدههایی مانند توهم بسته داشته باشند.
به طور مشابه، نسبت دادن قطعی نرخ توهم بالاتر برای بستههای جاوااسکریپت در مقایسه با پایتون نیز دشوار است. ما حدس میزنیم که این ناشی از این واقعیت است که اکوسیستم جاوااسکریپت تقریباً ۱۰ برابر بیشتر از پایتون بسته دارد، همراه با یک فضای نام پیچیدهتر. با یک چشمانداز بسته بسیار بزرگتر و پیچیدهتر، به یاد آوردن دقیق نام بستههای خاص برای مدلها سختتر میشود، که منجر به عدم قطعیت بیشتر در پیشبینیهای داخلی آنها و در نهایت، نرخ بالاتری از بستههای توهمی میشود.
یافتهها جدیدترین شواهدی هستند که عدم قابل اعتماد بودن ذاتی خروجی LLM را نشان میدهند. با پیشبینی کوین اسکات، مدیر ارشد فناوری مایکروسافت، که ۹۵ درصد کدها ظرف پنج سال آینده توسط هوش مصنوعی تولید خواهند شد، امیدواریم توسعهدهندگان این پیام را جدی بگیرند.