Представлен проект по интеграции SELinux в Android

14.01.2012 19:36

Сотрудники агентства национальной безопасности США, ответственные за разработку системы принудительного контроля доступа SELinux, представили проект SE Android, в рамках которого ведётся работа по интеграции SELinux в операционную систему Android. Разработка носит экспериментальный характер, но уже может быть использована для защиты ОС от распространённых эксплойтов и утечек данных в приложениях.

SE Android расширяет стандартную модель безопасности Android, основанную на дискретном контроле доступа и полномочиях приложений, добавляя в неё возможность принудительного контроля доступа, который происходит не только при обращении приложений к данным, но и, например, во время обмена данными с помощью IPC binder. Основная идея проекта состоит в том, чтобы устранить возможные риски, связанные с работой системных демонов, исполняемых с правами root, но, как показала история, имеющих множество уязвимостей и недоработок.

Для интеграции SELinux в Android был подготовлен порт libselinux для библиотеки Bionic, из которого были удалены все зависимости от Glibc. Также в систему был интегрирован минимальный набор SELinux-утилит и внесены изменения в систему инициализации init, которая теперь понимает такие команды как setcon, restorecon и опцию seclabel. Системный сервис Zygote, используемый для порождения новых процессов виртуальной машины был модифицирован таким образом, чтобы запускать приложения в указанном контексте безопасности SELinux, а installd - для установки нужных SELinux-меток на каталоги приложений. В ядро была добавлена поддержка SELinux и механизм автоматической установки SELinux-меток на новые inode, создаваемые в файловой системе yaffs2. Чтобы иметь возможность изменения меток в библиотеку Bionic добавлена поддержка системных вызовов для работы с расширенными атрибутами ФС.

Специально для SE Android разработчики написали набор SELinux-правил, которые ограничивают системные демоны и устанавливаемые приложения непривилегированным доменом, в котором запрещены какие-либо нестандартные операции, такие, например, как запуск несистемных бинарных файлов, создание сокетов, перемонтирование системного раздела и т.д. Благодаря этому система оказалась устойчива к таким эксплойтам как GingerBreak, Exploid, RageAgainstTheCage, Zimperlich, KillingTheNameOf, psneuter и смогла предотвратить утечку данных в некоторых популярных приложениях, таких как Skype, Bank of America, Lookout Mobile Security и других.

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