Ново проучване установява, че съвременните модели за кодиране с изкуствен интелект (ИИ) често генерират несигурен код, който излага генерираните от ИИ приложения на атаки за отказ на услуга (DoS), твърдо кодирани тайни и проблеми с оторизацията.

Бързото приемане на ИИ асистенти за кодиране трансформира разработката на софтуер, позволявайки на разработчиците да генерират готови за внедряване приложения за минути, вместо за дни. Но тъй като организациите все повече разчитат на код, генериран от ИИ, възниква нов въпрос: какви видове пропуски в сигурността въвеждат тези системи?

Ново проучване от нашия изследователски екип в Xint.io анализира 28 кодирани от ИИ приложения, обхващащи множество работни процеси за разработка, ИИ модели и среди за програмиране, за да идентифицира кои класове уязвимости се появяват най-често – и как тези уязвимости се променят с нарастването на сложността на приложенията. След валидиране на констатациите чрез проверка на изходния код и тестване в реално време, изследователите идентифицираха 434 потвърдени уязвимости в сигурността, предлагайки подробен поглед върху специфичните дефекти в сигурността, които са склонни да се появяват в софтуера, генериран от ИИ.

Оценихме три често срещани работни процеса на разработка, подпомагани от ИИ, които отразяват реални сценарии:

  • Приложения, генерирани от подробни спецификации
  • Приложения „от нулата“, създадени от минимални подкани чрез подхода „изгради това“
  • Производствено приложение, което ИИ беше помолен да модернизира и подсили

Резултатите показват, че днешните водещи големи езикови модели постоянно генерират слабости, включващи оперативна устойчивост, автентификация и сложни IDOR грешки, както и твърдо кодирани тайни. Видовете уязвимости се променят с нарастването на размера и сложността на създаваните приложения. Въпреки това, грешките от тип инжектиране (SQLi, XSS) и основните IDOR/BOLA грешки за контрол на достъпа в рамките на един контекст едва се появяват, което предполага, че ИИ лабораториите наистина са постигнали подобрение в тази конкретна област.

В какво се справя добре кодът, генериран от ИИ?

Нашата хипотеза беше, че генерираният от ИИ код ще повтаря много от класическите програмни грешки в индустрията, като SQL инжектиране, междусайтово скриптиране (XSS) и несигурни заявки към бази данни. ИИ моделите се обучават върху големи количества код, податлив на инжектиране, така че е естествено да се предположи, че те биха пресъздали тези дефекти.

Вместо това проучването установи обратното.

Съвременните модели по подразбиране използват сигурни рамки, параметризирани заявки към бази данни, обектно-релационни мапери (ORM) и саниране на входни данни, което драстично намалява честотата на много уязвимости за инжектиране. По същия начин, преките проверки за оторизация – като например предотвратяване на възможността един потребител да редактира данните на друг потребител – бяха имплементирани правилно в повечето по-малки приложения. Кодът от ИИ не повтаря вчерашните уязвимости, което показва, че водещите лаборатории успешно са се справили с този проблем.

Липсващите контроли за ограничаване на честотата на заявките или за отказ на услуга са най-честите грешки в кода от ИИ?

Най-голямата категория от потвърдените констатации включва слабости, свързани с изчерпване на ресурсите и отказ на услуга (DoS), съставляващи 93 от 434-те валидирани уязвимости (21%). Типичните примери включват:

  • Синхронни блокиращи операции

Тези дефекти често позволяват на приложенията да функционират нормално по време на тестване, но създават значителен оперативен риск след внедряването им. Те могат да доведат до прекомерни разходи за сървъри или атакуващ лесно да спре сървъра. Те присъстваха в почти всеки анализиран проект, но обикновено атакуващите трябва да отговарят на определени условия, за да ги експлоатират.

Тези аспекти на ефективността и производителността рядко се споменават в подканите или в примерния код, използван за обучение на ИИ моделите. Следователно моделите се оптимизират за създаване на работеща функционалност, а не за софтуер, който продължава да работи безопасно под тежки или злонамерени натоварвания.

Разкриването на тайни е водещият източник на грешки с висока степен на сериозност

Въпреки че слабостите за отказ на услуга бяха най-често срещаната уязвимост като цяло, картината се промени, когато изолирахме само констатациите с критична сериозност.

Сред 23-те критични уязвимости, идентифицирани в новогенерираните приложения, почти половината включват твърдо кодирани или предвидими тайни на приложенията, включително ключове за шифроване по подразбиране, JWT тайни за подписване и вградени идентификационни данни. Те съставляват 11 критични констатации, което прави излагането на тайни най-често срещаната категория критични уязвимости.

Тези слабости може да произтичат от често срещани шаблони за кодиране в публично достъпните данни за обучение. Много ръководства, примерни хранилища и приложения за бърз старт включват временни тайни, предназначени да бъдат заменени преди внедряването. Тъй като тези стойности рядко пречат на правилното функциониране на софтуера, ИИ моделите често ги възпроизвеждат непроменени.

Тези настройки по подразбиране могат да позволят на атакуващите да фалшифицират токени за автентификация, да отвличат сесии или да компрометират цели приложения. Докладът също така идентифицира критични случаи на излагане на режим за отстраняване на грешки (debug-mode) и отдалечено изпълнение на код, свързано със зависимости, което предполага, че конфигурациите за разработка остават друга област, в която софтуерът, генериран от ИИ, изисква внимателен преглед.

По-сложните приложения създават различни проблеми със сигурността

Едно от забележителните разкрития в проучването е, че...