Телефон: 8-800-350-22-65
WhatsApp: 8-800-350-22-65
Telegram: sibac
Прием заявок круглосуточно
График работы офиса: с 9.00 до 18.00 Нск (5.00 - 14.00 Мск)

Статья опубликована в рамках: LXXXVI Международной научно-практической конференции «Научное сообщество студентов: МЕЖДИСЦИПЛИНАРНЫЕ ИССЛЕДОВАНИЯ» (Россия, г. Новосибирск, 06 февраля 2020 г.)

Наука: Информационные технологии

Скачать книгу(-и): Сборник статей конференции

Библиографическое описание:
Нурмухаметов Д.Р. УЯЗВИМОСТИ ЯДРА ANDROID // Научное сообщество студентов: МЕЖДИСЦИПЛИНАРНЫЕ ИССЛЕДОВАНИЯ: сб. ст. по мат. LXXXVI междунар. студ. науч.-практ. конф. № 3(86). URL: https://sibac.info/archive/meghdis/3(86).pdf (дата обращения: 24.04.2024)
Проголосовать за статью
Конференция завершена
Эта статья набрала 0 голосов
Дипломы участников
У данной статьи нет
дипломов

УЯЗВИМОСТИ ЯДРА ANDROID

Нурмухаметов Дамир Рустемович

студент 4 курса, кафедра автоматизированных систем управления, Уфимский государственный авиационный технический университет,

РФ, г. Уфа

АННОТАЦИЯ

Уязвимости ядра Android представляют серьезную угрозу безопасности и конфиденциальности. Они позволяют злоумышленникам получить полный контроль над устройствами-жертвами, устанавливать вредоносные и нежелательные приложения и поддерживать постоянный контроль. К сожалению, большинство устройств Android никогда не обновляются своевременно, чтобы защитить своих пользователей от эксплойтов ядра. Последние вредоносные программы для Android даже имеют встроенные эксплойты ядра, чтобы воспользоваться этим большим окном уязвимости. Эффективное решение этой проблемы должно быть адаптировано к множеству (устаревших) устройств, быстро развертываться и защищено от неправильного использования. Однако фрагментированная экосистема Android делает это сложной и сложной задачей.

 

Ключевые слова: Безопасность, Android, ядро.

 

1. Вступление

Android - популярная мобильная операционная система, основанная на ядре Linux[1]. Ядро, благодаря своим высоким привилегиям, является критически важным для безопасности всей системы Android[2]. Например, Android использует ядро Linux[3] для обеспечения надлежащей изоляции между приложениями и для защиты важных системных служб (например, диспетчера местоположения) от несанкционированного доступа. Как только ядро взломано, ни одному из приложений в системе нельзя доверять. Многие приложения содержат конфиденциальные личные данные, такие как банковские счета, мобильные платежи, личные сообщения и данные социальных сетей. Даже TrustZone, широко используемый в качестве безопасного хранилища ключей и управления цифровыми правами в Android, находится под серьезной угрозой, поскольку взломанное ядро позволяет злоумышленнику вводить вредоносные полезные данные в TrustZone. Поэтому уязвимости ядра Android представляют серьезную угрозу для конфиденциальности и безопасности пользователей.

Исследователи whitehat и black-hat приложили огромные усилия для обнаружения (и использования) уязвимостей ядра Android, о чем свидетельствует значительное увеличение уязвимостей ядра, раскрытых в бюллетене по безопасности Android в последние годы. Кроме того, многие уязвимости / эксплойты ядра общедоступны, но никогда не сообщаются в Google или поставщикам, не говоря уже о исправлении (например, эксплойты в приложениях Android rooting)). Поставки эксплойтов ядра Android, вероятно, продолжат расти. К сожалению, официальное исправление устройства Android - это длительный процесс, в котором участвуют несколько сторон с разными интересами: Google / поставщик проверяет обнаруженную уязвимость и создает для нее исправление. Затем исправление тщательно проверяется и выпускается для операторов связи; операторы связи снова тестируют обновление на совместимость со своими сетями и передают его своим пользователям в виде обновления по беспроводной сети (OTA). Многие обновления могут стоять в очереди у операторов, ожидающих тестирования; наконец, пользователь может или не может установить обновление быстро. Можно утверждать, что производители и поставщики устройств мало заинтересованы в обновлении и безопасности пользовательских устройств. Вместо этого они предпочитают покупать новые устройства.

2. Системный дизайн

В этом разделе мы сначала представим наши ключевые наблюдения по проблеме фрагментации Android, а затем подробно опишем дизайн KARMA.

Разработка живой системы исправления ядра, которая может масштабировать множество устройств, является сложной задачей. Однако три наблюдения, полученные в результате систематического измерения фрагментации Андроида, делают эту задачу выполнимой и управляемой. Эти наблюдения могут послужить основой для будущих систем, решающих эту проблему.

