Автоматично генерираните от AI компютърни кодове се оказват пълни с препратки към външни библиотеки, които не съществуват. Въпреки че на пръв поглед това изглежда не особено важно, ново изследване, цитирано от WIRED, предупреждава, че по този начин се отваря врата за атаки по веригата на доставки.

Подобни ситуации могат да компрометират легитимен софтуер с вреден код, който краде данни, отваря „скрити врати“ и извършва други злонамерени действия.

Проучването, което използва 16 от най-популярните големи езикови модела, е генерирало 576 000 примера за код.

Резултатите показват, че 440 000 от посочените зависимости съдържат „халюцинации“ – тоест библиотеки, които реално не съществуват. Най-голям дял от такива са отбелязали отворените модели, при които 21% от зависимостите водят към несъществуващи пакети.

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

Тези несъществуващи зависимости повишават риска от така наречените атаки чрез „dependency confusion“.

При този тип атака злонамерен софтуер използва фалшиви пакети със същото име като легитимните, но с по-нова версия. Така софтуерът автоматично избира фалшивия пакет, защото смята, че това е актуализирана версия.

Методът е демонстриран още през 2021 г., когато подобна атака компрометира системи на гиганти като Apple, Microsoft и Tesla. Тези атаки са част от по-широкия спектър на supply-chain атаките, които целят да заразят софтуера още в неговия източник и така да засегнат всички потребители по веригата.

„Щом нападателят публикува пакет с халюцинирано име и внедри зловреден код вътре, той разчита моделът да предложи това име на нищо неподозиращи потребители“, обяснява Джоузеф Спраклън, докторант в Университета на Тексас в Сан Антонио и водещ автор на изследването. „Ако потребителят се довери на генерирания от LLM код и инсталира пакета, без да направи внимателна проверка, вредният код ще бъде изпълнен върху системата му“, допълва той.

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

В статия, която ще бъде представена на USENIX Security Symposium през 2025 г., изследователите наричат това явление „package hallucination“.

За изследването учените провеждат 30 теста – 16 на Python и 14 на JavaScript – като генерират по 19 200 примера за код на тест, или общо 576 000 примера. Сред тях са открити 2.23 милиона препратки към различни пакети.

От тях 440 445, или около 19.7%, водят до несъществуващи пакети. Забележително е, че 205 474 от тези халюцинирани зависимости са с уникални имена.

Една от основните причини, поради които халюцинираните зависимости са толкова опасни за веригата на доставки в софтуера, е фактът, че 43% от тях се повтарят в над 10 заявки.

„Освен това, в 58% от случаите халюциниран пакет се повтаря повече от веднъж в рамките на 10 итерации, което показва, че повечето халюцинации не са просто случайни грешки, а повтарящо се явление, което се задържа при множество опити. Това е важно, защото устойчива халюцинация е по-ценна за хакери, които търсят начин да експлоатират този проблем, и превръща AI грешките в сериозна заплаха“, посочват авторите на изследването.

С други думи, много от халюцинациите са повече от еднократна грешка. Вместо това конкретни имена на несъществуващи пакети се повтарят многократно. Нападателите лесно могат да се възползват, като идентифицират подобни „популярни“ несъществуващи библиотеки, публикуват злонамерен код с тези имена и чакат той да бъде инсталиран от нищо неподозиращи разработчици.

Изследването разкрива и значителни разлики в това кои LLM модели и програмни езици генерират най-много халюцинации.

Средно отворените модели като CodeLlama и DeepSeek произвеждат близо 22% халюцинирани зависимости, докато търговските модели – малко над 5%. Кодът, написан на Python, води до по-малко халюцинации (около 16%) в сравнение с този на JavaScript (над 21%).

Спраклън обяснява, че причините за различията между моделите са комплексни и трудно могат да бъдат сведени до единствен фактор. Той подчертава, че търговските модели, като ChatGPT, значително превъзхождат тези с отворен код – с поне 10 пъти повече параметри – което вероятно обяснява по-ниската честота на халюцинации при тях.

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

Освен размера на моделите, влияние оказват и фактори като тренировъчните данни, финото обучение и настройките за безопасност, които могат да редуцират или увеличат грешките в кода.

По отношение на по-честите халюцинации при програмиране на JavaScript изследователите смятат, че това се дължи на огромната екосистема от библиотеки – около 10 пъти повече от тази на Python – и по-сложната структура на езика. Това прави задачата за точно припомняне на имената по-трудна за моделите и увеличава вероятността за грешки.