OWASP Top 10 dla aplikacji zbudowanych z AI: 12 punktów kontroli przed audytem

Drewniana marionetka na sznurkach z napisem „Kto za tym stoi?” – OWASP Top 10 dla aplikacji zbudowanych z AI
  • Gosia Petlińska-Kordel

    Małgorzata Petlińska-Kordel

    Marketing Ringmaster

Z pomocą AI

Ten artykuł powstał częściowo z pomocą sztucznej inteligencji.

W skrócie: OWASP Top 10 to lista najpoważniejszych kategorii ryzyka w aplikacjach webowych, publikowana przez fundację OWASP i używana jako punkt odniesienia przez zespoły bezpieczeństwa i audytorów. Aplikacje zbudowane z pomocą AI, na przykład w Lovable z bazą Supabase, najczęściej zawodzą w tych samych miejscach, co opisuje OWASP Top 10, przede wszystkim w kontroli dostępu. Poniżej 12 punktów, które warto sprawdzić, zanim aplikacja zacznie przetwarzać dane klientów albo zanim zapyta o nią audytor w firmie objętej ustawą o KSC.

Lista jest częścią naszego przeglądu wymagań NIS2 i CRA wobec oprogramowania.

Najważniejsze fakty:

  • Błędna kontrola dostępu zajmuje pierwsze miejsce na liście OWASP Top 10.
  • Według Cloud Security Alliance 62% rozwiązań kodu wygenerowanego przez AI zawiera błędy projektowe lub znane podatności.
  • Aplikacje z AI, które korzystają z modeli językowych, mają dodatkowe ryzyka opisane w osobnej liście OWASP Top 10 dla aplikacji LLM.
  • Lista kontrolna nie zastępuje testów penetracyjnych, ale pozwala usunąć najczęstsze błędy w jeden dzień.
OWASP Top 10: lista kontrolna bezpieczeństwa aplikacji zbudowanej z AI

Czym jest OWASP Top 10 i dlaczego pasuje do aplikacji z AI?

OWASP Top 10 to dokument fundacji OWASP, organizacji non-profit zajmującej się bezpieczeństwem aplikacji. Opisuje dziesięć kategorii ryzyka, które najczęściej prowadzą do incydentów w aplikacjach webowych: od błędnej kontroli dostępu, przez błędną konfigurację i podatne komponenty, po wstrzykiwanie kodu i braki w logowaniu zdarzeń.

Aplikacje zbudowane metodą vibe coding nie mają nowych rodzajów błędów. Mają te same, tylko częściej, bo model AI pisze kod, który działa, a o bezpieczeństwo trzeba go poprosić. Dlatego OWASP Top 10 jest dobrym szkieletem listy kontrolnej. Skąd biorą się takie aplikacje w firmach i dlaczego podlegają ustawie o KSC, opisujemy w tekście vibe coding w firmie i obowiązki z ustawy o KSC.

Lista kontrolna OWASP Top 10: 12 punktów

  1. Kontrola dostępu na każdym punkcie API. Każde zapytanie sprawdza po stronie serwera, czy użytkownik ma prawo do danych, a nie tylko interfejs ukrywa przyciski.
  2. Reguły dostępu w bazie. W Supabase każda tabela z danymi ma włączone Row Level Security i polityki ograniczające odczyt i zapis.
  3. Wymuszone logowanie. Żadna strona z danymi nie jest dostępna bez zalogowania; administratorzy mają uwierzytelnianie wieloskładnikowe.
  4. Brak sekretów w kodzie przeglądarki. Klucze z uprawnieniami administratora, na przykład klucz service_role w Supabase, nie trafiają do frontendu ani do publicznego repozytorium.
  5. Rotacja kluczy. Klucze, które mogły trafić do kodu lub historii repozytorium, zostały zmienione.
  6. Walidacja danych wejściowych. Zapytania do bazy są parametryzowane, a dane od użytkownika są sprawdzane po stronie serwera.
  7. Aktualne zależności. Biblioteki są w wersjach bez znanych krytycznych podatności, a ktoś regularnie to sprawdza.
  8. Bezpieczna konfiguracja. Tryb debugowania jest wyłączony, polityka CORS nie wpuszcza dowolnych domen, a magazyny plików nie są publiczne.
  9. Ochrona danych. Aplikacja przechowuje tylko potrzebne dane, a połączenia i dane wrażliwe są szyfrowane.
  10. Logowanie zdarzeń. Aplikacja zapisuje logowania, zmiany uprawnień i błędy, a logi trafiają poza samą aplikację.
  11. Ograniczenie nadużyć. Formularze i API mają limity zapytań, żeby nie dało się ich użyć do masowego pobierania danych.
  12. Właściciel i kopie zapasowe. Aplikacja ma właściciela w firmie, jest w inwentarzu aplikacji i ma kopie zapasowe, które ktoś odtworzył.

