Безопасность
приложений
для Android
Юрий Леонычев
Администратор информационной
безопасности
Безопасность мобильных
       устройств
4
Характерные черты



    • Миниатюрность
    • Массовость
    • Универсальность
    • Содержат массу важных для вас данных
    • Постоянно в сети GPRS/3G/EDGE/LTE/WiFi



5
Новые риски. Миниатюрность




    Легко потерять




6
Новые риски. Массовость

              {Много устройств} x
        {Беспечность пользователей} x
            {Быстрая монетизация}
                       =
                   PROFIT!!!




7
Новые риски. Универсальность
            Почта     Игры
                                Фото

     Телефон



                                Диктофон
    Видео



8                   Навигатор
Новые риски. Личные данные



    • Телефонная книга
    • Сообщения и письма
    • Фотографии и видео
    • Логины, пароли, токены
    • OTP-генераторы



9
Новые риски. Всегда в сети




     Выход в интернет и сотовые сети в режиме
                     ~24x7




10
Гонки на выживание



     • Взрывное развитие рынка
     • Несколько доминирующих платформ
     • Десятки производителей
     • Миллионы приложений
     • Миллиарды устройств



11
Безопасность внутри Andorid
Ограничение доступа. Блокировка экрана




     • PIN
     • Пароль
     • Биометрия
     • Росчерк



13
Модель безопасности для приложений




     • Уникальный UID (почти всегда)
     • Отдельный процесс (почти всегда)
     • Изолированная виртуальная машина
     • Нединамические привилегии



14
Защита файловой системы




     • Использование системных разделов в
       режим read-only
     • Расстановка привилегий и прав в файловых
       системах
     • Шифрование разделов (Android 3.x)



15
Пример init-скрипта
     Init.rc для Android 4.x:

       ...
       # create data/gps for GPS demon
           mkdir /data/gps 771 gps system
           chown gps system /data/gps
           chown gps root /sys/class/sec/gps/GPS_PWR_EN/value
           chmod 660 /sys/class/sec/gps/GPS_PWR_EN/value

       # for sensor control
           chown system input   /sys/class/input/input0/enable
           chown system input   /sys/class/input/input0/delay
           chown system input   /sys/class/input/input0/wake
           chown system input   /sys/class/input/input0/data
       ...




16
Хранилище сертификатов
     Часть дампа /system/etc/security/cacerts.bks для Android 4.x:

       ...

       Alias name: 123
       Creation date: 30.08.2011
       Entry type: trustedCertEntry

       Owner: C=JP,O=Japanese Government,OU=ApplicationCA
       Issuer: C=JP,O=Japanese Government,OU=ApplicationCA
       Serial number: 31
       Valid from: Wed Dec 12 18:00:00 MSK 2007 until: Tue Dec
       12 19:00:00 MSK 2017

       ...




17
Привилегии — это удобно

       Важные вызовы API требуют специальных
       разрешений:
     • Доступ к камере
     • Геолокация
     • Доступ к Bluetooth
     • Функции для работы с сообщениями
     • Функции для работы с телефонией
     • Функции для работы с сетями


18
Привилегии — это сложно



     • Только некоторые из разрешений
       полностью документированы
     • Четкого сопоставления API вызовов и
       разрешений не существует
     • http://www.android-permissions.org




19
Пользователи и Andorid
Dumb way to break safety



     • Jailbreaking
     • Простые пароли
     • Странные приложения
     • Включенный режим отладки




21
Dumb way to break safety



     • Приложения, скачанные
       из недоверенных
       источников
     • Взломанные веб-серверы




22
Разработчики и Andorid
Как видят свое приложение разработчики?


                          Сферическое приложение в
                                  вакууме


     Пользователь




24
А как на самом деле?
                        Операционная система

                    Среда исполнения и библиотеки

     Пользователь
                             Framework
                            Приложение1




                               ?
                                                    Сервер




 Злоумышленник
                            ПриложениеN



25
Проблемы на низком уровне

     • Уязвимости ядра операционной системы
     • Уязвимости драйверов и библиотек
     • Уязвимости в ПО вендоров.

      Пример: Samsung Galaxy S2, Galaxy S3,
      Galaxy Note 2, и т. д.
      /dev/exynos-mem = /dev/mem
      http://clck.ru/8atEO

26
Проблемы приложения

     • Используются нешифрованные и
       общедоступные хранилища
       ( MODE_WORLD_*, /mnt/sdcard)
     • Передача данных по открытым каналам (HTTP,
        AllowAllHostnameVerifier)
     • Отсутствие санитизации пользовательского
       ввода
     • Использование WebView (OWASP T10)
     • Передача чувствительных данных в лог-файлы

27
Проблемы приложения. Точки входа

                             Intent


     BroadcastReceiver       Service       Activity

                           Application

                         ContentProvider



                         ContentResolver
28
Анализ контент-провайдеров
Сделай сам



     • Попробуем проанализировать
       защищенность контент-провайдеров
     • MWR Mercury
       http://labs.mwrinfosecurity.com/tools/2012/03/
       16/mercury/
     • CPA https://github.com/tracer0tong/cpa



30
CPA

     PackageManager



        Providers
        Privileges



                      Content
          CPA                    Data
                      Provider

