Connect with us

Liderzy opinii

Kod generowany przez AI jest tutaj, by pozostać. Czy jesteśmy mniej bezpieczni w wyniku?

mm

Programowanie w 2025 roku nie polega na mozolnym przepisywaniu fragmentów kodu ani na spędzaniu długich godzin na debugowaniu. To zupełnie inna atmosfera. Kod generowany przez AI stanowi większość kodu w przyszłych produktach i stał się niezbędnym narzędziem dla nowoczesnych programistów. Nazywany „vibe coding”, użycie kodu generowanego przez narzędzia takie jak Github Copilot, Amazon CodeWhisperer i Chat GPT będzie normą, a nie wyjątkiem, jeśli chodzi o skracanie czasu budowy i zwiększanie wydajności. Ale czy wygodne użycie kodu generowanego przez AI niesie ze sobą ciemniejsze zagrożenie? Czy generatywny AI zwiększa podatność na zagrożenia w architekturze bezpieczeństwa, czy są sposoby, aby programiści mogli „vibe code” w bezpieczny sposób?

„Wypadki związane z bezpieczeństwem jako wynik podatności w kodzie generowanym przez AI jest jednym z najmniej dyskutowanych tematów dzisiaj” – powiedział Sanket Saurav, założyciel DeepSource. „Nadal jest wiele kodu generowanego przez platformy takie jak Copilot lub Chat GPT, które nie są przeglądane przez ludzi, a naruszenia bezpieczeństwa mogą być katastrofalne dla firm, które są dotknięte.”

Jako twórca platformy open source, która wykorzystuje statyczną analizę do jakości kodu i bezpieczeństwa, Saurav powołał się na atak na SolarWinds w 2020 roku jako na rodzaj „zagłady”, z którym firmy mogą się spotkać, 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 programistycznych” – powiedział Saurav.

Atak poprzez bibliotekę

Zagrożenia bezpieczeństwa dla kodu generowanego przez AI mogą przyjmować różne formy i mogą być skierowane przeciwko bibliotekom. Biblioteki w programowaniu są przydatnymi, wielokrotnie używanymi fragmentami kodu, których programiści używają, aby zaoszczędzić czas podczas pisania.

Często rozwiązują one regularne zadania programistyczne, takie jak zarządzanie interakcjami z bazą danych, i pomagają programistom uniknąć przepisywania kodu od podstaw.

Jednym z takich zagrożeń przeciwko bibliotekom jest tzw. „halucynacja”, gdzie kod generowany przez AI wyświetla podatność poprzez użycie fikcyjnych bibliotek. Innym, bardziej niedawnym rodzajem ataku na kod generowany przez AI jest tzw. „slopsquatting”, gdzie atakujący mogą bezpośrednio atakować biblioteki, aby włamać się do bazy danych.

Bezpośrednie rozwiązanie tych zagrożeń może wymagać więcej uwagi, niż mogłoby się wydawać z terminu „vibe coding”. Wypowiadając się ze swojego biura na Université du Québec en Outaouais, profesor Rafael Khoury od dawna śledzi rozwój bezpieczeństwa kodu generowanego przez AI i jest przekonany, że nowe techniki poprawią jego bezpieczeństwo.

W artykule z 2023 roku profesor Khoury zbadał wyniki prośby do ChatGPT o wygenerowanie kodu bez żadnego dodatkowego kontekstu lub informacji, co doprowadziło do niebezpiecznego kodu. Były to wczesne dni ChatGPT, a Khoury jest teraz optymistycznie nastawiony do przyszłości. „Od tego czasu przeprowadzono wiele badań, które są obecnie poddawane recenzji, a przyszłość wygląda na strategię korzystania z LLM, która mogłaby doprowadzić do lepszych wyników” – powiedział Khoury, dodając, że „bezpieczeństwo jest coraz lepsze, ale nie jesteśmy jeszcze w miejscu, w którym możemy podać bezpośrednią wskazówkę i otrzymać bezpieczny kod.”

Khoury opisał obiecujące badanie, w którym wygenerowano kod, a następnie wysłano go do narzędzia, które analizowało go pod kątem podatności. Metoda stosowana przez to narzędzie nazywa się Finding Line Anomalies with Generative AI (lub FLAG).

„Te narzędzia wysyłają FLAGi, które mogą identyfikować podatność w linii 24, na przykład, co programista może następnie wysłać z powrotem do LLM z informacją i poprosić o rozwiązanie problemu” – powiedział.

Khoury sugerował, że ten proces może być kluczowy w naprawie kodu, który jest podatny na atak. „To badanie sugeruje, że przy pięciu iteracjach można zmniejszyć podatności do zera.”

Jednak metoda FLAG nie jest pozbawiona problemów, szczególnie może powodować fałszywe pozytywy i fałszywe negatywy. Ponadto istnieją ograniczenia w długości kodu, który LLM może wygenerować, a łączenie fragmentów może dodać kolejną warstwę ryzyka.

Trzymanie człowieka w pętli

Niektórzy gracze w „vibe coding” zalecają fragmentację kodu i zapewnienie, że ludzie pozostają na pierwszym planie w najważniejszych edycjach kodu. „Podczas pisania kodu, myśl w kategoriach commitów” – powiedział Kevin Hou, szef inżynierii produktu w Windsurf, chwaląc mądrość małych kawałków.

„Rozłóż duży projekt na mniejsze części, które zwykle są commitami lub pull requestami. Pozwól agentowi zbudować mniejszą skalę, jeden izolowany element naraz. Może to zapewnić, że wyjście kodu jest dobrze przetestowane i dobrze zrozumiane” – dodał.

W momencie pisania Windsurf zbliżył się do 5 miliardów linii kodu generowanego przez AI (poprzez swoją poprzednią nazwę Codeium). Hou powiedział, że najpilniejszym pytaniem, na które odpowiadali, było to, czy programista jest świadomy procesu.

„AI jest w stanie wykonać wiele edycji w wielu plikach jednocześnie, więc jak możemy upewnić się, że programista naprawdę rozumie i przegląda, co się dzieje, zamiast po prostu akceptować wszystko?” – zapytał Hou, dodając, że zainwestowali wiele w UX Windsurf „z wieloma intuicyjnymi sposobami, aby pozostać w pełni zsynchronizowanym z tym, co robi AI, i aby utrzymać człowieka w pełni w pętli.”

Dlatego, gdy „vibe coding” staje się bardziej mainstreamowy, ludzie w pętli muszą być bardziej ostrożni wobec jego podatności. Od „halucynacji” po „slopsquatting” zagrożenia są realne, ale rozwiązania również.

Wynikające narzędzia, takie jak analiza statyczna, metody iteracyjnego udoskonalania, takie jak FLAG, oraz przemyślane projekty UX pokazują, że bezpieczeństwo i szybkość nie muszą być wzajemnie wykluczające.

Kluczem jest utrzymanie zaangażowania programistów, poinformowanie ich i kontrolowanie. Z odpowiednimi zabezpieczeniami i nastawieniem „zaufaj, ale zweryfikuj” kodowanie wspomagane przez AI może być zarówno rewolucyjne, jak i odpowiedzialne.

Arjun Harindranath jest freelancerskim dziennikarzem z siedzibą w Medellin, Kolumbia, który relacjonuje historie na temat konfliktów, migracji i technologii dla globalnej publiczności. Poprzednie teksty ukazały się w Al Jazeera, TechCrunch, The Next Web i New York Times.