Supabase i Lovable: na co uważać

Lovable i podobne narzędzia często łączą aplikację z bazą Supabase. To wygodne, ale niesie konkretne ryzyko: klucz publiczny bazy jest widoczny w kodzie przeglądarki z założenia, więc całe bezpieczeństwo danych opiera się na regułach Row Level Security. Jeśli reguł nie ma albo są zbyt szerokie, każdy, kto zna adres aplikacji, może odczytać tabele. Dokumentacja Supabase opisuje, jak skonfigurować Row Level Security. Warto sprawdzić to w pierwszej kolejności, bo to najczęstsze źródło wycieków w aplikacjach budowanych z AI.

Aplikacje z modelem językowym: OWASP Top 10 dla LLM

Jeśli aplikacja sama korzysta z modelu językowego, na przykład odpowiada klientom albo streszcza dokumenty, dochodzą ryzyka opisane w liście OWASP Top 10 dla aplikacji LLM: wstrzykiwanie poleceń (prompt injection), ujawnianie danych w odpowiedziach modelu i nadmierne uprawnienia narzędzi, z których model korzysta. Według Google Trends zainteresowanie tą listą szybko rośnie. Minimum to oddzielenie danych od poleceń, ograniczenie uprawnień i niewysyłanie do modelu danych, których nie musi znać.

Bezpieczeństwo aplikacji webowych: co dalej po liście kontrolnej?

Lista kontrolna wyłapuje najczęstsze błędy, ale nie zastąpi przeglądu kodu ani testów penetracyjnych, w których specjalista próbuje włamać się do aplikacji tak, jak zrobiłby to atakujący. Dla aplikacji, które przetwarzają dane klientów albo łączą się z systemami firmy, warto zaplanować oba kroki. W firmie objętej ustawą o KSC wynik przeglądu jest też dowodem dla audytora. Jeśli aplikację zbudował zewnętrzny wykonawca, tę samą listę warto wykorzystać przy ocenie dostawcy; piszemy o tym w tekście SZBI i ocena dostawców oprogramowania.

Jak przejść listę kontrolną OWASP Top 10 w jeden dzień

Przegląd małej aplikacji zbudowanej z AI można przeprowadzić w ciągu jednego dnia roboczego, jeśli przygotuje się go z wyprzedzeniem. Potrzebne są: dostęp do kodu lub projektu w narzędziu, w którym aplikację zbudowano, dostęp do panelu bazy danych i hostingu oraz godzina rozmowy z osobą, która aplikację stworzyła.

  • Rano: rozmowa z twórcą aplikacji. Do czego służy, jakie dane przetwarza, kto z niej korzysta i z jakimi systemami się łączy.
  • Przed południem: konfiguracja. Reguły dostępu do tabel, uwierzytelnianie, publiczne magazyny plików, zmienne środowiskowe i klucze. W Supabase pomaga wbudowany doradca bezpieczeństwa (Security Advisor), który wskazuje tabele bez Row Level Security.
  • Po południu: kod i zależności. Wyszukanie sekretów, sprawdzenie, czy każdy punkt API weryfikuje uprawnienia po stronie serwera, i przegląd bibliotek pod kątem znanych podatności.
  • Na koniec: krótki raport z trzema listami: do naprawy od razu, do naprawy w ciągu miesiąca i do decyzji, czyli czy aplikację przejąć, przepisać, czy wyłączyć.

Najczęstsze wyniki przeglądu i jak je naprawić

