Upload
logicaltrust-pl
View
389
Download
0
Embed Size (px)
Citation preview
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.
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.
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.
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
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:
Badanie – narzędzia, środowisko
● Analiza statyczna● idb, qark, ...
● Analiza dynamiczna● Cycript, Frida, Snoopy, Drozer, ...
● Inspekcja manualna● Burp, Hopper, jd-gui, inspekcja zawartości paczek, …
● Wszystkie aplikacje zostały zainstalowane ze sklepów odpowiednich dla platformy (Google Play, App Store)
● Środowisko iOS – jailbreak iOS 7, jailbreak iOS 8● Środowisko Android – rooted Android 4.x, rooted Android 5.x
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
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
M2 – Insecure Data Storage – karta SD
/mnt/sdcard/Android/data/xxx/files # ls -altotal 577d---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
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.
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.
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ł.
M4 – Unintended Data Leakage – zapis wrażliwych danych do logów
sytemowych
D/X( 2781): <--- HTTP 200 https://XXX (278ms)D/X( 2781): Date: xxxD/X( 2781): Server: ApacheD/X( 2781): X-Powered-By: Servlet/2.5 JSP/2.1D/X( 2781): Keep-Alive: timeout=5, max=500D/X( 2781): Connection: Keep-AliveD/X( 2781): Content-Type: text/plain; charset=ISO-8859-2
[...]
M8 – Security Decisions Via Untrusted Inputs
Komunikacja międzyprocesowa (zbędnie wyeksportowane funkcje):
dz> run app.broadcast.send --component xxx yyy --data-uri foo
E/AndroidRuntime( 419): FATAL EXCEPTION: main[...]
WYNIKIKategoria 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%
POLSKA vs. ŚWIATKategoria 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]
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
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
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