4. Błędy kontroli dostępu

4.5. Podsumowanie

Wadliwa kontrola dostępu do zasobów bardzo często prowadzi do ujawnienia danych, do których użytkownik nie miał uprawnień. Obrona przed tego typu atakami opera się przede wszystkim na

  • stosowaniu polityki świadomego udostępniania (whitelisting), gdzie każdy zasób jest niedostępny o ile świadomie go nie udostępniono,
  • spójne realizowanie zasady minimalnych uprawnień przydzielanych użytkownikowi w danym kontekście,
  • weryfikację praw dostępu na każdym poziomie aplikacji
    • na poziomie frontendu dla zapewnienia wygody użytkowania (wczesne komunikaty o błędach),
    • na poziomie backendu – aby zapobiec przekazaniu niepoprawnych danych,
    • na poziomie bazy danych np. poprzez odpowiednie zależności danych, uprawnienia dostępu i procedury wbudowane,
  • unikanie bezpośredniego dostępu do plików danych w celu minimalizacji ryzyka podatności typu path traversal,
  • limitowanie dostępu do API aplikacji poprzez ustawienie limitów utrudniające zautomatyzowane ataki listowania kolejnych zasobów po identyfikatorach,
  • używanie losowych identyfikatorów zasobów o długości bitowej wykluczającej ataki listujące (np. wykorzystanie identyfikatorów UUID),
  • śledzenie nieudanych operacji i zautomatyzowane reagowanie na ataki listujące, próby odczytu plików spoza drzewa,
  • ochrona tokenami jednorazowymi wszystkich formularzy i zapytań zmieniających stan w aplikacji,
  • wykorzystanie warstwy middleware do weryfikacji uprawnień zapewniającej automatyczne wsparcie wszystkich końcówek API (np. Spring Security dla frameworku Spring w Javie).