W aplikacjach budowanych z AI powtarza się kilka problemów. Tabele bez Row Level Security naprawia się, włączając RLS i dodając polityki, które pozwalają użytkownikowi czytać tylko własne rekordy. Klucz z uprawnieniami administratora w kodzie przeglądarki trzeba natychmiast zmienić, a operacje wymagające tych uprawnień przenieść na serwer. Punkty API, które przyjmują identyfikator rekordu i zwracają dane bez sprawdzenia, czy należą one do zalogowanego użytkownika, to klasyczny przykład błędnej kontroli dostępu z pierwszego miejsca OWASP Top 10; poprawka polega na dodaniu weryfikacji po stronie serwera. Brak limitów zapytań rozwiązuje się na poziomie platformy hostingowej albo bramki API.

Większość tych poprawek zajmuje godziny, nie tygodnie. Trudniejsze bywają decyzje organizacyjne: czy narzędzie, które zaczęło się jako eksperyment, a dziś obsługuje setki klientów, nie powinno zostać przepisane i przejęte przez zespół IT. Taka decyzja powinna zapaść świadomie, z udziałem właściciela biznesowego, a nie dopiero po pierwszym incydencie.

Testy penetracyjne: kiedy lista kontrolna to za mało

Testy penetracyjne warto zlecić, gdy aplikacja przetwarza dane osobowe wielu klientów, obsługuje płatności, łączy się z systemami produkcyjnymi albo jest dostępna publicznie dla każdego. W takich przypadkach lista kontrolna jest punktem wyjścia, a nie końcem pracy. Tester bezpieczeństwa łączy kilka drobnych słabości w realny scenariusz ataku, czego lista kontrolna nie zrobi. Najlepiej najpierw usunąć problemy z listy, a dopiero potem zamówić testy, bo wtedy raport skupia się na trudniejszych błędach, a nie na brakach, które można było znaleźć samodzielnie. W firmach objętych ustawą o KSC wynik testów i lista poprawek to też mocny dowód dla audytora.

Przy wyborze wykonawcy testów warto zapytać o zakres (aplikacja webowa, API, infrastruktura), metodykę, przykładowy raport i to, czy po poprawkach przewidziany jest ponowny test. Testy powinny odbywać się na środowisku, które odpowiada produkcji, ale z danymi testowymi zamiast danych klientów. Po testach warto zaktualizować listę kontrolną o znalezione problemy, żeby kolejne aplikacje budowane z AI od początku ich unikały.

Przegląd aplikacji z AI według OWASP Top 10, z naprawą

Sanddev sprawdza aplikacje zbudowane z AI według OWASP Top 10, naprawia znalezione problemy i przygotowuje raport dla zarządu. Opisujemy to na stronie o tym, jak wygląda pełny przegląd gotowości aplikacji do produkcji.

Najczęściej zadawane pytania

Co to jest OWASP Top 10?

OWASP Top 10 to lista dziesięciu najpoważniejszych kategorii ryzyka w aplikacjach webowych, publikowana przez fundację OWASP. Zespoły bezpieczeństwa, programiści i audytorzy używają jej jako punktu odniesienia; na pierwszym miejscu jest błędna kontrola dostępu.

Czy aplikacje zbudowane w Lovable są bezpieczne?

Mogą być, jeśli ktoś sprawdzi ich konfigurację. Aplikacje z Lovable często korzystają z Supabase, a bezpieczeństwo danych zależy wtedy od reguł Row Level Security. Bez nich dane z tabel może odczytać każdy, kto zna adres aplikacji.

Jak sprawdzić, czy baza Supabase jest zabezpieczona?

Trzeba sprawdzić, czy każda tabela z danymi ma włączone Row Level Security i polityki ograniczające odczyt i zapis, oraz czy klucz service_role nie trafił do kodu przeglądarki ani repozytorium. Opis konfiguracji jest w dokumentacji Supabase.

Czy lista kontrolna zastępuje testy penetracyjne?

Nie. Lista kontrolna oparta na OWASP Top 10 wyłapuje najczęstsze błędy, ale testy penetracyjne sprawdzają aplikację tak, jak zrobiłby to atakujący, i znajdują problemy, których lista nie obejmuje.

Czym różni się OWASP Top 10 od OWASP Top 10 dla LLM?

OWASP Top 10 opisuje ryzyka w aplikacjach webowych, a OWASP Top 10 dla aplikacji LLM dotyczy aplikacji korzystających z modeli językowych, na przykład wstrzykiwania poleceń i ujawniania danych w odpowiedziach modelu.