DOCUMENT_ID // Generujesz kod za pomocą AI szybko, ale czy na pewno bezpiecznie?

Sztuczna inteligencja miała zrewolucjonizować programowanie, ale jej „sny na jawie” zagrażają stabilności systemów. Badania ujawniają powtarzalne błędy, które ułatwiają cyberataki. Czy to koniec ery bezpiecznego kodu tworzonego bez udziału ludzi?

Generujesz kod za pomocą AI szybko, ale czy na pewno bezpiecznie?

Kevin Scott, CTO Microsoftu prognozuje, że do roku 2030 już nawet 95% kodu będzie generowane przez AI. CEO tej samej firmy, Satya Nadella twierdzi że obecnie 20% do 30% kodu w repozytoriach Microsoftu jest wytworzone przez sztuczną inteligencję. Ponoć najlepiej obecne modele radzą sobie z Pythonem, podczas gdy dużo słabiej budują efektywny kod w C++. GitHub Copilot odpowiadał w 2024 roku już za 40% całkowitych przychodów GitHub zyskując nowych subskrybentów w oszałamiającym tempie 30% w ujęciu kwartał do kwartału.

Czy w takim razie stoimy na progu wymarcia, lub co najmniej znaczącej marginalizacji zawodu programisty?

Predykcje mówiące o tym, że programowanie to jedna z dziedzin najszybciej zastępowalnych przez AI pojawiają się co chwila. Również obecny rynek pracy zdaje się potwierdzać ten kierunek chociażby stale zmniejszającą się ilością ofert dla stanowisk juniorskich, a nawet mid'owych. AI postrzegane jest jako narzędzie, które potrafi generować co najmniej podobnie wydajny kod, co początkujący lub posiadający niewielkie doświadczenie programiści, jednocześnie jednak robi to zdecydowanie szybciej i taniej.

Czy jednak wydajnie, szybko i tanio to wszystko, czego powinniśmy oczekiwać po kodzie programu?

Bezpieczenstwo - to jest niestety dość często ignorowany aspekt w biegu ku większym zyskom wypracowanym poprzez minimalizację kosztów.

Okazuje się bowiem, że kod generowany przez AI może i spełnia wyżej wymienione wymagania, ale przez podatność modeli na tzw. halucynacje zdecydowanie ustępuje nawet słabo doświadczonym programistom właśnie w obszarze bezpieczeństwa, a w szczególności odporności na ataki typy "supply-chain".

Na czym polega atak "supply-chain"?

Zdecydowana większość programów nie jest samodzielna. Korzysta z zewnętrznych bibliotek, które dostarczają funkcji wymaganych w określonych zastosowaniach. Podejście to jest jak najbardziej zgodne z ideą konteneryzacji i reużywalności metod czy procedur, generuje jednak zagrożenie "podmiany" biblioteki zewnętrznej na taką, która zawiera niebezpieczny kod dający hakerowi dostęp do zainfekowanego w ten sposób systemu.

Sam rodzaj ataku nie jest nowum w czasach wspomagania się AI przy tworzeniu oprogramowania. Biblioteki o nazwach skrajnie podobnych do poprawnych, ale czyhające na zrobioną przez programistę literówkę istniały już od wielu lat. Dlaczego w takim razie w dobie AI atak ten może stać się zdecydowanie istotniejszym zagrożeniem, aniżeli wcześniej?

AI ma tendencję do halucynacji. Polegają one na tym, że podaje fakty lub dane kompletnie "zmyślone", nie mające najmniejszego powiązania z rzeczywistością. Źródło tego fenomenu nie zostało jeszcze w pełni zbadane, jedną z ciekawszych teorii na temat jego występowania można uznać porównanie ich do marzeń sennych. Podobnie jak ludzki mózg, który w ramach porządkowania informacji podczas snu generuje mnóstwo nierealnych artefaktów, które spotykamy we śnie, podobnie działa AI, przy czym z racji tego, że modele nie mają przerw na odpoczynek, robią to wobec tego w swoistym "śnie na jawie".

Niezależnie jednak od powodu ich występowania, tego rodzaju halucynacje zdarzają się zarówno w momencie odpowiadania na pytania przez ChatGPT, jak i generowania kodu przez Claude czy inny LLM.

Badacze z University of Texas at San Antonio postanowili zbadać te kwestię stricte właśnie w kontekście generowania kodu źródłowego w Pythonie i JavaScript i zauważyli dość ciekawe, ale również niepokojące zależności.

Okazuje się, że poziom halucynacji właśnie w obszarze bibliotek dla modeli OpenSource (takich jak np. CodeLlama) wynosi aż 21.7%, podczas gdy w przypadku modeli komercyjnych (wcześniej wspomniany GitHub Copilot) jest to 5.2%.

Zastanawiającym, a jednocześnie dość niepokojącym jest jednak inny wniosek. Otóż okazuje się, że nazwy bibliotek pochodzące z halucynacji wcale nie są tak losowe, jak byśmy się tego spodziewali.

W toku analiz okazało się, że aż 43% "wymyślonych" nazw bibliotek powtarza się co najmniej 10-krotnie w różnych wygenerowanych fragmentach kodu. W przypadku wielokrotnego generowania kodu ta sama nieprawidłowa nazwa biblioteki powtarza się w ponad 10 iteracjach w 58% przypadków.

Otwiera to drogę dla potencjalnych ataków typu supply-chain opartych na "podkładaniu" bibliotek o nazwach najczęściej pojawiających się właśnie w halucynacjach AI.

Czy zagrożenie wykryte przez doktoranta Josepha Spracklena i jego zespół z University of Texas at San Antonio jest wyjątkiem, czy dopiero awangardą problemów, jakimi cechować się będzie owe prognozowane przez Kevina Scotta 95% kodu w wykorzystywanym na świecie oprogramowaniu?

Nadal do końca nie rozumiemy w jaki sposób AI tworzy treści i generuje swoje wizje, stąd wydaje mi się że na zaufanie im jest zdecydowanie za wcześniej. Kto wie, może do 2030 roku uda nam się w pełni opanować "sposób myślenia" AI, choć istnieje równie duże prawdopodobieństwo, że w pogoni za coraz większą wydajnością i płynącym z niej zyskiem element wiarygodności nadal będziemy odstawiać na boczny tor.

A może konsekwencje tego podejścia dopadną nas wcześniej i spowodują swego rodzaju powrót do podstaw i programistów tworzących kod? Tylko czy wtedy ci programiści będą dostępni, a nie wszyscy się albo przebranżowią, albo padną ofiarą zasady: bez juniorów dzisiaj, jutro nie będzie midów, a pojutrze seniorów

Autor wpisu

O AUTORZE

Autor thrillerów z elementami science-fiction oraz powieści z nurtu military hard SF. Na blogu analizuje punkty styku technologii, współczesnej obronności i warsztatu literackiego, stawiając na realizm operacyjny i logikę w każdym aspekcie twórczości.