Security by obscurity – czyli dlaczego ukrywanie to nie zabezpieczanie

W świecie IT łatwo trafić na praktyki, które na pierwszy rzut oka wydają się sprytne, a w rzeczywistości są jedynie zasłoną dymną. Jedną z nich jest security by obscurity – podejście do bezpieczeństwa, w którym ochrona systemu polega głównie na ukrywaniu pewnych informacji, celem utrudnienia atakującemu zrozumienia jego działania i odnalezienia luk bezpieczeństwa, a nie na rzeczywistych, silnych zabezpieczeniach.

Security through obscurity opiera się na poleganiu na tym, że atakujący czegoś nie zauważy, nie znajdzie, nie domyśli się. Polegając na obscurity, zakładasz więc, że ktoś nie wpadnie na pomysł, na który Ty sam wpadłeś, że nie użyje skanera katalogów, nie odpali narzędzia typu Burp Suite, nie sprawdzi logiki aplikacji, nie przeanalizuje ruchu sieciowego. To założenie jest błędne z definicji. Atakujący mają narzędzia, automaty, skanery i doświadczenie. Dla nich znalezienie ukrytej rzeczy to nie jest zagadka logiczna do rozwiązania po godzinach, to jeden z kroków, które ich narzędzia wykonują automatycznie.

Co więcej, obscurity zmienia priorytety. Jeśli budujesz system w oparciu o ukrywanie, przestajesz skupiać się na naprawianiu faktycznych problemów i zaczynasz inwestować energię w wymyślanie coraz bardziej kreatywnych sposobów chowania ich pod dywanem. Zamiast poprawiać autoryzację, ukrywasz endpoint, zamiast uszczelniać logowanie, zmieniasz ścieżkę panelu admina. Na krótką metę daje to wrażenie kontroli, na dłuższą tworzy iluzję bezpieczeństwa.

Prawdziwe zabezpieczenie działa nawet wtedy, gdy atakujący zna całą architekturę Twojego systemu, wie, jakich bibliotek używasz, jak wygląda struktura aplikacji, gdzie są endpointy. Bezpieczeństwo nie może polegać na tajemnicy. Powinno za to polegać na odpowiednim szyfrowaniu danych, poprawnej autoryzacji, odpowiedniej walidacji danych wejściowych, zasadzie nadawania najmniejszych możliwych uprawnień, regularnym aktualizowaniu zależności.

Obscurity może być dodatkiem, kolejną warstwą, która utrudni życie przypadkowym skanerom. Ale jeśli od niej uzależniasz bezpieczeństwo, to zakładasz, że Twój przeciwnik nie patrzy tam, gdzie powinien. A to założenie w świecie cyberbezpieczeństwa nie ma szans się obronić. System jest bezpieczny tylko wtedy, gdy nawet po odkryciu „ukrytej” rzeczy atakujący nadal nie ma dostępu, bo właściwe zabezpieczenia są silne i dobrze wdrożone.