Blog 24/7

Broken Access Control

TAB. 1Hasłopo angielsku
Po angielskubroken access control
Którą formą pisaćpo angielsku Polski odpowiednik istnieje, ale w praktyce nikt tak nie pisze. Zostaw angielski, polski trzymaj jako synonim.
Inne formybłędy kontroli dostępu · błędy w kontroli dostępu · nieprawidłowa kontrola dostępu (nie występuje w zebranych źródłach; możliwa forma z oficjalnych tłumaczeń OWASP — do weryfikacji przed użyciem)
KategoriaPodatności i klasy błędów

Broken Access Control to kategoria błędów, w których aplikacja nie egzekwuje poprawnie reguł dostępu, przez co użytkownik działa poza przyznanymi mu uprawnieniami [1]. OWASP wskazuje, że takie awarie prowadzą zwykle do nieuprawnionego ujawnienia, modyfikacji albo zniszczenia danych lub do wykonania funkcji biznesowej wykraczającej poza limity użytkownika [1]. W liście OWASP Top 10 w edycji 2025 kategoria ta utrzymała pierwsze miejsce, a w 100% testowanych aplikacji znaleziono jakąś jej formę [1]. Nazwa jest parasolem: obejmuje zarówno całkowity brak kontroli uprawnień (missing authorization), jak i kontrolę obecną, ale błędną lub możliwą do obejścia.

Jak działa

Kontrola dostępu odpowiada na pytanie, co wolno zalogowanemu użytkownikowi. To autoryzacja, a nie uwierzytelnianie, które ustala tylko, kim ten użytkownik jest. Błąd z kategorii Broken Access Control pojawia się, gdy serwer wykonuje operację, nie sprawdzając uprawnień, albo sprawdza je na podstawie danych, które kontroluje klient.

OWASP opisuje trzy modelowe scenariusze [1]. W pierwszym aplikacja pobiera dane konta według parametru acct z adresu, więc wystarczy podmienić numer, żeby zobaczyć cudze konto. W drugim atakujący zgaduje adres strony administracyjnej i otwiera ją bez uprawnień. W trzecim cała kontrola dostępu siedzi w kodzie JavaScript w przeglądarce, a atakujący wywołuje punkt końcowy bezpośrednio, na przykład narzędziem curl [1]. Schemat poniżej pokazuje ten ostatni przypadek.

RYS. 1Kontrola tylko w przeglądarce

Odmiany

OWASP wymienia typowe postaci tej kategorii [1]. W edycji 2025 przypisano do niej 40 słabości CWE, które dały łącznie 1 839 701 wystąpień w danych i 32 654 powiązane CVE [1].

OdmianaPrzykład
naruszenie zasady „domyślnie odmawiaj”zasób dostępny dla każdego zamiast dla wybranych ról [1]
manipulacja parametrem lub wymuszone przeglądaniezmiana adresu URL, stanu aplikacji albo żądania API [1]
IDORpodgląd lub edycja cudzego konta po jego identyfikatorze [1]
API bez kontroli metod POST, PUT, DELETEmodyfikacja danych bez uprawnień [1]
eskalacja uprawnieńdziałanie bez logowania albo z uprawnieniami administratora [1]
manipulacja metadanymipodrobiony JWT, ciasteczko albo ukryte pole [1]
CORS misconfigurationdostęp do API z niezaufanych domen [1]

Do kategorii należą też CWE-862 (Missing Authorization), CWE-863 (Incorrect Authorization) i CWE-918, czyli SSRF [1]. W rankingu CWE Top 25 za 2025 rok CWE-862 zajęło 4. miejsce, CWE-863 17. miejsce, a CWE-639, słabość leżąca u podstaw IDOR, 24. miejsce [3].

W WordPressie

W WordPressie kontrola dostępu opiera się na rolach i uprawnieniach użytkowników. Rola to zestaw uprawnień, a kod powinien pytać o konkretne uprawnienie funkcją current_user_can(). Podręcznik wtyczek zaleca, by uruchamiać kod tylko wtedy, gdy bieżący użytkownik ma potrzebne uprawnienia, i pokazuje przykład, w którym brak takiego warunku pozwala dowolnemu odwiedzającemu przenosić wpisy do kosza [4].

if ( current_user_can( 'edit_others_posts' ) ) {
    add_action( 'init', 'wporg_delete_post' );
}

Najczęstsze miejsca błędów to akcje AJAX, formularze w panelu i trasy REST API dodane przez wtyczki. Dokumentacja REST API wymaga rejestrowania permission_callback dla każdej trasy; od WordPressa 5.5 jego brak wywołuje komunikat _doing_it_wrong [5]. Trasa publiczna ma jawnie używać __return_true [5], co ułatwia przegląd kodu: widać od razu, które trasy są otwarte. Trasa bez takiej kontroli to niezabezpieczony endpoint REST API (REST API abuse).

Częstym nieporozumieniem jest traktowanie nonce jako kontroli dostępu. Dokumentacja mówi wprost, że na nonce nigdy nie należy polegać przy uwierzytelnianiu, autoryzacji ani kontroli dostępu; funkcje trzeba chronić przez current_user_can() i zakładać, że nonce może zostać przejęty [6]. Nonce chroni przed CSRF, czyli przed żądaniem wysłanym w cudzym imieniu, ale nie odpowiada na pytanie, czy dany użytkownik może wykonać operację.

