آیا ما برای کدهای تولید شده توسط هوش مصنوعی آماده هستیم؟ هوش داده PlatoBlockchain. جستجوی عمودی Ai.

آیا ما برای کدهای تولید شده توسط هوش مصنوعی آماده هستیم؟

در ماه‌های اخیر، ما از کیفیت چهره‌های کامپیوتری، تصاویر گربه‌ها، فیلم‌ها، مقاله‌ها و حتی هنر شگفت‌زده شده‌ایم. هوش مصنوعی (AI) و یادگیری ماشین (ML) نیز با ابزارهایی مانند GitHub Copilot، Tabnine، Polycode، بی سر و صدا وارد توسعه نرم افزار شده اند. و دیگران برداشتن گام منطقی بعدی برای قرار دادن قابلیت تکمیل خودکار کد موجود بر روی استروئیدهای هوش مصنوعی. برخلاف عکس‌های گربه، منشاء، کیفیت و امنیت کد برنامه می‌تواند پیامدهای گسترده‌ای داشته باشد – و حداقل برای امنیت، تحقیقات نشان می‌دهد که این خطر واقعی است.

قبلا تحقیقات دانشگاهی قبلا نشان داده است که GitHub Copilot اغلب کدهایی با آسیب پذیری های امنیتی تولید می کند. اخیراً، تجزیه و تحلیل عملی از مهندس امنیت Invicti، کدیر ارسلان، این را نشان داد پیشنهادات کد ناامن هنوز در مورد Copilot به جای استثنا قاعده هستند. ارسلان دریافت که پیشنهادات برای بسیاری از وظایف رایج فقط شامل استخوان‌های خالی مطلق می‌شود که اغلب ابتدایی‌ترین و کم‌ایمن‌ترین مسیر را در پیش می‌گیرند، و پذیرش آنها بدون تغییر می‌تواند به برنامه‌های کاربردی اما آسیب‌پذیر منجر شود.

ابزاری مانند Copilot (بر اساس طراحی) تکمیل خودکار یک بریدگی است که بر روی کد منبع باز آموزش داده شده است تا قطعه‌هایی را پیشنهاد کند که می‌توانند در زمینه مشابه مرتبط باشند. این امر باعث می شود که کیفیت و امنیت پیشنهادات با کیفیت و امنیت مجموعه آموزشی مرتبط باشد. بنابراین سؤالات بزرگ‌تر در مورد Copilot یا هر ابزار خاص دیگری نیست، بلکه به طور کلی در مورد کد نرم‌افزار تولید شده توسط هوش مصنوعی است.

منطقی است که فرض کنیم Copilot تنها نوک نیزه است و ژنراتورهای مشابه در سال های آینده رایج خواهند شد. این بدان معناست که ما، صنعت فناوری، باید بپرسیم که چنین کدی چگونه تولید می‌شود، چگونه از آن استفاده می‌شود و چه کسی مسئولیت آن را بر عهده خواهد گرفت.

سندرم ساتناو

تکمیل خودکار کد سنتی که تعاریف توابع را برای تکمیل نام توابع جستجو می کند و به شما یادآوری می کند که به چه آرگومان هایی نیاز دارید، صرفه جویی زیادی در زمان دارد. از آنجایی که این پیشنهادات صرفاً میانبری برای جستجوی اسناد برای خودتان هستند، ما یاد گرفته‌ایم که به طور ضمنی به هر آنچه IDE پیشنهاد می‌کند اعتماد کنیم. هنگامی که یک ابزار مبتنی بر هوش مصنوعی وارد می‌شود، دیگر تضمینی برای صحت پیشنهادات آن وجود ندارد - اما همچنان احساس دوستانه و قابل اعتمادی دارند، بنابراین احتمال پذیرش آنها بیشتر است.

مخصوصاً برای توسعه‌دهندگان کم‌تجربه، راحتی دریافت یک بلوک کد رایگان باعث تغییر ذهنیت از «آیا این کد به اندازه کافی به آنچه می‌نویسم نزدیک است» به «چگونه می‌توانم این کد را تغییر دهم تا برای من کار کند» را تشویق می‌کند.

GitHub به وضوح بیان می کند که پیشنهادات Copilot همیشه باید به دقت تجزیه و تحلیل، بررسی و آزمایش شوند، اما طبیعت انسان حکم می کند که حتی کد زیرپارچه نیز گهگاه آن را به تولید برساند. این کمی شبیه رانندگی است در حالی که بیشتر به GPS خود نگاه می کنید تا جاده.

مسائل امنیتی زنجیره تامین

La بحران امنیتی Log4j اخیراً امنیت زنجیره تامین نرم‌افزار و به‌ویژه امنیت منبع باز را در کانون توجه قرار داده است یادداشت کاخ سفید در توسعه نرم افزار امن و جدید لایحه بهبود امنیت منبع باز. با این ابتکارات و سایر ابتکارات، داشتن هر کد منبع باز در برنامه های شما ممکن است به زودی باید در صورتحساب مواد نرم افزاری (SBOM) نوشته شود، که تنها در صورتی امکان پذیر است که شما آگاهانه یک وابستگی خاص را وارد کنید. ابزارهای تجزیه و تحلیل ترکیب نرم افزار (SCA) نیز برای شناسایی و علامت گذاری اجزای منبع باز قدیمی یا آسیب پذیر بر این دانش تکیه دارند.

