Ostatnio na "czołowych portalach informacyjnych i blogach" można było natknąć się na informacje o tym, jak strasznie źle jest z bezpieczeństwem bankowości mobilnej (np.:Czy aplikacje mobilne polskich banków są bezpieczne?, Test (nie)bezpieczeństwa mobilnych aplikacji do obsługi kont bankowych, Bezpieczeństwo mobilnych aplikacji polskich banków, Korzystasz z mobilnych aplikacji bankowych? Uważaj - wiele z nich było niezabezpieczonych, Horror. Wchodzisz na konto przez smartfona? Oni sprawdzili które apki są najbardziej "dziurawe"). Wszystko przez raport PGS Software. Cóż, jak zwykle - autorzy tych artykułów mają tendencję do wyolbrzymiania znaczenia znalezisk. Fakt, niektóre z nich były ciekawe, ale dobrze należałoby się zastanowić nad rzeczywistym ryzykiem (czytaj - prawdopodobieństwem zrealizowania całego scenariusza ataku).
Tak, nie należy pewnych rzeczy logować (dość powszechny błąd), ale jak to z tych logów odczytać. Tak, jest to możliwe technicznie, ale jakie jest prawdopodobieństwo takiego zdarzenia? Ile warunków wstępnych musi być spełnionych by rzeczywiście dało się zobaczyć czyjś wniosek lub przejąć czyjąś sesję?
Ciekawszy jest fragment o bezpieczeństwie komunikacji. Problem w tym, że z raportu nie wynika wprost, czy brak było jakiejkolwiek walidacji certyfikatu serwera (jeśli tak - trupy, zagłada, przemoc), czy jedynie brak dodatkowego zabezpieczenia w postaci certificate pinning (ciągle problem, ale jednak mniejszy). Poza tym bezpieczeństwo komunikacji to temat nieco szerszy, raport nie wspomina choćby o wspieranych protokołach i szyfrach. Sama weryfikacja certyfikatu jest też bardzo szerokim tematem (np. daty ważności certyfikatów w ścieżce, sprawdzanie CRL).
Kolejny interesujący, choć niestety fatalnie opisany problem, to "łączenie się z serwisem działającym w tle". Co to konkretnie znaczy? Czy jest to komunikacja między komponentami z użyciem mechanizmu broadcastów bez odpowiedniego ograniczenia (uprawnienia, globalny sendBroadcast vs. LocalBroadcastManager)? A może coś jeszcze innego?
Modyfikacja zachowania aplikacji przez modyfikację plików konfiguracyjnych? Super, a jak te pliki mają być modyfikowane? Bo albo jest to do zrobienia z poziomu innych aplikacji bez naruszania modelu bezpieczeństwa systemu Android (źle), albo najpierw trzeba ten model naruszyć - czyli mamy już większy problem, bo czy w tym przypadku można ufać samej aplikacji?
Nie widzę też, by raport poruszał temat przechowywania danych lokalnie, uwierzytelnienia klienta i autoryzacji transakcji. A szkoda, ciekawy jestem na przykład, czy jedna z badanych aplikacji nadal szyfruje lokalną bazę przy pomocy klucza wygenerowanego na podstawie PIN użytkownika, a obok tej bazy nadal leży SHA1 z tego PIN.
Sam raport (dla mnie trochę mało techniczny) jest tutaj: Niebezpieczeństwa mobile bankingu. Miłej lektury!