BEZPIECZNE APLIKACJE MOBILNE NAJISTOTNIEJSZE ZAGADNIENIA. Sławomir Jasek slawomir.jasek@securing.pl. Wersja: 1.1, 2015.06.09



Podobne dokumenty
ZASADY KORZYSTANIA Z PLIKÓW COOKIES ORAZ POLITYKA PRYWATNOŚCI W SERWISIE INTERNETOWYM PawłowskiSPORT.pl

Cookie Policy. 1. Informacje ogólne.

Szczegółowy opis przedmiotu zamówienia:

Polityka prywatności

Polityka prywatności

Serwis realizuje funkcje pozyskiwania informacji o użytkownikach i ich zachowaniach w następujący sposób:

Cemarol Sp. z o.o. Polityka prywatności (pliki cookies) 1. Informacje ogólne.

POLITYKA PRYWATNOŚCI Konkurs wiedzy dermatologicznej dla lekarzy

ZAŁĄCZNIK NR 1 DO REGULAMINU SERWISU ZNANEEKSPERTKI.PL POLITYKA OCHRONY PRYWATNOŚCI

Czym są pliki cookies?

Polityka prywatności serwisu

Jarosław Kuchta Administrowanie Systemami Komputerowymi. Internetowe Usługi Informacyjne

Zasady Wykorzystywania Plików Cookies

Bezpieczeństwo usług oraz informacje o certyfikatach

Cookies Zewnętrzne - oznacza Cookies zamieszczane przez partnerów Administratora, za pośrednictwem strony internetowej Serwisu.

Polityka plików cookies

Reguły plików cookies witryny i usług internetowych tsop.pl

ZAŁĄCZNIK Nr 3 do CZĘŚCI II SIWZ

Web Application Firewall - potrzeba, rozwiązania, kryteria ewaluacji.

Polityka Prywatności

elektroniczna Platforma Usług Administracji Publicznej

POLITYKA PRYWATNOŚCI SERWIS:

Sklep internetowy wtspartner.pl dokłada wszelkich starań, aby prowadzony serwis ułatwiał każdemu użytkownikowi

Stosowanie ciasteczek (cookies)

The OWASP Foundation Session Management. Sławomir Rozbicki.

Agenda. Quo vadis, security? Artur Maj, Prevenity

Fundacja Ośrodka KARTA z siedzibą w Warszawie, przy ul. Narbutta 29 ( Warszawa),

Jednym z najważniejszych zagadnień, z którym może się zetknąć twórca

ZPKSoft WDoradca. 1. Wstęp 2. Architektura 3. Instalacja 4. Konfiguracja 5. Jak to działa 6. Licencja

POLITYKA PRYWATNOŚCI I COOKIES

ZAŁĄCZNIK Nr 1 do CZĘŚCI II SIWZ

Polityka prywatności 1. Definicje Administrator Cookies - Cookies Administratora - Cookies Zewnętrzne - Serwis - Urządzenie - Ustawa Użytkownik -

Bringing privacy back

Polityka Prywatności i Cookies

POLITYKA PRYWATNOŚCI. 1 Dane osobowe. 2 Administrator Danych Osobowych

II. PRZETWARZANIE DANYCH OSOBOWYCH:

1 Ochrona Danych Osobowych

Polityka Cookies I. DEFINICJE

Enova.Loyalty Program lojalnościowy

Polityka Cookies. 1 Definicje. Administrator oznacza przedsiębiorstwo

Przewodnik użytkownika (instrukcja) AutoMagicTest

Polityka prywatności w serwisie internetowym IPN

Polityka prywatności. Obowiązująca do dnia r.

Przykład opisu cookies

Polityka prywatności

POLITYKA PRYWATNOŚCI

Dokumentacja SMS przez FTP

POLITYKA PRYWATNOŚCI APLIKACJI MOBILNEJ SMARTBAG SŁOWNIK POJĘĆ:

System Kancelaris. Zdalny dostęp do danych

Pytanie nr 3: Czy połączenie urządzenie mobilne -> serwer będzie szyfrowane? (protokół HTTPS).

Programowanie Urządzeń Mobilnych. Część II: Android. Wykład 2

Serwis nie zbiera w sposób automatyczny żadnych danych, z wyjątkiem danych zawartych w plikach cookies podczas samego korzystania z Witryny.

Wykorzystywanie plików cookies

