Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CodeFest 2018. Николай Исламов (Tinkoff) — Mobile Application Security Verification Standard

CodeFest 2018. Николай Исламов (Tinkoff) — Mobile Application Security Verification Standard

Посмотрите выступление Николая: https://2018.codefest.ru/lecture/1325/

В докладе расскажу о стандарте безопасности мобильных приложений (MASVS).

Как MASVS помогает создавать безопасные приложения и осуществлять поддержку на нужном уровне.

Разберем из чего состоит стандарт и какой уровень безопасности подходит именно для вашего приложения.

Объясню в чем ценность MASVS для аналитиков, разработчиков и тестировщиков.

Уровень
Архитекторы мобильных приложений, разработчики мобильных приложений, специалисты по безопасности мобильных приложений. Уровень значения не имеет.

16b6c87229eaf58768d25ed7b2bbbf52?s=128

CodeFest

April 09, 2018
Tweet

Transcript

  1. Mobile Application Security Verification Standard AppSec at Tinkoff.ru 2018

  2. 2 ОБО МНЕ • Mobile AppSec Expert at Tinkoff.ru •

    Information Security since 2008 • Mobile App Development since 2012 • Lazy Blogger
  3. 3 КОЛИЧЕСТВО СКАЧИВАНИЯ ПРИЛОЖЕНИЙ

  4. 4 60К НОВЫХ ПРИЛОЖЕНИЙ В МЕСЯЦ

  5. 5 СТАТИСТИКА TRUSTWAVE ЗА 2017г 95% мобильных приложений уязвимы: •

    6.5 среднее количество уязвимостей на приложение • 35% имеют критические уязвимости • 45% имеют уязвимости с высоким риском
  6. 6 РИСКИ $ Потеря 10 000 000р H Публикация уязвимости

    на хабре Утечка пользовательских данных
  7. 7 35% ПАДЕНИЕ АКЦИЙ

  8. 8 ОСНОВНЫЕ ПРОБЛЕМЫ • Не актуальны базовые WEB уязвимости •

    Код запускается на стороне клиента • Настоящая изоляция приложений • Доверенная установка приложений • Есть доступ к пользовательским данным
  9. 9 И ЧТО С ЭТИМ ВСЕМ ДЕЛАТЬ??

  10. 10 СТАНДАРТ ПРОВЕРКИ МОБИЛЬНОЙ БЕЗОПАСНОСТИ • Формализует best practice •

    Разработан специально для мобильных приложений • Высокоуровневый • Не зависит от операционной системы
  11. 11 УРОВНИ R - Resiliency Against Reverse Engineering and Tampering

    L2 - Defense-in-Depth L1 - Standard Security
  12. 12 L1: STANDARD SECURITY V1: Architecture V2: Data storage V3:

    Cryptography V4: Authentication V5: Network Communication V6: Platform Interaction V7: Code Quality V8: Resiliency
  13. 13 L2: DEFENSE-IN-DEPTH V1: Architecture V2: Data storage V3: Cryptography

    V4: Authentication V5: Network Communication V6: Platform Interaction V7: Code Quality V8: Resiliency
  14. 14 R: RESILIENCY AGAINST REVERSE ENGINEERING AND TAMPERING V1: Architecture

    V2: Data storage V3: Cryptography V4: Authentication V5: Network Communication V6: Platform Interaction V7: Code Quality V8: Resiliency
  15. 15 КАКОЙ УРОВЕНЬ ВЫБРАТЬ Доступны следующие виды комбинаций: • L1

    • L1 + R • L2 • L2 + R
  16. 16 L1: STANDART SECURITY • Подходит для всех мобильных приложений

    • Включает основные практики безопасности • Предотвращает эксплуатацию распространенных уязвимостей
  17. 17 TEST CASE L1: STANDART SECURITY V2: DATA STORAGE AND

    PRIVACY REQUIREMENTS 2.2 No sensitive data is written to application logs.
  18. 18 НЕПРЕДНАМЕРЕННЫЕ УТЕЧКИ В ЛОГАХ 06-23 16:48:11.728 4341-4364/ru.tinkoff.school.myapplication I/OpenGLRenderer: Initialized

    EGL, version 1.4 06-23 16:49:04.610 5182-5182/ru.tinkoff.school.myapplication W/System: ClassLoader referenced unknown path: /data/app/ru.tinkoff.school.myapplication-2/lib/x86 06-23 16:49:04.708 5182-5182/ru.tinkoff.school.myapplication E/TAG: https://api.tinkoff.ru/v1/login?username=j.bond&password=qwerty 06-23 16:49:04.915 5182-5212/ru.tinkoff.school.myapplication D/OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: true
  19. 19 НЕПРЕДНАМЕРЕННЫЕ УТЕЧКИ В ЛОГАХ 06-23 16:48:11.728 4341-4364/ru.tinkoff.school.myapplication I/OpenGLRenderer: Initialized

    EGL, version 1.4 06-23 16:49:04.610 5182-5182/ru.tinkoff.school.myapplication W/System: ClassLoader referenced unknown path: /data/app/ru.tinkoff.school.myapplication-2/lib/x86 06-23 16:49:04.708 5182-5182/ru.tinkoff.school.myapplication E/TAG: https://api.tinkoff.ru/v1/login?username=j.bond&password=qwerty 06-23 16:49:04.915 5182-5212/ru.tinkoff.school.myapplication D/OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: true
  20. 20 НЕПРЕДНАМЕРЕННЫЕ УТЕЧКИ В ЛОГАХ • Возможно где-то в коде

    есть что-то вроде public void sendRequest(String url) { Log.e("TAG", url); // making http request … } • Или даже такое public void login(String user, String pass) { // TODO for debug only, remove before production Log.d("DEBUG", "user = " + user + " pass " + pass); // making authorization … }
  21. 21 СТАТИЧЕСКИЙ ПОИСК НЕПРЕДНАМЕРЕННЫХ УТЕЧЕК В ЛОГАХ Функции и классы:

    • android.util.Log • Log.d | Log.e | Log.i | Log.v | Log.w | Log.wtf • Logger Ключевые слова: • System.out.print | System.err.print • logfile • logging • logs
  22. 22 СТАТИЧЕСКИЙ ПОИСК НЕПРЕДНАМЕРЕННЫХ УТЕЧЕК В ЛОГАХ ProGuard -assumenosideeffects class

    android.util.Log { public static boolean isLoggable(java.lang.String, int); public static int v(...); public static int i(...); public static int w(...); public static int d(...); public static int e(...); public static int wtf(...); }
  23. 23 ДИНАМИЧЕСКИЙ ПОИСК НЕПРЕДНАМЕРЕННЫХ УТЕЧЕК В ЛОГАХ 1. Используйте все

    функции приложения 2. Проверьте, что в папке приложения (/data/data/<package-name>) не появились файлы логов 3. Проверьте logcat на чувствительные данные
  24. 24 L2: DEFENSE-IN-DEPTH • Подходит для мобильных приложений обрабатывающих конфиденциальные

    данные • Дополнительный слой безопасности • Предотвращает эксплуатацию сложных уязвимостей
  25. 25 TEST CASE L2: DEFENSE-IN-DEPTH V2: DATA STORAGE AND PRIVACY

    REQUIREMENTS 2.9 The app removes sensitive data from views when backgrounded.
  26. 26 SENSITIVE INFORMATION IN AUTO-GENERATED SCREENSHOTS Secure Insecure

  27. 27 СТАТИЧЕСКАЯ ПРОВЕРКА @property (UIImageView *)backgroundImage; - (void)applicationDidEnterBackground:(UIApplication *)application {

    UIImageView *myBanner = [[UIImageView alloc] initWithImage:@"overlayImage.png"]; self.backgroundImage = myBanner; [self.window addSubview:myBanner]; }
  28. 28 ДИНАМИЧЕСКАЯ ПРОВЕРКА 1. Зайдите на экран с чувствительными данными

    2. Нажмите кнопку Home 3. Перейдите к каталогу /var/mobile/Containers/Data/Application/$APP_ID/Library/Caches/ Snapshots/
  29. 29 L3: RESILIENCY AGAINST REVERSE ENGINEERING AND TAMPERING • Применим

    к приложениям, обрабатывающим критичные данные • Может служить для защиты интеллектуальной собственности • Противодействие реверсу • Предотвращает клиентские атаки
  30. 30 TEST CASE V8: RESILIENCE REQUIREMENTS L3: RESILIENCY AGAINST REVERSE

    ENGINEERING AND TAMPERING 8.2 The app prevents debugging and/or detects, and responds to, a debugger being attached. All available debugging protocols must be covered.
  31. 31 ИСПОЛЬЗУЯ PTRACE #import <dlfcn.h> #import <sys/types.h> #import <stdio.h> typedef

    int (*ptrace_ptr_t)(int _request, pid_t _pid, caddr_t _addr, int _data); void anti_debug() { ptrace_ptr_t ptrace_ptr = (ptrace_ptr_t)dlsym(RTLD_SELF, "ptrace"); ptrace_ptr(31, 0, 0, 0); // PTRACE_DENY_ATTACH = 31 }
  32. 32 ИСПОЛЬЗУЯ PTRACE

  33. 33 BYPASS PTRACE

  34. 34 МЕТРИКИ

  35. 35 МЕТРИКИ V1: Architecture V2: Data storage V3: Cryptography V4:

    Authentication V5: Network Communication V6: Platform Interaction V7: Code Quality V8: Resiliency
  36. 36 МЕТРИКИ V1: Architecture V2: Data storage V3: Cryptography V4:

    Authentication V5: Network Communication V6: Platform Interaction V7: Code Quality V8: Resiliency
  37. 37 ЗАКЛЮЧЕНИЕ • MASVS дает четкое руководство что и как

    проверять в мобильном приложении • Разделяет уровни безопасности приложения • Имеет разумное количество элементов и контролей безопасности • Оставляет хакера без работы ☺
  38. 38 ССЫЛКИ • OWASP Mobile Application Security Verification Standard •

    OWASP Mobile Security Testing Guide • Mobile App Security Checklist • Trustwave Global Security Report • WhiteHatSec Application Security Report
  39. Вопросы? AppSec at Tinkoff.ru 2018