Liderzy myśli
Kod generowany przez AI pozostanie. Czy w rezultacie jesteśmy mniej bezpieczni?

Kodowanie w 2025 roku nie polega na mozolnej pracy nad fragmentami ani spędzaniu długich godzin na debugowaniu. To zupełnie inna atmosfera. Kod wygenerowany przez sztuczną inteligencję będzie stanowić większość kodu w przyszłych produktach i stał się niezbędnym zestawem narzędzi dla współczesnego programisty. Znane jako „vibe coding”, używanie kodu generowanego przez narzędzia takie jak Github Copilot, Amazon CodeWhisperer i Chat GPT będzie normą, a nie wyjątkiem w skracaniu czasu kompilacji i zwiększaniu wydajności. Ale czy wygoda kodu generowanego przez AI grozi ciemniejszym zagrożeniem? Czy generatywna AI zwiększa podatność na ataki w architekturze bezpieczeństwa, czy też istnieją sposoby, aby programiści mogli „vibe code” w bezpieczny sposób?
„Incydenty bezpieczeństwa wynikające z luk w kodzie generowanym przez AI to jeden z najmniej omawianych tematów dzisiaj” — powiedział Sanket Saurav, założyciel DeepSource. „Wciąż jest wiele kodu generowanego przez platformy takie jak Copilot czy Chat GPT, które nie są poddawane przeglądowi przez człowieka, a naruszenia bezpieczeństwa mogą być katastrofalne dla firm, których dotyczą”.
Twórca platformy open source, która wykorzystuje analizę statyczną w celu zapewnienia jakości kodu i bezpieczeństwa, jak podaje Saurav włamanie do SolarWinds w 2020 r. jako rodzaj „wydarzenia wyginięcia”, z którym firmy mogą się zmierzyć, jeśli nie zainstalują odpowiednich zabezpieczeń podczas korzystania z kodu generowanego przez AI. „Analiza statyczna umożliwia identyfikację niebezpiecznych wzorców kodu i złych praktyk kodowania” — powiedział Saurav.
Zaatakowany przez bibliotekę
Zagrożenia bezpieczeństwa dla kodu generowanego przez AI mogą przybierać nowatorskie formy i mogą być skierowane do bibliotek. Biblioteki w programowaniu to przydatny kod wielokrotnego użytku, z którego programiści korzystają, aby zaoszczędzić czas podczas pisania.
Często rozwiązują standardowe zadania programistyczne, takie jak zarządzanie interakcjami z bazami danych i oszczędzają programistom konieczności pisania kodu od nowa.
Jednym z takich zagrożeń dla bibliotek są „halucynacje”, w których kod generowany przez AI wykazuje podatność poprzez używanie fikcyjnych bibliotek. Inna nowsza linia ataków na kod generowany przez AI nazywa się „slopsquatting”, w którym atakujący mogą bezpośrednio atakować biblioteki, aby zinfiltrować bazę danych.
Bezpośrednie zajęcie się tymi zagrożeniami może wymagać większej uważności, niż sugeruje termin „vibe coding”. Profesor Rafael Khoury, przemawiając ze swojego biura na Université du Québec en Outaouais, uważnie śledził rozwój sytuacji w zakresie bezpieczeństwa kodu generowanego przez AI i jest przekonany, że nowe techniki poprawią jego bezpieczeństwo.
In papier 2023Profesor Khoury zbadał wyniki polecenia ChatGPT wygenerowania kodu bez kontekstu i informacji, co prowadziło do tworzenia niebezpiecznego kodu. To były początki Chat GPT i Khoury z optymizmem patrzy w przyszłość. „Od tego czasu przeprowadzono wiele badań, a przyszłość to poszukiwanie strategii wykorzystania LLM, która mogłaby przynieść lepsze rezultaty” – powiedział Khoury, dodając, że „bezpieczeństwo się poprawia, ale nie jesteśmy jeszcze w stanie udzielić bezpośredniego komunikatu i uzyskać bezpiecznego kodu”.
Khoury kontynuował opisywanie obiecujące badanie gdzie generowali kod, a następnie wysyłali go do narzędzia, które analizowało go pod kątem luk. Metoda używana przez to narzędzie jest określana jako Finding Line Anomalies with Generative AI (lub w skrócie FLAG).
„Te narzędzia wysyłają FLAG-i, które mogą na przykład identyfikować lukę w zabezpieczeniach w linii 24. Następnie programista może odesłać je do LLM wraz z informacją i poprosić o zbadanie problemu i jego rozwiązanie” – powiedział.
Khoury zasugerował, że ta wymiana zdań może być kluczowa dla naprawy kodu podatnego na ataki. „To badanie sugeruje, że przy pięciu iteracjach można zredukować podatności do zera”.
To powiedziawszy, metoda FLAG nie jest pozbawiona problemów, szczególnie, że może powodować zarówno fałszywe pozytywy, jak i fałszywe negatywy. Oprócz tego istnieją również ograniczenia długości kodu, który LLM może utworzyć, a czynność łączenia fragmentów może dodać kolejną warstwę ryzyka.
Utrzymywanie człowieka w pętli
Niektórzy gracze w „vibe coding” zalecają fragmentację kodu i zapewnienie, że ludzie będą na pierwszym planie i w centrum najważniejszych edycji bazy kodu. „Podczas pisania kodu myśl w kategoriach commitów” — powiedział Kevin Hou, szef inżynierii produktu w Windsurf, wychwalając mądrość małych kawałków.
„Podziel duży projekt na mniejsze fragmenty, które normalnie byłyby commitami lub pull requestami. Niech agent zbuduje mniejszą skalę, jedną odizolowaną funkcję na raz. Dzięki temu można mieć pewność, że kod wyjściowy zostanie dobrze przetestowany i dobrze zrozumiany” — dodał.
W chwili pisania tego tekstu Windsurf zbliżył się do ponad 5 miliardów linii kodu generowanego przez AI (poprzez poprzednią nazwę Codeium). Hou powiedział, że najbardziej palącym pytaniem, na które odpowiadali, było to, czy deweloper był świadomy tego procesu.
„Sztuczna inteligencja jest w stanie wprowadzać wiele edycji w wielu plikach jednocześnie, więc jak możemy się upewnić, że programista faktycznie rozumie i sprawdza, co się dzieje, a nie po prostu ślepo akceptuje wszystko?” zapytał Hou, dodając, że zainwestowali dużo w UX Windsurf „z mnóstwem intuicyjnych sposobów, aby w pełni nadążać za tym, co robi sztuczna inteligencja, i aby człowiek był w pełni na bieżąco”.
Dlatego jako „kodowanie wibracji” staje się bardziej popularny, ludzie w pętli muszą być bardziej ostrożni w kwestii jego podatności. Od „halucynacji” po zagrożenia „slopsquattingiem”, wyzwania są realne, ale rozwiązania również.
Nowe narzędzia, takie jak analiza statyczna, iteracyjne metody udoskonalania, np. FLAG, i przemyślane projektowanie UX, pokazują, że bezpieczeństwo i szybkość nie muszą się wzajemnie wykluczać.
Kluczem jest utrzymanie zaangażowania, informacji i kontroli programistów. Przy odpowiednich zabezpieczeniach i nastawieniu „zaufaj, ale sprawdź” kodowanie wspomagane przez sztuczną inteligencję może być zarówno rewolucyjne, jak i odpowiedzialne.