اما اگر برنامه شما شامل کدهای تولید شده با هوش مصنوعی باشد که در نهایت از یک مجموعه آموزشی منبع باز منشا می گیرد، چه؟ از نظر تئوری، اگر حتی یک پیشنهاد اساسی با کد موجود یکسان باشد و همانطور که هست پذیرفته شود، می توانید کد منبع باز را در نرم افزار خود داشته باشید اما در SBOM خود نه. این امر می‌تواند منجر به مشکلات مربوط به انطباق شود، البته در صورتی که کد ناامن و منجر به نقض شود، ممکن است به مسئولیت‌پذیری اشاره نکنیم - و SCA به شما کمکی نمی‌کند، زیرا فقط می‌تواند وابستگی‌های آسیب‌پذیر را پیدا کند، نه آسیب‌پذیری‌ها را در کد شما. .

مشکلات صدور مجوز و اسناد

در ادامه این رشته فکر، برای استفاده از کد منبع باز، باید شرایط مجوز آن را رعایت کنید. بسته به مجوز منبع باز خاص، حداقل باید منبعی را ارائه دهید یا گاهی اوقات کد خود را به عنوان منبع باز منتشر کنید. برخی از مجوزها استفاده تجاری را به طور کلی ممنوع می کنند. مجوز هر چه باشد، باید بدانید که کد از کجا آمده و چگونه مجوز دارد.

دوباره، اگر کدهای تولید شده توسط هوش مصنوعی در برنامه خود داشته باشید که با کد منبع باز موجود یکسان باشد، چه؟ اگر ممیزی داشته باشید، آیا متوجه می‌شوید که از کد بدون ذکر منبع استفاده می‌کنید؟ یا شاید شما نیاز دارید که برخی از کدهای تجاری خود را منبع باز کنید تا مطابقت داشته باشید؟ شاید با ابزارهای کنونی، این هنوز ریسک واقع بینانه ای نباشد، اما اینها همان سوالاتی است که همه ما باید امروز بپرسیم، نه 10 سال دیگر. (و برای روشن بودن، GitHub Copilot یک فیلتر اختیاری برای مسدود کردن پیشنهادات مطابق با کد موجود برای به حداقل رساندن خطرات زنجیره تامین دارد.)

پیامدهای امنیتی عمیق تر

اگر به امنیت برگردیم، یک مدل AI/ML به اندازه مجموعه آموزشی آن خوب (و بد) است. ما این را در گذشته دیده ایم - به عنوان مثال، در موارد الگوریتم های تشخیص چهره که سوگیری های نژادی را نشان می دهد به دلیل داده هایی که بر روی آنها آموزش دیده اند. بنابراین اگر تحقیقاتی داشته باشیم که نشان می‌دهد یک تولیدکننده کد مکرراً پیشنهاداتی را بدون در نظر گرفتن امنیت ارائه می‌کند، می‌توانیم استنباط کنیم که مجموعه یادگیری آن (یعنی کدهای در دسترس عموم) اینگونه بوده است. و اگر کد ناامن تولید شده توسط هوش مصنوعی به آن پایگاه کد بازخورد داده شود چه؟ آیا پیشنهادات همیشه امن هستند؟

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

و تک محصولی چطور؟ اگر چندین برنامه در نهایت از یک پیشنهاد بسیار آسیب‌پذیر استفاده کنند، منشأ آن هر چه باشد، می‌توانیم به اپیدمی‌های آسیب‌پذیری یا شاید حتی آسیب‌پذیری‌های خاص هوش مصنوعی نگاه کنیم.

زیر نظر گرفتن هوش مصنوعی

برخی از این سناریوها ممکن است امروز دور از ذهن به نظر برسند، اما همه آنها چیزهایی هستند که ما در صنعت فناوری باید درباره آنها بحث کنیم. باز هم، GitHub Copilot تنها به این دلیل در کانون توجه قرار دارد که در حال حاضر پیشتاز است، و GitHub هشدارهای واضحی در مورد اخطارهای پیشنهادات ایجاد شده توسط هوش مصنوعی ارائه می دهد. مانند تکمیل خودکار در تلفن یا پیشنهادات مسیر در satnav شما، آنها فقط نکاتی برای آسان کردن زندگی ما هستند و این به ما بستگی دارد که آنها را برداریم یا ترک کنیم.

تولیدکنندگان کد مبتنی بر هوش مصنوعی با پتانسیل خود برای بهبود تصاعدی کارایی توسعه، احتمالاً به بخشی دائمی از دنیای نرم افزار تبدیل خواهند شد. با این حال، از نظر امنیت برنامه، این منبع دیگری از کدهای بالقوه آسیب پذیر است که باید قبل از اجازه تولید، آزمایش های امنیتی دقیقی را پشت سر بگذارد. ما به دنبال روشی کاملاً جدید هستیم تا آسیب‌پذیری‌ها (و وابستگی‌های بالقوه بررسی نشده) را مستقیماً به کد شخص اول شما وارد کنیم، بنابراین منطقی است که پایگاه‌های کد تقویت‌شده با هوش مصنوعی را تا زمانی که آزمایش نشوند غیرقابل اعتماد تلقی کنیم - و این به این معنی است که همه چیز را به همان دفعات آزمایش کنید. می توان.

حتی راه‌حل‌های نسبتاً شفاف ML مانند Copilot در حال حاضر برخی از سؤالات قانونی و اخلاقی را مطرح می‌کنند، به جز نگرانی‌های امنیتی. اما فقط تصور کنید که یک روز، ابزار جدیدی شروع به تولید کدی می کند که به خوبی کار می کند و تست های امنیتی را پشت سر می گذارد، به جز یک جزئیات کوچک: هیچ کس نمی داند چگونه کار می کند. آن وقت است که زمان وحشت است.

تمبر زمان:

بیشتر از تاریک خواندن