Wnioski z technicznego badania kilkudziesięciu polskich aplikacji bankowych przeznaczonych na platformy Android oraz iOS pod kątem występowania w nich podatności z OWASP Mobile TOP 10. Prezentacja rzeczywistych błędów w oprogramowaniu mobilnym, praktycznych porad jak zabezpieczyć aplikacje oraz odniesienie uzyskanych rezultatów do badań przeprowadzonych w innych krajach.
2. Ponad 10 lat aktywności w branży.
Ponad dwieście testów penetracyjnych aplikacji
webowych
oraz ponad sto testów aplikacji mobilnych.
Oferujemy także testy typu Red Team vs. Blue Team,
audyty bezpieczeństwa z elementem ataków
socjotechnicznych
oraz szkolenia z dziedziny bezpieczeństwa IT.
Weryfikowaliśmy zabezpieczenia fizycznych urządzeń
z branży przemysłowej, medycznej, IT i rozrywkowej.
3. Zespół LogicalTrust – kim jesteśmy?
Znaleźliśmy błędy w produktach firm: Facebook, Google,
Apple, Microsoft, Nokia, Adobe.
Na swoim koncie mamy ponad 100 wykładów na
najważniejszych branżowych konferencjach, między
innymi: Confidence, Security Bsides, SECURE, PLNOG, MeetIT,
SecureCON, TestFest, Internet Banking Security, OWASP,
SecDay czy Security Test Study.
Od ponad siedmiu lat prowadzimy bloga, na którym
ostrzegamy Internautów przed czyhającymi na nich w Sieci
zagrożeniami.
4. Mateusz Kocielski – o prelegencie
Prawdopodobnie pierwsza osoba,
która pokazywała kod assemblera na spotkaniach
OWASP.
Niezależny twórca oprogramowania oraz współtwórca
oprogramowania open source (m.in. PHP, NetBSD),
miłośnik matematyki oraz teorii informatyki.
Autor alertów bezpieczeństwa dotyczących m.in.
Apache, FreeBSD, NetBSD, OpenSSH, Microsoft IIS,
PHP.
5. Motywacja
●
Według portalu bankier.pl pod koniec I kwartału 2015,
liczba aktywnych użytkowników bankowości mobilnej
wynosiła ok. 4 mln
●
Naszą motywacją jest przegląd bezpieczeństwa
aplikacji, które ze względu na swój wrażliwy charakter
są szczególnie narażone na potencjalne ataki
●
Chcemy porównać bezpieczeństwo aplikacji dostępnych
na naszym rynku z aplikacjami dostępnymi na świecie
●
Chcemy zachęcić do korzystania z materiałów OWASP
7. OWASP Mobile TOP 10 vs aplikacje
bankowe
●
ok. 20 aplikacji mobilnych dla platform Android oraz iOS
instytucji finansowych działających na polskim rynku
●
część serwerowa WYŁĄCZONA z testów
●
na badanie poświęcono kilka roboczodni (maksymalnie
kilka godzin per aplikacja)
●
skupiono się na zagrożeniach z OWASP Mobile TOP 10
●
szczegóły nt. błędów dla osób autoryzowanych:
biuro@logicaltrust.net
9. Badanie – co sprawdzaliśmy?
●
M1: Weak Server Side Controls
●
M2: Insecure Data Storage
●
Zapis nieszyfrowanych danych w bazach SQL
●
Zapis nieszyfrowanych danych na karcie SD
●
...
●
M3: Insufficient Transport Layer Protection
●
Wykorzystanie nieszyfrowanych protokołów
●
Błędna weryfikacja certyfikatów
●
...
●
M4: Unintended Data Leakage
●
Wykorzystanie pamięci cache (WebView, klawiatura etc.)
●
Zapis screenshotów przy przejściu do tła
●
...
●
M5: Poor Authorization and Authentication
●
Bezpieczeństwo uwierzytelniania
10. Badanie – co sprawdzaliśmy?
●
M6: Broken Cryptography
●
Wykorzystanie algorytmów uznawanych za
niebezpieczne
●
Niebezpieczne zarządzanie kluczami
●
M7: Client Side Injection
●
SQL Injection, XSS, ...
●
M8: Security Decisions Via Untrusted Inputs
●
Bezpieczeństwo mechanizmów IPC
●
M9: Improper Session Handling
●
Losowość identyfikatorów sesji, ...
●
M10: Lack of Binary Protections
●
Weryfikacja JailBreakowania/rootowania
●
Ochrona przed debugowaniem
●
Zaciemnianie kodu/usunięcie symboli dla debuggerów
12. M2 – Insecure Data Storage – karta SD
/mnt/sdcard/Android/data/xxx/files # ls -al
total 577
d---rwxr-x 2 system sdcard_r 32768 Feb 8 10:11 .
d---rwxr-x 4 system sdcard_r 32768 Feb 8 10:11 ..
----rwxr-x 1 system sdcard_r 7576 Feb 8 10:11 xxx
----rwxr-x 1 system sdcard_r 182272 Feb 8 10:11 yyy
13. M3 – Insufficient Transport Layer
Protection - MitM
●
Podczas próby ataku MitM żadna z aplikacji nie informowała
użytkownika o potencjalnym zagrożeniu
(Jedna aplikacja zapisywała komunikat do logów systemowych)
POWINNO BYĆJEST
Błąd połączenia, spróbuj
później.
14. M3 – Insufficient Transport Layer
Protection – pobieranie danych bez SSL
Aplikacja pobiera z serwera dane, które zawierają
adresy URL, na które wysyłane są poufne informacje
dotyczące Klienta.
15. M3 – Insufficient Transport Layer
Protection – MitM – brak weryfikacji
certyfikatu
Aplikacja nie weryfikuje certyfikatu przy wysyłaniu
informacji nt. błędów w aplikacji. Dane zawierają
szczegółowe informacje nt. urządzenia użytkownika
oraz błędu, który wystąpił.
19. WYNIKI
Kategoria Procent aplikacji zawierających błędy
M1: Weak Server Side Controls
Protection
-
M2: Insecure Data Storage 20%
M3: Insufficient Transport Layer Protection 60%
M4: Unintended Data Leakage 65%
M5: Poor Authorization and Authentication 0%
M6: Broken Cryptography 5%
M7: Client Side Injection 12%
M8: Security Decisions Via Untrusted Inputs 40%
M9: Improper Session Handling 0%
M10: Lack of Binary Protections 90%
20. POLSKA vs. ŚWIAT
Kategoria PL 2016 Świat 2015 Świat 2013
M1: Weak Server Side Controls
Protection
- - -
M2: Insecure Data Storage 20% 15% 40%
M3: Insufficient Transport Layer Protection 60% 40% 90%
M4: Unintended Data Leakage 65% 40% 70%
M5: Poor Authorization and Authentication 0% ? ?
M6: Broken Cryptography 5% ? ?
M7: Client Side Injection 12% 30% 50%
M8: Security Decisions Via Untrusted Inputs 40% ? ?
M9: Improper Session Handling 0% ? ?
M10: Lack of Binary Protections 90% 85% 90%
Wyniki Świat 2015 oraz Świat 2013 na podstawie badań firmy IOActive [1] [2]
21. WNIOSKI
●
na podstawie podstawowych testów znaleziono wiele (za
wiele?) błędów
●
brak świadomości wszystkich zagrożeń, które niesie za sobą
mobilny świat
●
...czasem jeden błąd wystarczy, żeby doprowadzić do
katastrofy! (lub kilka mniejszych może przerodzić się w błąd
krytyczny)
●
...łakomym kąskiem są dla atakujących aplikacje
zewnętrznych dostawców, które występują w wielu
instytucjach finansowych (jeden błąd = kilka ofiar)
●
na podstawie kilkuset testów, które zostały wykonane przez
nasz zespół, możemy powiedzieć, że aplikacje finansowe
pozytywnie odbiegały od średniej
22. Co można zrobić lepiej?
●
bezwzględnie szyfrować całą komunikację
●
zwrócić uwagę na sprawdzanie ważności certyfikatów
●
nie przechowywać niezaszyfrowanych danych na urządzeniu
●
usuwać dane wrażliwe/developerskie z aplikacji
●
wykorzystać zaciemnianie/usuwanie symboli z aplikacji
●
sprawdzać dostawców
●
szkolić developerów z zakresu zagrożeń (zwłaszcza OWASP
MOBILE TOP 10!)
●
wykorzystywać materiały OWASP, które są dostępne za
darmo!
●
testować aplikacje (zewnętrzne testy)
●
wykorzystywać mechanizmy bezpieczeństwa, które dają
nam poszczególne platformy
●
dbać o aktualność poszczególnych komponentów
23. OWASP – Mobile Security Project
●
OWASP Mobile TOP 10
●
OWASP Mobile Security Testing
●
OWASP Mobile Guide Developement Project
●
OWASP Threat Model Project
●
OWASP Mobile Apps Checklist 2016
●
…
https://www.owasp.org/index.php/OWASP_Mobile_Security_Project