
Co znajdziesz w tym artykule?
Wprowadzenie do problemu / definicja
„Vibe coding” to model tworzenia oprogramowania, w którym deweloperzy w dużym stopniu polegają na narzędziach sztucznej inteligencji do generowania kodu, logiki biznesowej oraz elementów architektury aplikacji. Podejście to realnie przyspiesza development, ale jednocześnie zwiększa ryzyko przeniesienia do środowiska produkcyjnego błędów projektowych, brakujących mechanizmów ochronnych i słabości wynikających z niewystarczającej walidacji wygenerowanego kodu.
Problem nie polega wyłącznie na tym, że AI może popełniać błędy. Znacznie istotniejsze jest to, że generowany kod często wygląda poprawnie, działa zgodnie z założeniami funkcjonalnymi i przechodzi podstawowe testy, mimo że zawiera luki bezpieczeństwa o wysokim znaczeniu operacyjnym.
W skrócie
Analiza opisana 22 lipca 2026 r. wykazała 434 exploitable flaws w aplikacjach tworzonych lub modyfikowanych z istotnym udziałem AI. Najczęściej identyfikowano braki w ochronie przed denial of service i wyczerpaniem zasobów, błędy autoryzacyjne typu IDOR/BOLA, a także problemy związane z traversal oraz SSRF.
W grupie ustaleń krytycznych szczególnie często pojawiały się hardcoded secrets, domyślne dane uwierzytelniające oraz pozostawiony debug mode, który w określonych warunkach może prowadzić do zdalnego wykonania kodu. Wniosek jest jednoznaczny: modele AI poprawiają się w niektórych klasycznych kategoriach błędów, ale nadal regularnie pomijają podstawowe kontrolki bezpieczeństwa.
Kontekst / historia
Rosnąca popularność asystentów programistycznych sprawiła, że generowanie kodu z użyciem AI stało się elementem codziennej pracy wielu zespołów developerskich. Dotyczy to już nie tylko pojedynczych funkcji, lecz także całych komponentów, endpointów API, konfiguracji frameworków, mechanizmów autoryzacji czy integracji z usługami zewnętrznymi.
Presja na szybsze dostarczanie oprogramowania dodatkowo wzmacnia ten trend. Firmy chcą budować MVP, mikroserwisy i narzędzia wewnętrzne szybciej oraz mniejszym kosztem, a AI staje się naturalnym akceleratorem tego procesu. Jednocześnie bezpieczeństwo nie zawsze nadąża za tempem zmian, szczególnie gdy organizacja nie posiada dojrzałych procesów AppSec.
Badanie objęło trzy praktyczne scenariusze pracy z AI: budowę nowej aplikacji na podstawie dobrze przygotowanej specyfikacji, budowę systemu przy mniej precyzyjnych poleceniach oraz utwardzanie istniejącej aplikacji po migracji do nowocześniejszej architektury. Pozwoliło to ocenić nie tylko samą obecność błędów, ale także ich profil oraz wpływ złożoności projektu na jakość bezpieczeństwa.
Analiza techniczna
Najważniejszy wniosek techniczny jest taki, że dominują nie tyle klasyczne błędy składniowe, ile pominięcia mechanizmów kontrolnych. Najliczniejszą kategorią okazały się braki w ochronie przed wyczerpaniem zasobów i atakami denial of service. Takie problemy rzadko są widoczne podczas pobieżnych testów funkcjonalnych, ale w środowisku produkcyjnym mogą umożliwić łatwe przeciążenie usług lub gwałtowny wzrost kosztów infrastruktury.
Drugą istotną grupę stanowiły błędy autoryzacyjne, w tym insecure direct object reference oraz broken object level authorization. W aplikacjach API-first i systemach wielo-użytkownikowych są to luki szczególnie groźne, ponieważ dostęp do danych powinien być kontrolowany na poziomie każdego obiektu biznesowego. Jeśli endpoint działa poprawnie funkcjonalnie, ale nie egzekwuje granularnych uprawnień, użytkownik może uzyskać dostęp do zasobów innych kont przez manipulację identyfikatorem, ścieżką lub parametrem żądania.
Kolejną kategorią były słabości związane z boundary traversal i SSRF. To wskazuje, że modele AI potrafią generować działający kod integracyjny, ale nie zawsze właściwie ograniczają źródła wejścia, ścieżki plikowe czy kierunki komunikacji sieciowej. W praktyce aplikacja może stać się pośrednikiem do dostępu do zasobów wewnętrznych, usług administracyjnych lub wrażliwych metadanych środowiska chmurowego.
Wśród ustaleń krytycznych szczególnie wyraźnie zaznaczyły się hardcoded secrets oraz domyślne poświadczenia. To typowy efekt generowania kodu z wygodnymi ustawieniami testowymi, które pozostają w repozytorium albo trafiają bezpośrednio do wersji produkcyjnej. Dodatkowym ryzykiem jest aktywny debug mode, który może ujawniać nadmiarowe informacje o systemie, a w niektórych konfiguracjach zwiększać ryzyko zdalnego wykonania kodu.
Badanie pokazało również, że wraz ze wzrostem rozmiaru i złożoności aplikacji pogarsza się jakość kontroli autoryzacyjnych. Jest to spójne z obserwacją, że modele AI lepiej radzą sobie z lokalnymi, ograniczonymi zadaniami niż z konsekwentnym utrzymaniem spójnej polityki bezpieczeństwa w wielu endpointach, rolach i przepływach biznesowych.
Jednocześnie widać pewną poprawę w obszarze tradycyjnych podatności, takich jak SQL injection czy XSS. Nie oznacza to jednak rozwiązania problemu, lecz raczej lepsze odwzorowywanie popularnych wzorców bezpiecznego kodowania. W dalszym ciągu zawodzą zabezpieczenia wymagające rozumienia kontekstu biznesowego, architektury i zachowania aplikacji w runtime.
Konsekwencje / ryzyko
Z perspektywy organizacji największym zagrożeniem jest fałszywe poczucie jakości. Kod wygenerowany przez AI często sprawia wrażenie uporządkowanego i gotowego do wdrożenia, co może prowadzić do pomijania pełnych przeglądów bezpieczeństwa, modelowania zagrożeń oraz testów dynamicznych.
Skutki dla przedsiębiorstw mogą być bardzo konkretne:
- naruszenie poufności danych przez błędy autoryzacyjne i brak kontroli dostępu do obiektów,
- incydenty dostępnościowe wynikające z braku rate limitingu, throttlingu i ochrony zasobów,
- przejęcie kont usługowych oraz nadużycia API przez sekrety osadzone w kodzie,
- zwiększenie powierzchni ataku przez pozostawione ustawienia developerskie i debugowe,
- łatwiejsza eskalacja uprawnień i ruch boczny w środowiskach chmurowych oraz hybrydowych.
Szczególnie narażone są zespoły wykorzystujące AI do szybkiego budowania MVP, paneli administracyjnych, narzędzi wewnętrznych i mikroserwisów bez rozbudowanego procesu AppSec. Im więcej endpointów, integracji i zależności między komponentami, tym większe prawdopodobieństwo, że luka logiczna pozostanie niewykryta.
Rekomendacje
Organizacje korzystające z AI w developmentcie powinny traktować kod generowany automatycznie jako materiał wymagający kontroli, a nie jako gotowy artefakt produkcyjny. Niezbędne jest podejście wielowarstwowe, łączące przegląd ekspercki, automatyzację i testy środowiskowe.
- Rozszerzyć code review o checklisty dedykowane AI-generated code, obejmujące autoryzację obiektową, walidację wejścia, obsługę sekretów, konfigurację frameworków, ochronę przed DoS oraz ustawienia debug.
- Łączyć statyczną analizę kodu z testami dynamicznymi i runtime, ponieważ wiele problemów ujawnia się dopiero podczas wykonania aplikacji.
- Regularnie testować endpointy pod kątem BOLA/IDOR, SSRF, traversal oraz nadużyć zasobów.
- Przechowywać sekrety wyłącznie w dedykowanych systemach zarządzania tajemnicami i automatycznie skanować repozytoria, pipeline’y CI/CD oraz obrazy kontenerów.
- Stosować zasadę secure-by-default w promptach i szablonach generowania kodu, wymuszając uwzględnienie kontroli dostępu, telemetrii bezpieczeństwa, obsługi błędów i limitowania żądań.
- Prowadzić systematyczne testy uprawnień między rolami i tenantami, szczególnie w większych i bardziej złożonych aplikacjach.
Podsumowanie
Kod generowany przez AI nie jest z definicji niebezpieczny, ale obecna praktyka pokazuje, że bardzo często zawiera luki wynikające z pominięcia podstawowych zabezpieczeń operacyjnych i logicznych. Największym wyzwaniem nie są dziś wyłącznie klasyczne podatności wejścia, lecz brak odporności na nadużycia zasobów, błędy autoryzacyjne oraz sekrety pozostawione bezpośrednio w kodzie.
Dla zespołów bezpieczeństwa oznacza to konieczność dostosowania procesów AppSec do realiów „vibe coding”, czyli szybszego developmentu, większej liczby zmian i większej potrzeby weryfikacji kontekstu biznesowego. Organizacje, które wdrożą wielowarstwową walidację kodu tworzonego z udziałem AI, mogą korzystać z jego zalet bez niekontrolowanego zwiększania powierzchni ataku.