Przyznam się do czegoś strasznego - nie jestem fanem Tolkiena. Próbowałem kilka razy zmusić się do przeczytania różnych jego książek i... nic. Nie udało mi się dobrnąć do końca. Ale ten cytat (z filmu, więc nie wiem jak wierny) dobrze pasuje mi do tego, o czym chcę napisać: (...) some things that should not have been forgotten were lost. History became legend. Legend became myth (...). Albo nieco inaczej - jak wiele czynności wykonywanych jest, bo tak się kiedyś robiło? Ile w tym przyzwyczajenia i tradycji, a ile sensu?
Znajdź ukryty sens dobrych praktyk
Podobnie bywa czasem z tak zwanymi dobrymi praktykami, które stosuje się, bo przecież wszyscy mówią, że stosować trzeba, bo bez nich będzie płacz i zgrzytanie zębami. Z czasem okazuje się jednak, że nie wszystkie dobre praktyki mają sens, a przynajmniej ten sens jest mocno wątpliwy (np.: zmiana haseł albo klawiatury wirtualne, przy czym oba przypadki z różnych powodów).
Dobre praktyki nie są niezmienne w czasie. Mogą wymagać modyfikacji, bo otoczenie, w którym funkcjonujemy się zmieniają. To, co było skuteczne wczoraj traci swą skuteczność dziś. By nie szukać zbyt daleko - klawiatury wirtualne może i miały pewną wartość dodaną jakiś czas temu, obecnie malware jest tak rozwinięte, że wartość dodana klawiaturek wirtualnych jest pomijalna i należy myśleć o stosowaniu innych dobrych praktyk, na przykład uwierzytelnienia dwuskładnikowego.
Czy regularna zmiana hasła coś daje? Tak, coś daje. Tylko nie można nie zauważyć, że zmienił się nieco sposób ataków (np. phishing, malware), pojawiły się inne problemy (np. stosowanie tego samego hasła w różnych serwisach). W tym kontekście trudno doszukać się wyraźnych zysków z regularnej zmiany hasła. Oczywiście, nadal można rozważać scenariusze polegające na bardzo długo trwającym ataku brute force lub wycieku (hashy) haseł, ale zysk, który w tym zakresie może dać regularna zmiana hasła przez użytkownika nie koniecznie rekompensuje kosztów. Skuteczność ataków brute force można zmniejszać również na inne, mniej uciążliwe dla użytkownika sposoby.
Można twierdzić, że dobre praktyki są dobre, bo są dobre i sprawdzone i stosować się do nich z fanatycznym oddaniem. Można też zdobyć się na chwilę refleksji i zastanowić się, czy w tym konkretnym przypadku stosowanie konkretnych zaleceń ma sens i czy niesie ze sobą jakąś wartość dodaną.
W ramach przykładu/ćwiczenia chcę zwrócić uwagę na kilka punktów z OWASP ASVS:
- V2.2
- Verify that all password fields do not echo the user’s password when it is entered, and that password fields (or the forms that contain them) have autocomplete disabled.
- V9.1
- Verify that all forms containing sensitive information have disabled client side caching, including autocomplete features.
- V9.4
- Verify that all cached or temporary copies of sensitive data sent to the client are protected from unauthorized access or purged/invalidated after the authorized user accesses the sensitive data (e.g., the proper no-cache and no-store Cache-Control headers are set).
Pytanie - jaki jest sens tych dobrych praktyk? Konkretnie chodzi mi o wyłączenie autocomplete oraz odpowiednie ustawienie nagłówka Cache-Control. W jakim przypadku niezastosowanie się do nich może powodować problemy? Czy potencjalne problemy są wystarczającym uzasadnieniem skutków ubocznych, w tym wypadku - niemożność zapamiętania hasła przez przeglądarkę, konieczność wielokrotnego wpisywania tych samych danych przez użytkownika czy wreszcie potencjalne zwiększenie obciążenia infrastruktury (serwery, łącze) przez wyłączenie mechanizmów cache.
Tak na serio, to w/w punkty nabierają sensu jeśli się pentest potraktuje jako dane wejściowe do analizy ryzyka a nie jako efekt końcowy, w którym musi być co najmniej 5 dziur bo inaczej klient będzie myślał, żeśmy się lenili.
W analizie ryzyka takie drobiazgi stanowią podatności cząstkowe. Jeśli jest ich dużo i jest realna ścieżka ataku to jest się czym przejmować. Jeśli jest ich mało i ścieżka nie istnieje to po prostu sobie są.
Co do tych trzech punków, to akurat uważam, że każdy z nich sam z siebie w pewnym specyficznym (ale dość popularnym wśród "zwykłych użytkowników") scenariuszu prowadzi co najmniej do information disclosure z potencjałem przejęcia konta/ujawnienia hasła. Ale więcej na ten temat trochę później, może ktoś to zaproponuje