31
32   Выберем контент-провайдер
33   SQL injection
34   Содержимое таблицы
35   Другие неожиданности
Юрий Леонычев

     Администратор
     информационной
     безопасности


     yleonychev@yandex-team.ru
     @tracer0tong




Спасибо

Юрий Леонычев «Безопасность мобильных приложений для Android. Теория и практика»

  • 2.
  • 3.
  • 4.
  • 5.
    Характерные черты • Миниатюрность • Массовость • Универсальность • Содержат массу важных для вас данных • Постоянно в сети GPRS/3G/EDGE/LTE/WiFi 5
  • 6.
  • 7.
    Новые риски. Массовость {Много устройств} x {Беспечность пользователей} x {Быстрая монетизация} = PROFIT!!! 7
  • 8.
    Новые риски. Универсальность Почта Игры Фото Телефон Диктофон Видео 8 Навигатор
  • 9.
    Новые риски. Личныеданные • Телефонная книга • Сообщения и письма • Фотографии и видео • Логины, пароли, токены • OTP-генераторы 9
  • 10.
    Новые риски. Всегдав сети Выход в интернет и сотовые сети в режиме ~24x7 10
  • 11.
    Гонки на выживание • Взрывное развитие рынка • Несколько доминирующих платформ • Десятки производителей • Миллионы приложений • Миллиарды устройств 11
  • 12.
  • 13.
    Ограничение доступа. Блокировкаэкрана • PIN • Пароль • Биометрия • Росчерк 13
  • 14.
    Модель безопасности дляприложений • Уникальный UID (почти всегда) • Отдельный процесс (почти всегда) • Изолированная виртуальная машина • Нединамические привилегии 14
  • 15.
    Защита файловой системы • Использование системных разделов в режим read-only • Расстановка привилегий и прав в файловых системах • Шифрование разделов (Android 3.x) 15
  • 16.
    Пример init-скрипта Init.rc для Android 4.x: ... # create data/gps for GPS demon mkdir /data/gps 771 gps system chown gps system /data/gps chown gps root /sys/class/sec/gps/GPS_PWR_EN/value chmod 660 /sys/class/sec/gps/GPS_PWR_EN/value # for sensor control chown system input /sys/class/input/input0/enable chown system input /sys/class/input/input0/delay chown system input /sys/class/input/input0/wake chown system input /sys/class/input/input0/data ... 16
  • 17.
    Хранилище сертификатов Часть дампа /system/etc/security/cacerts.bks для Android 4.x: ... Alias name: 123 Creation date: 30.08.2011 Entry type: trustedCertEntry Owner: C=JP,O=Japanese Government,OU=ApplicationCA Issuer: C=JP,O=Japanese Government,OU=ApplicationCA Serial number: 31 Valid from: Wed Dec 12 18:00:00 MSK 2007 until: Tue Dec 12 19:00:00 MSK 2017 ... 17
  • 18.
    Привилегии — этоудобно Важные вызовы API требуют специальных разрешений: • Доступ к камере • Геолокация • Доступ к Bluetooth • Функции для работы с сообщениями • Функции для работы с телефонией • Функции для работы с сетями 18
  • 19.
    Привилегии — этосложно • Только некоторые из разрешений полностью документированы • Четкого сопоставления API вызовов и разрешений не существует • http://www.android-permissions.org 19
  • 20.
  • 21.
    Dumb way tobreak safety • Jailbreaking • Простые пароли • Странные приложения • Включенный режим отладки 21
  • 22.
    Dumb way tobreak safety • Приложения, скачанные из недоверенных источников • Взломанные веб-серверы 22
  • 23.
  • 24.
    Как видят своеприложение разработчики? Сферическое приложение в вакууме Пользователь 24
  • 25.
    А как насамом деле? Операционная система Среда исполнения и библиотеки Пользователь Framework Приложение1 ? Сервер Злоумышленник ПриложениеN 25
  • 26.
    Проблемы на низкомуровне • Уязвимости ядра операционной системы • Уязвимости драйверов и библиотек • Уязвимости в ПО вендоров. Пример: Samsung Galaxy S2, Galaxy S3, Galaxy Note 2, и т. д. /dev/exynos-mem = /dev/mem http://clck.ru/8atEO 26
  • 27.
    Проблемы приложения • Используются нешифрованные и общедоступные хранилища ( MODE_WORLD_*, /mnt/sdcard) • Передача данных по открытым каналам (HTTP, AllowAllHostnameVerifier) • Отсутствие санитизации пользовательского ввода • Использование WebView (OWASP T10) • Передача чувствительных данных в лог-файлы 27
  • 28.
    Проблемы приложения. Точкивхода Intent BroadcastReceiver Service Activity Application ContentProvider ContentResolver 28
  • 29.
  • 30.
    Сделай сам • Попробуем проанализировать защищенность контент-провайдеров • MWR Mercury http://labs.mwrinfosecurity.com/tools/2012/03/ 16/mercury/ • CPA https://github.com/tracer0tong/cpa 30
  • 31.
    CPA PackageManager Providers Privileges Content CPA Data Provider 31
  • 32.
    32 Выберем контент-провайдер
  • 33.
    33 SQL injection
  • 34.
    34 Содержимое таблицы
  • 35.
    35 Другие неожиданности
  • 36.
    Юрий Леонычев Администратор информационной безопасности yleonychev@yandex-team.ru @tracer0tong Спасибо