Taka mała kontynuacja poprzedniego postu o sensowności stosowania wirtualnej klawiatury.
Defence-in-depth a działania pozorowane
Defence-in-depth
W przypadku bezpieczeństwa bardzo istotne jest stosowanie techniki określanej jako defence-in-depth. W skrócie chodzi o to, że nie należy polegać tylko na jednej linii obrony, lecz zaimplementować jak najwięcej mechanizmów. Przykładem takiego postępowania może być stosowanie zarówno walidacji danych wejściowych, jak i encodingu na wyjściu w celu przeciwdziałaniu atakom typu XSS. Jeśli z jakiegoś powodu (zwykle - niedopatrzenie programisty) tej walidacji nie będzie, lub będzie się ją dało obejść, zawsze pozostaje na drugiej linii encoding. Gdy tego encodingu nie ma, to na pierwszej linii z kolei jest walidacja danych. Oczywiście, może się zdarzyć, że w jakimś miejscu nie będzie żadnej ochrony, ale prawdopodobieństwo takiego zdarzenia jest niższe, niż w przypadku, gdy zabezpieczenie jest tylko jedno.
Kolejnym przykładem tej techniki może być coś takiego:
- Połączenie WiFi szyfrowane przy pomocy WEP,
- Komunikacja do bramki szyfrowana przez IPSec,
- Szyfrowanie poszczególnych protokołów (HTTPS, SPOP3, SSMTP, itp.),
Choć WEP jest do złamania banalny, to jest to dodatkowy krok dla atakującego, który musi on wykonać.
Działania pozorowane
Czy w takim razie stosowanie wirtualnej klawiatury nie jest również przykładem tej techniki? Według mnie - nie. Dlaczego? Ponieważ wyzwaniem dla atakującego nie jest "przechwycenie" wirtualnej klawiatury, tylko zainstalowanie swojego kodu na komputerze ofiary. W chwili, gdy jest w stanie to zrobić, klawiatura wirtualna staje się całkowicie bezużyteczna. Jeśli atakujący tego nie zrobi (nie zainstaluje swojego oprogramowania), klawiatura wirtualna jest całkowicie zbędna (bo nie ma przed czym chronić). Innymi słowy - klawiatura wirtualna chroni przed złośliwym oprogramowaniem (bo keylogger zrzucający ekran, to już nie jest keylogger w ścisłym tego słowa znaczeniu), pod warunkiem, że takowe nie zostało zainstalowane na komputerze. W przypadku, gdy atakujący ma uruchomiony swój kod na komputerze ofiary, to może zrobić praktycznie wszystko. Na przykład zmodyfikować wypasioną klawiaturę wirtualną zrealizowaną według zaleceń artykułu Introduction to Spyware Keyloggers, w szczególności zaleceń z części Preventing keystroke capture. I nie dlatego, że ten artykuł jest zły, ale dlatego, że ma już ponad 2 lata. Przez ten czas metody ataków trochę się zmieniły.
Można się bronić inaczej...
W przypadku bankowości elektronicznej przykładem defence-in-depth jest raczej rozdzielenie danych potrzebnych do uwierzytelnienia użytkownika, od danych potrzebnych do realizacji transakcji (np. hasło maskowane i kody jednorazowe). Wówczas nawet przechwycenie danych uwierzytelniających nie umożliwia atakującemu wyprowadzenia danych z konta (z dokładnością do błędów implementacyjnych bądź projektowych).
Jeśli miałbym zwiększyć bezpieczeństwo logowania się do systemu bankowości elektronicznej, to dodałbym do niego jeszcze jeden krok poza hasłem (opcjonalnie maskowanym) - wpisanie kodu jednorazowego przesłanego przez SMS. Ten krok stanowi realne utrudnienie dla atakującego, w praktyce nie do przeskoczenia, chyba, że jest w stanie przekierować SMS wysyłany przez system użytkownikowi do siebie, lub fizycznie posiada jego telefon.
...coś z zupełnie innej beczki...
A teraz przykład działań pozorowanych z działki kompletnie nie związanej z IT. Na osiedlu, na którym mieszkam, postanowiono trwale zamknąć jedną bramkę. Jako uzasadnienie podano, że to dla bezpieczeństwa właścicieli garaży. No i jacyś obcy przychodzą na osiedle... Cóż, bezpieczeństwo to nośny temat, wystarczy popatrzeć na jakie przeżycia należy przygotować się na lotniskach (oczywiście w imię bezpieczeństwa). Tylko zamknięcie tej bramki nic nie zmieni, bo:
- ogrodzenie wysokości 1,2m nie jest żadną przeszkodą,
- główna bramka wejściowa jest otwarta 24 godziny na dobę,
- brama wjazdowa, teoretycznie otwierana na pilota, jest w praktyce otwarta prawie cały czas,
- osiedle jest na tyle duże, że mieszkańcy nie kojarzą się wzajemnie,
- o, zapomniałbym, osiedle nie jest monitorowane,
Jako intruz wszedłbym sobie spokojnie główną bramką, spokojnie przeszedł przez całe osiedle, ukradłbym samochód, który mi się spodoba, a następnie wyjechał. Główną bramą oczywiście. A ta mała bramka bynajmniej do tego nie jest mi potrzebna...