OWASP Top 10
| Po angielsku | OWASP Top 10 |
|---|---|
| Którą formą pisać | bez tłumaczenia Skrót, nazwa własna albo nazwa standardu — nie tłumaczymy w ogóle. |
| Inne formy | lista dziesięciu najpoważniejszych ryzyk aplikacji webowych (opis, nie etykieta) |
| Kategoria | Podatności i klasy błędów |
OWASP Top 10 to zestawienie dziesięciu najpoważniejszych kategorii ryzyk w aplikacjach webowych, publikowane przez fundację OWASP i aktualizowane co kilka lat. Sama fundacja nazywa je standardowym dokumentem budującym świadomość wśród programistów, który wyraża szeroki konsensus co do najbardziej krytycznych zagrożeń dla aplikacji webowych [1]. Kategorie oznacza się kodem i rokiem edycji, na przykład A01:2025 Broken Access Control [2]. Najnowsza edycja pochodzi z 2025 roku, a poprzednie z lat 2021 i 2017 [1].
Jak powstaje lista
Lista łączy dane z testów aplikacji z opinią praktyków. Według wstępu do edycji 2025 dane pochodziły od 13 organizacji i obejmowały ponad 2,8 mln aplikacji [3]. Przeanalizowano 589 słabości CWE, wobec około 400 w edycji 2021 [3]. Słabości grupuje się w kategorie, przeciętnie po 25 i najwyżej po 40 w jednej kategorii [3].
Osiem kategorii wybrano na podstawie danych, a dwie awansowały dzięki ankiecie wśród społeczności [3]. Uzasadnienie jest takie, że praktycy widzą ryzyka, których może nie być w danych i które być może nigdy się w nich nie pojawią [3]. Autorzy świadomie stawiają przyczynę źródłową ponad objaw: kategoria ma opisywać błąd, który trzeba naprawić, a nie tylko jego skutek [3].
Kategorie edycji 2025
Edycja 2025 obejmuje dziesięć kategorii [2]. Trzecia kolumna wskazuje przykładowe hasła słownika, które się w nich mieszczą.
| Kod | Kategoria | Przykład |
|---|---|---|
| A01:2025 | Broken Access Control | Broken Access Control, IDOR (Insecure Direct Object Reference), SSRF (Server-Side Request Forgery) |
| A02:2025 | Security Misconfiguration | błędna konfiguracja zabezpieczeń |
| A03:2025 | Software Supply Chain Failures | atak na łańcuch dostaw |
| A04:2025 | Cryptographic Failures | brak TLS |
| A05:2025 | Injection | SQL injection, XSS (Cross-Site Scripting) |
| A06:2025 | Insecure Design | błąd logiki biznesowej |
| A07:2025 | Authentication Failures | credential stuffing |
| A08:2025 | Software or Data Integrity Failures | deserializacja niezaufanych danych (insecure deserialization) |
| A09:2025 | Security Logging and Alerting Failures | retencja logów |
| A10:2025 | Mishandling of Exceptional Conditions | tryb debugowania na produkcji |
Względem edycji 2021 najważniejsze zmiany są trzy. Kategoria A10:2025 jest nowa i dotyczy niewłaściwej obsługi błędów, błędów logicznych i działania w trybie „fail open” [3]. Kategoria Vulnerable and Outdated Components z 2021 roku została rozszerzona do A03:2025 Software Supply Chain Failures, a SSRF (Server-Side Request Forgery) włączono do A01 [3]. Security Misconfiguration awansowała z piątego na drugie miejsce, a Injection spadła z trzeciego na piąte [3]. Cryptographic Failures przesunęła się z drugiego na czwarte miejsce, a Insecure Design z czwartego na szóste [3]. Spadek w rankingu nie oznacza, że błędy danej klasy zniknęły. Kolejność odzwierciedla dane zebrane dla konkretnej edycji i wyniki ankiety, więc porównując edycje, lepiej patrzeć na treść kategorii niż na samo miejsce.
Najważniejsze kategorie
A01 Broken Access Control pozostaje na pierwszym miejscu. Do kategorii przypisano 40 słabości CWE, a jakąś formę błędu kontroli dostępu stwierdzono w 100% testowanych aplikacji [4]. W danych odnotowano 1 839 701 wystąpień, najwięcej ze wszystkich kategorii [4]. Pod względem liczby powiązanych rekordów CVE kategoria jest druga, z 32 654 rekordami [4]. OWASP opisuje kontrolę dostępu jako egzekwowanie zasad, zgodnie z którymi użytkownik nie może działać poza przyznanymi uprawnieniami; błędy prowadzą do ujawnienia, zmiany lub zniszczenia danych albo do wykonania funkcji spoza zakresu użytkownika [4].
A03 Software Supply Chain Failures obejmuje sześć słabości CWE przy średniej częstości 5,72% i ma najwyższy średni wpływ spośród kategorii listy [5]. Dotyczy nie tylko przestarzałych komponentów, lecz każdego załamania albo kompromitacji w procesie budowania, dystrybucji i aktualizacji oprogramowania [5].
W WordPressie
Na stronach WordPress lista odpowiada typowym klasom błędów we wtyczkach i motywach. Podręcznik bezpieczeństwa dla programistów WordPressa nazywa wtyczki i motywy kluczowymi punktami słabości i formułuje zasadę: nigdy nie ufać danym od użytkownika [7]. Rozszerza ją na interfejsy zewnętrzne i dane w bazie, których nie należy przyjmować bez weryfikacji [7].
- A01. Tej kategorii odpowiada brak kontroli uprawnień (missing authorization), na przykład w akcji AJAX albo punkcie REST API, który nie sprawdza, kto go wywołuje. Dokumentacja WordPressa ostrzega, że nonce nie może służyć do uwierzytelniania, autoryzacji ani kontroli dostępu; funkcje trzeba chronić wywołaniem
current_user_can()[8]. Nonce chroni przed CSRF (Cross-Site Request Forgery), ale nie przed atakiem powtórzeniowym [8]. - A03. Każda wtyczka jest zależnością. OWASP zaleca usuwanie nieużywanych zależności, pobieranie komponentów wyłącznie z oficjalnych źródeł oraz zwracanie uwagi na biblioteki nieutrzymywane albo niełatane dla starszych wersji [5]. W WordPressie odpowiada to unikaniu wtyczek z nieoficjalnych źródeł i porzuconych; zob. piracka wtyczka (nulled plugin) i porzucona wtyczka.
- A05. Wstrzyknięcia ograniczają escapowanie danych przy wyjściu i sanityzacja danych wejściowych, opisane w tym samym podręczniku [7].
Jak korzystać z listy
OWASP podkreśla, że Top 10 opisuje ryzyka, a nie łatwe do sprawdzenia wymagania. Choć lista bywa traktowana jako faktyczny standard branżowy, dokument ostrzega, że jest absolutnym minimum i tylko punktem wyjścia [6]. Jako standard weryfikacji OWASP wskazuje Application Security Verification Standard (ASVS), zaprojektowany tak, by dało się go sprawdzać i testować na każdym etapie cyklu wytwarzania [6]. Niektórych kategorii nie da się wiarygodnie sprawdzić testem: dokument z 2021 roku zauważa, że Insecure Design wykracza poza zakres większości form testowania [6].
W praktyce lista dobrze sprawdza się jako wspólny język w audycie bezpieczeństwa, w szkoleniach i przy ustalaniu zakresu testu penetracyjnego. Wynik takiego testu opisuje się jednak konkretnymi podatnościami i numerami CVE, a nie samą przynależnością do kategorii.
Przypisy
8- [1] OWASP Top Ten — project page · OWASP
- [2] OWASP Top 10:2025 · OWASP
- [3] Introduction — OWASP Top 10:2025 · OWASP
- [4] A01:2025 Broken Access Control · OWASP
- [5] A03:2025 Software Supply Chain Failures · OWASP
- [6] How to use the OWASP Top 10 as a standard · OWASP
- [7] Security — Common APIs Handbook · WordPress.org
- [8] Nonces — Common APIs Handbook · WordPress.org
Hasła w tym artykule
25- CWE
- Broken Access Control
- IDOR (Insecure Direct Object Reference)
- SSRF (Server-Side Request Forgery)
- błędna konfiguracja zabezpieczeń
- atak na łańcuch dostaw
- TLS
- SQL injection
- XSS (Cross-Site Scripting)
- błąd logiki biznesowej
- credential stuffing
- deserializacja niezaufanych danych (insecure deserialization)
- retencja logów
- tryb debugowania na produkcji
- Vulnerable and Outdated Components
- CVE
- brak kontroli uprawnień (missing authorization)
- nonce
- CSRF (Cross-Site Request Forgery)
- piracka wtyczka (nulled plugin)
- porzucona wtyczka
- escapowanie
- sanityzacja danych wejściowych
- audyt bezpieczeństwa
- test penetracyjny