Nieprawidłowa kontrola dostępu¶
Nieprawidłowa kontrola dostępu (ang. Broken Access Control) to podatność polegająca na niewłaściwej weryfikacji uprawnień użytkownika podczas wykonywania operacji lub uzyskiwania dostępu do zasobów. W efekcie użytkownik może wykonywać działania lub uzyskiwać dostęp do funkcji i danych, które powinny być dla niego niedostępne.
Podatność wynika najczęściej z braku autoryzacji po stronie serwera, błędnej implementacji mechanizmów kontroli dostępu lub opierania decyzji o uprawnieniach wyłącznie na danych przesyłanych przez klienta.
Skutki udanego ataku¶
Broken Access Control może prowadzić do:
- uzyskania dostępu do danych innych użytkowników,
- wykonywania operacji administracyjnych bez odpowiednich uprawnień,
- modyfikacji lub usuwania danych,
- eskalacji uprawnień,
- przejęcia kont uprzywilejowanych,
- pełnej kompromitacji aplikacji.
Typowe scenariusze¶
Brak weryfikacji uprawnień¶
Aplikacja nie sprawdza, czy zalogowany użytkownik posiada odpowiednie uprawnienia do wykonania żądania.
Przykład:
Każdy zalogowany użytkownik może uzyskać dostęp do panelu administracyjnego.
Pionowa eskalacja uprawnień¶
Użytkownik posiadający podstawowe uprawnienia może wykonywać operacje przeznaczone wyłącznie dla administratorów.
Przykład:
lub
Pozioma eskalacja uprawnień¶
Użytkownik może uzyskać dostęp do danych lub funkcji należących do innego użytkownika posiadającego ten sam poziom uprawnień.
Przykład:
zmiana identyfikatora:
powoduje wyświetlenie danych innego użytkownika.
Dostęp do ukrytych endpointów bez weryfikacji po stronie serwera¶
Aplikacja ukrywa funkcje administracyjne w interfejsie użytkownika, jednak serwer nie weryfikuje uprawnień podczas obsługi żądania. Funkcje te pozostają dostępne bezpośrednio pod znanym adresem URL.
Przykłady:
Jeżeli serwer nie sprawdza uprawnień, użytkownik może uzyskać dostęp do tych funkcji.
Manipulacja parametrami¶
Aplikacja podejmuje decyzje dotyczące uprawnień na podstawie danych przesyłanych przez użytkownika.
Przykład:
lub
Jeżeli serwer ufa takim danym, może dojść do eskalacji uprawnień.
Rekomendacje¶
Aby ograniczyć ryzyko występowania podatności, należy:
- weryfikować po stronie serwera, czy uwierzytelniony podmiot może wykonać daną operację na konkretnym zasobie,
- obejmować kontrolą wszystkie chronione ścieżki dostępu,
- stosować zasadę najmniejszych uprawnień (ang. Least Privilege),
- domyślnie odmawiać dostępu (
deny by default), - nie podejmować decyzji o autoryzacji tylko na podstawie danych przesyłanych przez klienta,
- egzekwować centralną politykę dla każdego żądania i zasobu,
- rejestrować próby nieautoryzowanego dostępu oraz monitorować logi bezpieczeństwa.