Объединенная группа исследователей из двух университетов — США (шт. Северная Каролина) и Германии (г. Дармштадт) — представила на симпозиуме Usenix Security Symposium в Сан-Диего пакет программных модулей Android Security Modules (ASM), который позволяет внести ряд существенных изменений в работу низкоуровневого механизма безопасности Android.

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

Безопасность не в ущерб популярности

Как считают авторы разработки, причина, заставившая их приняться за исследование, заключается в лавинообразном росте популярности, который наблюдается в последние годы в отношении разработок для Android. Его следствие — модель безопасности Android необходимо адаптировать к новым условиям.

В основе популярности разработок лежит богатый функционал, которым наделены пакеты разработчиков и реализованные на их базе API-интерфейсы. При этом задача обеспечения кибербезопасности Android-систем до сих пор остается непростой и требует от разработчиков больших затрат, чтобы реализовать намеченный набор функций, но одновременно не привести систему Android в состояние неустойчивой или заторможенной работы.

Как считают создатели фреймворка ASM, им удалось найти способ добиться намеченной цели.

Примеры ASM-решений

Вряд ли стоит описывать здесь полный функциональный набор, который реализован в фреймворке ASM. Достаточно привести примеры, как использование ASM позволяет упростить разработки, которые затрагивают работу встроенных в Android модулей безопасности. Примеры будут касаться модулей AppLock и MockDroid.

AppLock

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

Решение, предложенное разработчиками — выполнять запуск тех же приложений, но через AppLockASM. Оно не требует запуска бесконечного цикла и обходится только регистрацией модуля в системе ASM Framework.

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

В отличие от этого «сложного» сценария в AppLockASM реализован алгоритм, который не требует принудительно снимать приложения при переходе на запуск окна блокировки до момента их фактического старта. Непосредственная обработка таких приложений заменяется на получение соответствующего разрешения от AppLockASM.

MockDroid

Изменения затронули также оригинальную версию механизма MockDroid. Его задача — переназначать на программном уровне выданные привилегии с учетом изменений, которые вносятся новым приложением. Обычная реализация такой процедуры требует взаимодействия с управляющим механизмом Package Manager Service. Для этого в оригинальной версии Android приходится запускать процесс построения параллельного клона имеющегося пула разрешений. Опять сложно и непрозрачно, а также требуется проведение глобальной ревизии всей системы запущенных в работу служб.

В ASM достаточно только выполнить регистрацию для небольшого набора ASM-закладок.

Выводы

Предложенная архитектура ASM упрощает разработчикам взаимодействие со сложным механизмом безопасной среды Android, где при использовании оригинальных механизмов требуется учитывать влияния собственного приложения на работу разнообразных системных низкоуровневых функций. ASM позволяет реализовать необходимые для практики функции без посторонней настройки системы.