Danych Osobowych oświadcza, że za wyjątkiem sytuacji uregulowanych w prawie polskim dane dotyczące IP oraz cookies nie będą przekazywane osobom

POLITYKA DOTYCZĄCA PLIKÓW COOKIE

elektroniczna Platforma Usług Administracji Publicznej

Instytut-Mikroekologii.pl

Kielce, dnia roku. HB Technology Hubert Szczukiewicz. ul. Kujawska 26 / Kielce

Załącznik do Zarządzenia Członka Zarządu Domu Maklerskiego nr 52/2014/JI z dnia 24 września 2014 r.

11. Autoryzacja użytkowników

POLITYKA PRYWATNOŚCI

POLITYKA COOKIES SERWISU CARDINA.PL

POLITYKA PRYWATNOŚCI I WYKORZYSTYWANIA PLIKÓW COOKIES W SERWISIE INTERNETOWYM 1. Postanowienia ogólne

POLITYKA PRYWATNOŚCI SERWISU Ochrona prywatności Użytkowników jest dla Dariusz Jasiński DKJ-SYSTEM szczególnie ważna.

Dokumentacja techniczna API systemu SimPay.pl

1. Wykonanie Umowy Sprzedaży oraz przesłanie spersonalizowanej informacji handlowej w ramach marketingu bezpośredniego.

