Содержание статьи
- Инструменты
- Почитать
- Titan M: security-чип в смартфонах Pixel
- Control Flow Integrity для ядра Linux
- Уроки фаззинга
- Смартфон, ворующий рекламные деньги
- Разработчику
- Kotlin и его типы
- Управляем приоритетами потоков
- Contracts — новая функция Kotlin 1.3
- Цифровые подписи APK: прошлое и настоящее
- Пять библиотек анимации
- Библиотеки
Инструменты
- android-device-check — скрипт для проверки настроек безопасности смартфона на Android;
- AES Killer — плагин Burp Suite для расшифровки трафика мобильных приложений с помощью ключа, извлеченного из приложения;
- awesome-iot-hacks — коллекция ссылок на информацию о багах различных IoT-устройств.
Почитать
Titan M: security-чип в смартфонах Pixel
Building a Titan: Better security through a tiny chip — рассказ о security-чипе Titan M, который используется в смартфонах Pixel 3 и Pixel 3 XL. Чип разработан и производится самой Google, а в число его функций входят:
- хранение счетчиков откатов, используемых системой доверенной загрузки Android Verified Boot;
- хранение секретных данных и ограничение попыток доступа к ним с помощью Weaver API;
- реализация функций модуля Strongbox Keymaster, который отвечает в том числе за хранение и генерацию ключей шифрования, а также за функцию Android Protected Confirmation, позволяющую математически доказать, что пользователь действительно увидел тот или иной диалог подтверждения и что ответ на этот диалог не был перехвачен и каким-либо образом изменен;
- обеспечение работы механизмов защиты от сброса до заводских настроек, которые не позволяют третьим сторонам использовать потерянный или украденный смартфон.
По сути, Titan M — это аналог Secure Enclave, который Apple уже несколько лет предустанавливает в свои смартфоны. Благодаря тому что Titan M — это выделенный микрокомпьютер (на базе ARM Cortex-M3), не связанный с основным процессором, он гораздо более устойчив к любым атакам, включая «неисправляемые» Rowhammer, Spectre и Meltdown.
Google обещает открыть код прошивки Titan M в скором времени.
Control Flow Integrity для ядра Linux
Control Flow Integrity in the Android kernel — статья разработчиков Android о применении технологии Control Flow Integrity для защиты ядра Linux от атак с использованием метода ROP (Return Oriented Programming).
Современные эксплоиты в своей работе часто полагаются на модификацию указателей на функцию и адресов возврата. Это позволяет обойти ограничение на исполнение стека и сегмента данных с помощью переиспользования кусков самого приложения.
Технология Control Flow Integrity (CFI) предназначена для борьбы с такими эксплоитами. При ее включении компилятор строит граф вызовов функций и встраивает код сверки с этим графом перед каждым вызовом функции. Если вызов происходит по отклоняющемуся от графа адресу, приложение завершается.
Ранее разработчики Android уже включили CFI для нескольких системных компонентов в Android 8. В Android P покрытие расширилось и теперь включает в себя медиафреймворки, а также стек NFC и Bluetooth. Теперь поддержка реализована для ядра версий 4.9 и 4.14.
Уроки фаззинга
Writing the worlds worst Android fuzzer, and then improving it — занимательная статья о том, как обычно проводят фаззинг и какую информацию взломщик может получить с его помощью.
Началось все с того, что автор решил устроить фаззинг файловой системы Android и попробовать прочитать и записать во все встреченные файлы случайный набор байтов. Расчет здесь на то, что в Android (а точнее, Linux) несколько виртуальных файловых систем (/dev
, /proc
, /sys
) хранят не реальные, а синтетические файлы, с помощью которых можно изменять настройки ядра и работать с железом.
Как оказалось, долго фаззер работать не мог и в определенный момент просто блокировался при попытке чтения файла. Чтобы решить эту проблему, автор распараллелил фаззер на 128 потоков, и... смартфон ушел в kernel panic. То же повторилось с каждым из протестированных смартфонов.
Анализ лога из /proc/last_kmsg
показал, что произошло что-то вроде heap corruption, и, если поковырять дальше, можно написать эксплоит для получения прав root в системе. А DoS-эксплоит фактически уже существует.
Но что, если файла /proc/last_kmsg
нет? Например, в Galaxy S5 такой файл отсутствует, а значит, мы не сможем узнать, обращение к какому файлу привело к панике ядра. В этом случае для начала сокращаем область работы фаззера, пробуем, например, только каталог /sys
. Это срабатывает, проблема в одном из его файлов. Проходимся по подкаталогам и выясняем, что ядро падает при записи в один из файлов /sys/kernel
, а если точнее — /sys/kernel/debug/
.
Чтобы не перебирать все файлы этого подкаталога вручную, пишем сервер, который будет работать на компе и принимать имена файлов от фаззера по мере его работы. Какое последнее имя получим перед падением, то нам и нужно.
Последним файлом оказался /sys/kernel/debug/smp2p_test/ut_remote_gpio_inout
. Теперь написать DoS-эксплоит проще простого.
Автор отмечает, что в современном мире остается все меньше телефонов, которые можно отправить в панику таким способом. Все дело в правилах SELinux, которые закрывают доступ к большинству системных файлов. Однако некоторые устройства до сих пор уязвимы.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»