Inżynierowie firmy zveloLABS poddali analizie elektroniczny portfel firmy Google. Okazało się, że PIN chroniący dostęp do portfela można złamać w kilka sekund.
System płatności Near Field Communication (NFC) stawia nowe wyzwania związane z bezpieczeństwem transakcji. Funkcjonalność przechowywania informacji o karcie kredytowej w telefonie komórkowym wydaje się być rozwiązaniem przyszłości. Zamiast nosić ze sobą kilka kart, będziemy mogli płacić za drobne zakupy przy pomocy telefonu komórkowego. Rozwiązanie to, zapewniając dużą wygodę użytkownikowi, stawia jednocześnie wysokie wymagania w zakresie bezpieczeństwa. Z tego powodu zespół zveloLABS podjął się analizy rozwiązania proponowanego przez Google, czyli Google Wallet.
Jak znaleźć PIN
W celu zapewnienia uwierzytelnienia użytkownika, przy każdym uruchomieniu aplikacji Google Wallet wymaga od użytkownika podania czterocyfrowego PINu. Stanowi on zabezpieczenie przed użyciem wirtualnego portfela przez ewentualnego znalazcę zagubionego telefonu. Badanie portfela rozpoczęto od zidentyfikowania bazy sqlite3, przechowującej dane aplikacji. W tablicy o podejrzanej nazwie „metadata” zidentyfikowano 3 wiersze zawierające duże porcje danych binarnych. Jeden z wierszy, oznaczony jako „deviceInfo” okazał się być zapisem w formacie Google Protocol Buffers. Wewnątrz znaleziono takie dane jak identyfikator użytkownika, informacje o koncie Google, kilka dodatkowych pół oraz to kluczowe, czyli pole oznaczone jako PIN.
Banalny atak
Okazało się, że w polu PIN znajduje się ciąg stanowiący „salt” hasha oraz sam hash w formacie SHA256. Jako że możliwych kombinacji PINu było tylko 10000, wygenerowanie odpowiednich hashy i porównanie ich z tym odnalezionym nie stanowiło dużego wyzwania. Poniżej film przedstawiający praktyczną implementację tego ataku.
Ograniczenia ataku
Jako iż wszystkie aplikacje Androida pracują w swoich „piaskownicach”, telefon bez uprawnień roota jest znacznie mniej podatny na ewentualny atak (złośliwa aplikacja chcąca wykraść kod PIN musiałaby znaleźć sposób na odczytanie danych innej aplikacji). Również zgubienie telefonu z Google Wallet, ale bez uprawnień roota, nie stanowi dużego problemu, ponieważ „zrootowanie” telefonu spowoduje również skasowanie portfela. Kolejnym ograniczeniem (którego znaczenie będzie z czasem zapewne maleć) wynika z faktu, że jedynymi jak do tej pory telefonami obsługującymi płatności zbliżeniowe i Google Wallet są Galaxy Nexus oraz Nexus S, więc liczba potencjalnych ofiar jest bardzo ograniczona. Należy jednak pamiętać, że płatności zbliżeniowe to potencjalnie szybko rozwijający się sektor usług finansowych i bezpieczeństwo stosowanych rozwiązań powinno być na wyższym poziomie niż to, co zaoferowało Google. Google zostało poinformowane o istnieniu problemu, jednak analiza wykazała, iż jego usunięcie wymaga dużych zmian w architekturze rozwiązania.
Komentarz