1. Большинство функций ядра стабильны на всех устройствах и в версиях Android.

Ядро Android (Linux) - это большой и зрелый программный продукт. Как и в случае с другим крупным программным обеспечением, эволюция является более распространенной и предпочтительной, чем революция - ошибки исправляются и постепенно добавляются новые функции. Полное переписывание ядра компонента ядра мало и далеко. Таким образом, Apatch для одного ядра может быть адаптирован для многих других ядер. Адаптивность является ключевым требованием для защиты фрагментированной экосистемы Android.

2. Многие уязвимости ядра запускаются вредоносными данными. Они могут быть защищены путем фильтрации этих входов.

Уязвимости ядра, особенно уязвимые, часто запускаются злонамеренными входами через системные вызовы или внешние входные данные (например, сетевые пакеты). Например, CVE-2016-0802, переполнение буфера в драйвере BroadcomWiFi, может быть вызвано созданным полем пакета, размер которого больше фактического размера пакета. Такие уязвимости можно защитить, поместив фильтр на входы (то есть аргументы функций и внешние данные, полученные от функций, таких как copy_from_user), для проверки вредоносных входов.

3. многие функции ядра возвращают коды ошибок, которые обрабатываются их вызывающими. Мы можем использовать код обработки ошибок, чтобы изящно отбрасывать вредоносные входы.

Когда вредоносный ввод блокируется, нам нужно изменить работу ядра, чтобы ядро оставалось максимально стабильным и стабильным. Мы видим, что многие функции ядра возвращают коды ошибок, которые обрабатываются их вызывающими. В таких функциях патч может просто завершить выполнение текущей функции и вернуть код ошибки при обнаружении вредоносного ввода. Обработчик обработает код ошибки соответственно. Стиль кодирования ядра Linux рекомендует, чтобы функции, особенно экспортированные, возвращали код ошибки, чтобы указать, была ли операция выполнена успешно или нет. Если функция обычно не возвращает коды ошибок, она должна указывать на ошибки, возвращая результаты за пределами допустимого диапазона. Заметным исключением являются функции без возвращаемых значений. Большинство (экспортируемых) функций ядра придерживаются официального стиля кодирования и возвращают коды ошибок - даже функции ядра, которые возвращают указатели, часто возвращают «коды ошибок» вне допустимого диапазона, используя ERR_PTRmacro.

Основываясь на этих наблюдениях, подход заключается в следующем: для каждой применимой уязвимости мы создаем патч, который можно поместить в уязвимую функцию для фильтрации вредоносных входных данных. Патч возвращает выбранный код ошибки при обнаружении попытки атаки. Ошибка обрабатывается существующим кодом обработки ошибок, поддерживая стабильность ядра. Этот патч автоматически адаптируется для других устройств. Автоматическая адаптация исправлений может значительно сократить ручные усилия и ускорить развертывание исправлений.

3. Адаптивная многоуровневая защита

KARMA защищает уязвимости ядра, предотвращая их попадание во вредоносные ресурсы. По соображениям безопасности патч может быть размещен только на назначенных уровнях. В частности, уровень 1 — это точки входа или возврата уязвимой функции; Уровень 2 - до или после инструкций вызова вызываемой стороне уязвимой функции. Обратите внимание, что мы не исправляем самого вызываемого абонента, а скорее перехватываем инструкции вызова, чтобы избежать влияния на других абонентов этого вызываемого абонента. Типичный пример вызовов, перехваченных KARMA is copy_from_user, функцией, предназначенной для копирования ненадежных пользовательских данных в ядро. copy_from_user - идеальная контрольная точка для вредоносных входов, потому что ядро вызывает ее всякий раз, когда ядру нужно прочитать данные пользователя; Уровень 3 аналогичен существующим двоичным патчам. Патчи 3-го уровня более гибкие, но потенциально опасные, потому что они (в настоящее время) без ограничений. Если уязвимость трудно исправить на уровне 1 и уровне 2, мы возвращаемся к уровню 3.

 

Список литературы:

  1. Материал из Википедии — свободной энциклопедии, Linux, URL: https://ru.wikipedia.org/wiki/Linux (дата обращения: 01.02.2020)
  2. Материал из Википедии — свободной энциклопедии, Android, URL: https://ru.wikipedia.org/wiki/Android (дата обращения: 25.01.2020)
  3. Материал из Википедии — свободной энциклопедии, Linux kernel, URL: https://en.wikipedia.org/wiki/Linux_kernel (дата обращения: 21.01.2020)
Проголосовать за статью
Конференция завершена
Эта статья набрала 0 голосов
Дипломы участников
У данной статьи нет
дипломов

Оставить комментарий

Форма обратной связи о взаимодействии с сайтом
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.