Patchstack w raporcie za pierwsze półrocze 2025 roku przypisał kategorii Broken Access Control 10,9% podatności w ekosystemie WordPressa [7]. Autorzy komentują, że ta częstość pokazuje, jak łatwo błędnie odwzorować role i uprawnienia WordPressa [7].

Zagrożenia i skutki

MITRE wymienia jako skutki braku autoryzacji odczyt danych wrażliwych, nieuprawnioną modyfikację danych, eskalację uprawnień oraz wyczerpanie zasobów prowadzące do odmowy usługi [2]. Na stronie WordPress przekłada się to na konkretne scenariusze: subskrybent zmieniający opcje wtyczki, nieuwierzytelniony gość eksportujący dane klientów sklepu, zmiana roli konta na administratora. Ostatni przypadek prowadzi zwykle do przejęcia konta i pełnej kontroli nad stroną.

Jak się bronić

OWASP podkreśla, że kontrola dostępu jest skuteczna tylko w zaufanym kodzie po stronie serwera, którego atakujący nie może zmodyfikować [1]. Zalecenia obejmują [1]:

  • odmowę domyślną dla wszystkiego poza zasobami publicznymi;
  • jeden mechanizm kontroli dostępu, używany w całej aplikacji;
  • egzekwowanie własności rekordu, zamiast pozwalać na odczyt i edycję dowolnego rekordu;
  • wyłączenie listowania katalogów (directory listing) i usunięcie z katalogu WWW metadanych, takich jak .git, oraz kopii plików;
  • logowanie odmów dostępu i powiadamianie administratorów przy powtarzających się próbach;
  • rate limiting dla API i kontrolerów;
  • testy funkcjonalne kontroli dostępu w testach jednostkowych i integracyjnych.

MITRE zaleca dodatkowo kontrolę dostępu opartą na rolach, czyli RBAC, i sprawdzanie uprawnień także w logice biznesowej, nie tylko na poziomie zasobu [2]. W WordPressie oznacza to przypisywanie ról zgodnie z zasadą najmniejszych uprawnień oraz weryfikację uprawnień w każdej funkcji, która zmienia dane.

Historia i przykłady

CERT Polska 19 maja 2026 roku opublikował informację o podatnościach w produktach Sparx Systems [8]. Według komunikatu Pro Cloud Server do wersji 6.1 włącznie był podatny na atak typu Broken Access Control w komunikacji z bazą danych: z powodu braku weryfikacji uprawnień każdy uwierzytelniony użytkownik mógł wykonywać dowolne zapytania SQL w kontekście użytkownika bazy [8]. Podatność otrzymała numer CVE-2026-42096 i klasyfikację CWE-863 [8]. Ta sama publikacja opisuje CVE-2026-42097, w którym pominięcie parametru model w adresie pozwalało wykonywać zapytania SQL bez uwierzytelnienia [8].

TAB. 2

Przypisy

8
  1. [1] A01:2025 – Broken Access Control · OWASP
  2. [2] CWE-862: Missing Authorization · MITRE
  3. [3] 2025 CWE Top 25 Most Dangerous Software Weaknesses · MITRE
  4. [4] Checking User Capabilities — Plugin Handbook · WordPress.org
  5. [5] Adding Custom Endpoints — REST API Handbook · WordPress.org
  6. [6] Nonces — Common APIs Handbook · WordPress.org
  7. [7] State of WordPress Security: 2025 Mid-Year Vulnerability Report · Patchstack
  8. [8] Podatności w produktach firmy Sparx Systems (CVE-2026-42096 i inne) · CERT Polska
TAB. 3

Hasła w tym artykule

21
TAB. 4

Linkują tutaj

11

Wszystkie kategorie → · Hasło w słowniku →

Blog 24/7
05.11CISA i FBI wzywają do zabezpieczenia sterowników chłodzenia po atakach w Europietherecord.media05.11Midnight Blizzard atakowała iPhone'y i Androidy przez zainfekowane strony w Europie i USAsecurityweek.com05.11APT29 kradła dane z iPhone'ów i Androidów przez przejęte i podrobione stronytherecord.media05.11Grupa APT29 przejęła skrypt Plerdy i atakowała niezałatane iPhone'y i Androidythehackernews.com05.11Microsoft wykrył 7,3 mld wiadomości phishingowych w III kwartale 2026microsoft.com05.11DigiCert ujawnia wyciek danych klientów i skanów dokumentów tożsamościbleepingcomputer.com05.11CWPdoor podmienia serwer cwpsrv w Control Web Panel i otwiera tylne wejście do Linuksableepingcomputer.com05.11Brytyjskie NCSC ostrzega, że narzędzia AI zwiększyły liczbę wykrywanych luk zero-daythehackernews.com05.11Skaner RootEvidence sprawdza starą lukę w Cisco IOS i dodaje nagłówki Opt-Outisc.sans.edu05.11Włamanie do portalu grantowego Norad, zagrożone dane 20 614 użytkownikówhelpnetsecurity.com