Компания Google при разработке операционной системы Android всё больше внимания уделяет безопасности — в Android 4.1 была полностью завершена реализация ASLR, в Android 4.4 была внедрена система принудительного контроля доступа SELinux, встретившая поддержку у корпоративных пользователей Android. Впрочем, улучшение безопасности имеет и оборотную сторону медали — осложнение работы с устройством для требовательных пользователей, любящих максимальный контроль над системой. А именно с этим, судя по всему, вскоре будут проблемы.
Сотрудник компании Google Ник Кралевич и сотрудник Агентства Национальной Безопасности США Стивен Смолли внесли вчера в код Android несколько изменений, которые переводят системный раздел устройств в право доступа «только чтение» с помощью SELinux-политики. Таким образом, даже если пользователь получит права суперпользователя, позволяющие в данный момент проводить различные операции с системными файлами, то с учётом новых изменений пользователь потеряет возможность модификации системного раздела. В Google и АНБ оставляют лазейку только для образа восстановления, который используется производителями устройств для обновления прошивки и сможет изменять файлы в системной области. В Google пока никаких комментариев по данному вопросу не дали, но можно предположить, что изменение права доступа фактически сделает бесполезной эксплуатацию уязвимостей Android с повышением привилегий, так как это самое повышение привилегий не даст злоумышленнику никаких преференций до перезагрузки, а в случае потребительских устройств, чьи загрузчики обычно заблокированы для запуска неподписанного кода, подобные атаки и вовсе теряют свою актуальность.
Активированный SELinux в Android 4.4.2
Что касается сообщества независимых разработчиков, то их жизнь серьёзно осложняется. Пользователи рут-приложений теперь не смогут получить корректно работающую программу сразу после установки, так как для записи в системную область, придётся перезагружать устройство в режим восстановления и через него проводить все операции, тогда как из пользовательского окружения это будет невозможно. Авторитетный Android-хакер Chainfire считает, что разработчики приложений, требующих повышенные права, смогут создавать специальные загрузочные сценарии, которые будут автоматически загружаться при запуске устройства, но это осложняется тем, что для Android существует несколько открытых образов восстановления, таких как CWM и TWRP, которые отличаются друг от друга, поэтому создание универсального загрузочного сценария серьёзно осложняется. Более того, если у устройства не предусмотрена возможность официальной разблокировки загрузчика (в эту категорию попадают версии смартфонов и планшетов от американских операторов, планшеты Kindle Fire от Amazon и некоторые другие), то получение рут-прав для них потеряет всяческий резон.
Код, внесённый Google и АНБ, уже попал в раздел master, а, значит, по умолчанию сборка Android из исходных кодов происходит с новыми параметрами безопасности, запрещающими доступ к системному разделу. В какую именно версию Android попадут эти изменения — неизвестно. Это может быть и Android 4.4.3, которая готовится к скорому выходу, так и любая неанонсированная версия. Более того, эти патчи могут и вовсе остаться только в Android Open Source Project и не попасть в приватные репозитории Google, которыми пользуются члены Open Handset Alliance. Впрочем, вероятность последного хотя и существует, но крайне незначительна. Если обратиться к документу об определении совместимости с Android 4.4 KitKat, то Google довольно серьёзно настроена на максимальную активацию SELinux в системе, поэтому скорее всего производители устройств вряд ли смогут проигнорировать новые изменения в безопасности. Стоит отметить, что похожие изменения уже сделала компания Samsung в своём защитном пакете KNOX, предназначенном для корпоративного рынка, а также само Агентство Национальной Безопасности в своём открытом проекте SEAndroid. Впрочем, не стоит забывать, что сам проект SELinux был разработан в АНБ и включён Линусом Торвальдсом в основную ветку ядра Linux, начиная с версии 2.6, выпущенной в далёком 2003 году.
Что касается возможности обхода нововведений, то без действий владельца устройства это теперь невозможно. Разработчикам приложений теперь, вероятно, потребуется просить пользователей устанавливать специальное ядро, в котором эти изменения будут отключены, либо вообще устанавливать стороннюю прошивку, в которой SELinux или отключен полностью, как в Android 4.3, или переведён в разрешительный режим, как в Android 4.3. Минимальными требованиями для установки рут-приложений станет наличие открытого загрузчика и возможность установки открытого образа восстановления, отличного от OEM-образа. Под такие критерии попадают все устройства Google Nexus, Google Play Edition, Developer Edition, большинство моделей Samsung, Sony и HTC, кроме операторских версий. Стоит напомнить, что любые манипуляции с загрузчиком и образом восстановления могут привести к потере гарантии на программное обеспечение устройства.