` Oxeris Anti-Theft Service Powered by Intel Anti-Theft Technology Usługa antykradzieżowa urządzeń

POLITYKA COOKIES. Definicje. Rodzaje wykorzystywanych Cookies

Złośliwe oprogramowanie Sandrorat (podszywające się pod oprogramowanie Kaspersky) na platformę Android WYNIKI ANALIZY

Polityka prywatności woda.krakow.pl

Projekt wymagań bezpieczeństwa wobec statycznych bezpośrednich 1-fazowych i 3- fazowych liczników energii elektrycznej:

PRACA INŻYNIERSKA IMPLEMENTACJA MOBILNEGO KLIENTA BANKU ZABEZPIECZONEGO TOKENEM

Konfiguracja poczty IMO dla urządzeń mobilnych z systemem ios oraz Android.

Elektroniczny Case Report Form

POLITYKA PRYWATNOŚCI. Niniejszy dokument opisuje zasady gromadzenia, przetwarzania i wykorzystywania

Przewodnik użytkownika (instrukcja) AutoMagicTest

Deutsche Bank db Makler. Bezpieczne korzystanie z platformy db Makler

Polityka prywatności Spółdzielni Mieszkaniowej Słoneczny Stok

Aplikacja npodpis do obsługi certyfikatu

Obowiązek informacyjny RODO

POLITYKA PRYWATNOŚCI

POLITYKA PRYWATNOŚCI

Aplikacja npodpis do obsługi certyfikatu

Przewodnik dla Klienta

Polityka Prywatności*

1. Bezpieczne logowanie i przechowywanie hasła

Polityka prywatności 1. Informacje ogólne.

Program szkolenia: Bezpieczny kod - podstawy

POLITYKA PRYWATNOŚCI ORAZ ZASADY PRZETWARZANIA DANYCH OSOBOWYCH

DESlock+ szybki start

Transkrypt:

BEZPIECZNE APLIKACJE MOBILNE NAJISTOTNIEJSZE ZAGADNIENIA Autor: Sławomir Jasek slawomir.jasek@securing.pl Wersja: 1.1, 2015.06.09

WSTĘP Dokument zawiera listę najistotniejszych zagadnień, na które należy zwrócić uwagę w trakcie tworzenia aplikacji mobilnych większego ryzyka np. finansowych, przetwarzających dane poufne lub osobowe. Zagadnienia zostały wybrane na podstawie podatności najczęściej identyfikowanych w tego typu aplikacjach. Bezpieczeństwo określonej aplikacji jest cechą indywidualną i zależy od wielu czynników. Poniższej listy nie można więc traktować jako wyczerpującej, a zastosowanie określonych mechanizmów bezpieczeństwa jest uzależnione od ryzyka i potencjalnych skutków ataku na aplikację.

1. ORGANIZACJA, PROJEKTOWANIE 1.1. Analiza ryzyka Scenariusze użycia, przepływ informacji, granice zaufania. Identyfikacja danych wrażliwych przetwarzanych przez aplikację. Cele potencjalnych intruzów i możliwe sposoby ich osiągnięcia. 1.2. Zasada najmniejszych przywilejów Co nie jest wprost zezwolone powinno być domyślnie zabronione. Nie przetwarzaj danych, których nie musisz przetwarzać. Nie wymagaj niepotrzebnych uprawnień. 1.3. Bezpieczeństwo jako proces Wpisz bezpieczeństwo do cyklu tworzenia oprogramowania. Każda zmiana funkcjonalności może mieć wpływ na bezpieczeństwo. Monitoruj znane podatności w używanych komponentach, bibliotekach. Wpływ zmian w nowych wersjach systemów operacyjnych na bezpieczeństwo aplikacji.

2. DANE PRZECHOWYWANE NA URZĄDZENIU 2.1. Dane współdzielone Nie używaj współdzielonych zasobów (np. karta SD) do przechowywania danych wrażliwych. Nie przydzielaj uprawnień umożliwiających dostęp innym aplikacjom do plików znajdujących się w katalogach prywatnych aplikacji (Android). 2.2. Logi, cache Wyłącz tryb debug w aplikacji produkcyjnej. Nie zapisuj w logach systemowych danych wrażliwych. Nie umieszczaj nadmiarowych informacji w crashlog-ach. W krytycznych aplikacjach/funkcjonalnościach nie używaj klawiatury systemowej (lub co najmniej wyłącz opcję autokorekty), ponieważ może zapisywać wprowadzane znaki w cache. Pamiętaj o tym że system automatycznie zachowuje zrzut ekranu (ios) i obiektów GUI (Android) w przypadku przechodzenia aplikacji w tło. Zablokuj przechowywanie zrzutów ekranu (ios). Wymagaj ponownego uwierzytelnienia przy powracaniu z tła (o ile ma to sens dla profilu ryzyka danej aplikacji i drastycznie nie narusza UX). 2.3. Dane w katalogach prywatnych Dane szczególnie wrażliwe (np. hasła dostępu, dane finansowe, dane lokalizacji) nie powinny być zapisywane na stałe w sposób umożliwiający dostęp do formy jawnej nawet w katalogach prywatnych aplikacji (Android) lub Keychain (ios). Dane te mogą być odzyskane z urządzenia np. w przypadku jego kradzieży, zgubienia, malware z uprawnieniami administracyjnymi. W przypadku wymogu biznesowego zapisywania takich danych, użyj mechanizmów szyfrujących uniemożliwiających łamanie siłowe w trybie offline. Patrz również rozdział 4.1.

2.4. Dane w pamięci RAM Przetrzymuj dane wrażliwe jak najkrócej w pamięci w formie jawnej w trakcie pracy aplikacji. W miarę możliwości, tam gdzie dane wrażliwe nie muszą być prezentowane użytkownikowi w formie jawnej (np. nr karty kredytowej), posługuj się mapowanymi po stronie serwera identyfikatorami, lub danymi w formie zaciemnionej.

3. TRANSMISJA 3.1. Weryfikuj certyfikat SSL W pełni weryfikuj dane certyfikatu serwera (common name - hostname, odcisk klucza CA, daty ważności, CRL). Nie akceptuj dowolnych certyfikatów. Jeśli istnieje taka opcja w testowej wersji aplikacji, upewnij się iż jest wyłączona w wersji produkcyjnej. 3.2. Certificate pinning W przypadku aplikacji większego ryzyka użyj mechanizmu tzw. certificate pinning weryfikacja cech certyfikatu serwera zaszytych w aplikacji (np. odcisk CA) 3.3. Nie pozwalaj na połączenia nieszyfrowane Zastosuj mechanizmy przeciwdziałające atakom typu SSL strip (patrz również konfiguracja środowiska serwera rozdział 8.1).

4. KOD I LOGIKA APLIKACJI 4.1. Prawidłowa konstrukcja mechanizmów bezpieczeństwa Kluczowe mechanizmy bezpieczeństwa takie jak uwierzytelnienie, autoryzacja, uzyskiwanie kluczy dostępowych lub szyfrujących powinny być skonstruowane w taki sposób, aby nie było możliwe ich ominięcie lub siłowe łamanie (zwłaszcza offline, po stronie urządzenia). Przykładowy algorytm uzyskiwania klucza w bezpieczny sposób: użytkownik wprowadza hasło, aplikacja wylicza funkcję kryptograficzną f(hasło; losowy seed kryptograficzny zapisany na urządzeniu w trakcie rejestracji; timestamp). W wyniku funkcji powstaje ciąg kryptograficzny, którego forma nie zdradza czy wprowadzone hasło jest poprawne. Ciąg ten jest wysyłany do serwera w celu weryfikacji. Serwer blokuje siłowe próby łamania hasła, jednocześnie nie utrudniając dostępu prawidłowym użytkownikom. 4.2. Nie opieraj bezpieczeństwa na niejawności algorytmu Kod aplikacji może zostać zdekompilowany, poddany analizie, zmodyfikowany i zrekompilowany. 4.3. Używaj sprawdzonych mechanizmów kryptograficznych Nie wymyślaj własnych mechanizmów kryptograficznych. Użyj sprawdzonych algorytmów i bibliotek, zaimplementuj je zgodnie z wytycznymi. 4.4. Nie umieszczaj w kodzie aplikacji kluczy szyfrujących, kodów dostępowych, tokenów Nie umieszczaj na stałe w aplikacji danych takich jak: kluczy szyfrujących będących jedyną składową potrzebną do uzyskania dostępu do danych wrażliwych. Patrz również rozdział 4.1. tokenów OAUTH pozwalających na dostęp np. do API Facebook-a, Google itp, z pozycji twórcy aplikacji. Tokeny takie powinny być przechowywane po stronie serwera, udostępniając funkcjonalność aplikacji przez API.

4.5. Nie używaj identyfikatorów UUID w mechanizmach bezpieczeństwa Unikalny identyfikator urządzenia zwracany przez system operacyjny (UUID) nie może być używany w mechanizmach bezpieczeństwa np. w celu identyfikacji użytkownika. Identyfikator ten może być ujawniony m.in. innej aplikacji działającej na tym samym urządzeniu i nieprawidłowo zabezpieczony (transmisja, serwisy reklamowe, statystyki). W zamian wygeneruj losowy identyfikator. 4.6. Usuń testowe dane Z aplikacji produkcyjnej usuń testowe dane, zaszyte adresy serwerów testowych/akceptacyjnych, metody debug. 4.7. Użyj narzędzi zaciemniających kod W celu utrudnienia procesu reverse-engineering użyj narzędzi zaciemniających kod aplikacji. Przykładowe narzędzia: Android: ProGuard (darmowy, warto poprawić domyślne ustawienia), DexGuard (komercyjny, znacznie skuteczniejsze zaciemnienie) ios: llvm, ios-class-guard (darmowe), Arxan (komercyjny)

5. KOMUNIKACJA IPC W wielu przypadkach domyślne ustawienia mechanizmów komunikacji międzyprocesowej nie są wystarczająco bezpieczne. Stosuj zasadę ograniczonego zaufania, weryfikuj źródło i treść wiadomości, łap wszystkie wyjątki. 5.1. Prawidłowe zabezpieczenie intent-ów (Android) Dla wszystkich wewnętrznych activity ustaw opcję exported=false. W przypadku gdy activity ma być wywołane przez inną aplikację, zweryfikuj jej certyfikat, np. przez ustawienie odpowiednio uprawnień (protectionlevel=signature). Zweryfikuj, czy uprawnienie o tej samej nazwie nie zostało zdefiniowane wcześniej przez wrogą aplikację. Ostrożnie używaj funkcji Pending Intent. Do wewnętrznej komunikacji używaj jedynie intent-ów typu explicit. Unikaj broadcast-ów. Nie przesyłaj danych wrażliwych w treści intent-ów mogą być podsłuchane. Staraj się nie wykorzystywać mechanizmu intent-filter do wewnętrznych activity. Nawet jeśli activity ma opcję exported=false, inna aplikacja może zdefiniować taki sam filtr. W przypadku wywołania spowoduje to wyświetlenie opcji wyboru obsługującej aplikacji użytkownikowi. Prawidłowo zweryfikuj źródło wiadomości w przypadku przetwarzania intentów systemowych. Waliduj dane otrzymane w treści wiadomości. 5.2. Prawidłowe zabezpieczenie mechanizmów Service, Content Provider, Broadcast Receiver... (Android) Odpowiednie uprawnienia, zasada najmniejszych przywilejów, walidacja. 5.3. Prawidłowe użycie URL-handlera (ios) W przypadku gdy aplikacja rejestruje URL-handler, nie pozwalaj na jego automatyczne wykorzystanie bez wiedzy użytkownika np. przez wrogą stronę www. Nie przesyłaj w ten sposób poufnych danych.

6. APLIKACJE HYBRYDOWE Aplikacje będące nakładką na serwis www, lub używające komponentów przeglądarkowych (WebView). Korzystanie z komponentów WebView jest mniej bezpieczne - niesie ze sobą wiele ryzyk (m.in. ataki wykorzystujące znane podatności w silnikach przeglądarek). Jeśli nie jest to niezbędne, staraj się unikać takich konstrukcji. 6.1. Wyłącz obsługę javascript, pluginów Zgodnie z zasadą najmniejszych przywilejów, jeśli javascript nie jest niezbędny, jego obsługa powinna zostać wyłączona. 6.2. Wyłącz cache Nawet zawartość stron HTTPS może być domyślnie przechowywana w lokalnym cache w sposób automatyczny, bez wiedzy programisty. 6.3. Nie ufaj danym zwracanym przez serwer Waliduj dane zwracane przez serwer (m.in. pod kątem wrogiego kodu javascript, clickjacking), zwłaszcza w przypadku korzystania z zewnętrznych serwisów. Patrz również rozdział 8.1.

7. ZEWNĘTRZNE KOMPONENTY 7.1. Komunikacja z zewnętrznymi serwisami Zgodnie z zasadą najmniejszych przywilejów ogranicz użycie komponentów komunikujących się z zewnętrznymi serwisami (zwłaszcza wykorzystując javascript binding) - w celach analitycznych (np. statystyki użycia), analizy wyjątków, wyświetlania reklam. Jeśli użycie takich komponentów jest niezbędne, skonfiguruj bezpieczne połączenie (HTTPS) oraz zminimalizuj ilość przesyłanych informacji. 7.2. Utrzymywanie bieżących wersji W przypadku ujawnienia błędów bezpieczeństwa, aktualizuj używane biblioteki i komponenty.

8. API SERWERA 8.1. Konfiguracja środowiska serwerowego Aktualizacje komponentów (serwery, systemy operacyjne). Prawidłowa konfiguracja SSL (algorytmy, parametry). Odpowiednie nagłówki HTTP, flagi cookies (m.in. Cache-Control, X-Frame- Options, HSTS, flaga Secure cookies...). Zabezpieczenie dostępu do interfejsów administracyjnych. Prawidłowe przechowywanie danych poufnych. 8.2. Bezpieczeństwo API Weryfikacja odporności na ataki w zakresie m.in: prawidłowe uwierzytelnienie bezpieczeństwo sesji kontrola dostępu do danych i funkcji SQL injection XML injection / entity expansion błędy walidacji błędy logiczne znane podatności w komponentach i bibliotekach inne, w zależności m.in. od użytej technologii

9. SECURING SecuRing to zespół ekspertów zajmujących się bezpieczeństwem aplikacji i systemów informatycznych. Naszą misją jest zapewnienie wsparcia dla naszych partnerów na każdym etapie procesu tworzenia i utrzymywania systemów i aplikacji. Oferujemy między innymi: testy bezpieczeństwa aplikacji webowych, mobilnych, WebService, grubego klienta, embeded systems, SaaS, cloud i innych testy i oceny bezpieczeństwa środowisk IT testy skuteczności zabezpieczeń (np. systemy antymalware, Identity Management, IPS, itp ) wsparcie w definiowaniu założeń dotyczących bezpieczeństwa aplikacji, ocena projektu systemu/aplikacji pod względem bezpieczeństwa, pomagamy wpisać bezpieczeństwo w cały cykl rozwoju i utrzymania systemów. Nasza firma działa od 2003 roku i w tym okresie z naszych usług skorzystały czołowe banki, instytucje ubezpieczeniowe, operatorzy telekomunikacyjni, firmy tworzące oprogramowanie a także instytucje administracji centralnej zarówno w Polsce jak i za granicą. Warto podkreślić, że SecuRing nie prowadzi aktywnej sprzedaży produktów związanych z bezpieczeństwem IT. Koncentrujemy się tylko i wyłącznie na usługach. Pozwala nam to zachować należyty obiektywizm i niezbędną w tego typu działalności niezależność od producentów rozwiązań. Zapraszamy do kontaktu. http://www.securing.pl e-mail: info@securing.pl Jontkowa Górka 14a 30-224 Kraków tel./fax.: (12) 425 25 75