محققان امنیتی در شرکت مدیریت ریسک سایبری Vulcan.io اثبات مفهومی را منتشر کردند که نشان میدهد چگونه هکرها میتوانند از ChatGPT 3.5 برای انتشار کدهای مخرب از مخازن مورد اعتماد استفاده کنند.
این تحقیق توجه را به خطرات امنیتی ذاتی در تکیه بر پیشنهادات ChatGPT برای راه حل های کدگذاری جلب می کند.
روش شناسی
محققان سوالات متداول کدگذاری را در Stack Overflow (یک انجمن پرسش و پاسخ کدنویسی) گردآوری کردند.
آنها 40 موضوع کدگذاری (مانند تجزیه، ریاضی، فن آوری های خراش دادن و غیره) را انتخاب کردند و از 100 سوال اول برای هر یک از 40 موضوع استفاده کردند.
مرحله بعدی فیلتر کردن سؤالات «چگونه» بود که شامل بسته های برنامه نویسی در پرس و جو می شد.
سوالات پرسیده شده در زمینه Node.js و Python بود.
Vulcan.io توضیح می دهد:
تمام این سوالات با زبان برنامه نویسی همراه با سوال (node.js، python، go) فیلتر شدند. پس از جمع آوری بسیاری از سؤالات متداول، لیست را فقط به سؤالات “چگونه” محدود کردیم.
سپس، ما از ChatGPT از طریق API آن همه سوالاتی را که جمع آوری کرده بودیم پرسیدیم.
ما از API استفاده کردیم تا رویکرد مهاجم را تکرار کنیم تا در کمترین زمان ممکن، بستههای توصیههای موجود را تا حد امکان دریافت کنیم.
علاوه بر هر سؤال، و به دنبال پاسخ ChatGPT، یک سؤال بعدی اضافه کردیم که در آن از آن خواستیم بستههای بیشتری را ارائه دهد که همچنین به سؤال پاسخ میداد.
ما همه مکالمات را در یک فایل ذخیره کردیم و سپس پاسخ های آنها را تجزیه و تحلیل کردیم.
آنها سپس پاسخ ها را اسکن کردند تا توصیه هایی از بسته های کدی که وجود نداشت را بیابند.
تا 35 درصد از بستههای کد ChatGPT توهم داشتند
از 201 سوال Node.js ChatGPT 40 بسته را توصیه کرد که وجود نداشت. این بدان معنی است که 20٪ از پاسخ های ChatGPT حاوی بسته های کد توهم هستند.
برای سؤالات پایتون، از 227 سؤال، بیش از یک سوم پاسخها شامل بستههای کد توهمآمیز بود، 80 بسته که وجود نداشت.
در واقع، تعداد کل بسته های منتشر نشده حتی بیشتر بود.
محققان مستند کردند:
در Node.js، ما 201 سؤال را مطرح کردیم و مشاهده کردیم که بیش از 40 سؤال از این سؤالات پاسخی را به همراه داشت که شامل حداقل یک بسته بود که منتشر نشده بود.
در مجموع بیش از 50 بسته npm منتشر نشده دریافت کردیم.
در پایتون ما 227 سوال پرسیدیم و برای بیش از 80 سوال، حداقل یک بسته منتشر نشده دریافت کردیم که در مجموع بیش از 100 بسته پیپ منتشر نشده را ارائه میکرد.
اثبات مفهوم (PoC)
آنچه در ادامه می آید اثبات مفهوم است. آنها نام یکی از بسته های کد موجود را که قرار بود در مخزن NPM وجود داشته باشد را انتخاب کردند و یکی با همین نام در آن مخزن ایجاد کردند.
فایلی که آنها آپلود کردند مخرب نبود اما به خانه تلفن زد تا اعلام کند که توسط شخصی نصب شده است.
آنها می نویسند:
“برنامه نام میزبان دستگاه، بسته ای که از آن آمده و مسیر مطلق دایرکتوری حاوی فایل ماژول را به سرور عامل تهدید ارسال می کند…”
اتفاقی که بعدا افتاد این بود که یک “قربانی” آمد، همان سوالی را که مهاجم انجام داد پرسید، ChatGPT بسته حاوی کد “مخاطب” و نحوه نصب آن را توصیه کرد.
و مطمئناً بسته نصب و فعال شده است.
محققین اتفاقات بعدی را توضیح دادند:
قربانی بسته مخرب را به دنبال توصیه ChatGPT نصب می کند.
مهاجم بر اساس فراخوانی پیشنصبی ما به node index.js به نام میزبان طولانی، دادهها را از قربانی دریافت میکند.
مجموعه ای از تصاویر اثبات مفهومی جزئیات نصب را توسط کاربر ناآگاه نشان می دهد.
چگونه از خود در برابر راهکارهای کدگذاری بد ChatGPT محافظت کنیم
محققان توصیه می کنند که قبل از دانلود و نصب هر بسته، بهتر است به دنبال سیگنال هایی باشید که ممکن است نشان دهنده مخرب بودن بسته باشد.
به دنبال مواردی مانند تاریخ ایجاد، تعداد بارگیریها و عدم وجود نظرات مثبت و عدم وجود یادداشتهای پیوست شده به کتابخانه باشید.
آیا ChatGPT قابل اعتماد است؟
ChatGPT برای ارائه پاسخ های صحیح آموزش ندیده است. برای ارائه پاسخ هایی که درست به نظر می رسند آموزش داده شده بود.
این تحقیق پیامدهای آن آموزش را نشان می دهد. این به این معنی است که قبل از استفاده از ChatGPT تأیید صحت همه حقایق و توصیههای ChatGPT بسیار مهم است.
فقط قبول نکنید که خروجی خوب است، آن را تأیید کنید.
مخصوص کدنویسی، ممکن است قبل از نصب هر بسته توصیه شده توسط ChatGPT دقت بیشتری داشته باشید.
اسناد اصلی تحقیق را بخوانید:
آیا می توانید به توصیه های بسته ChatGPT اعتماد کنید؟
تصویر برجسته توسط Shutterstock/Roman Samborskyi