25
Mateusz Kocielski [email protected] OWASP Mobile TOP 10 na przykładzie aplikacji bankowych

OWASP Mobile TOP 10 na przykładzie aplikacji bankowych - Semafor 2016 - Mateusz Kocielski

Embed Size (px)

Citation preview

Mateusz [email protected]

OWASP Mobile TOP 10 na przykładzie aplikacji bankowych

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

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:

[email protected]

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

PRZYKŁADY BŁĘDÓ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[...]

WYNIKI

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

Q&A

kontakt:

e-mail: [email protected].: +48 71 738 24 35