Можно ли связать политику SELinux с разрешениями Android?

Я хотел бы предоставить разрешения Android (например, android.permission.DELETE_PACKAGES, который имеет protectionLevel = system | signature) приложениям, подписанным данной подписью и / или с заданным именем пакета из политик SELinux, но пока я не нашел способ, который работает. Файл mac_permissions.xml, используемый для приема тега разрешения-разрешения, который принимает строки разрешений Android, но на основе кода Lollipop, который его анализирует, этот тег, похоже, больше не поддерживается. Я все равно пробовал использовать его, и система определенно игнорировала его.

В идеале мне нужно было бы только добавлять / изменять файлы политик SELinux, а не основные файлы AndroidManifest, которые объявляют ограниченные разрешения и указывают уровни их защиты. Предположим, что приложения с данной подписью / пакетом в противном случае не получили бы указанные разрешения от PackageManager, потому что им не хватает каких-либо специальных привилегий, которые распознаются уровнями защиты разрешений Android (подписаны сертификатом платформы, установлены в / system и т. Д.), И что разрешение является системным (т.е. объявлено frameworks / base / core / res AndroidManifest), который объявляется во время сборки ОС.

Есть ли способ разрешить данной подписи / пакету приложения использовать данное разрешение Android от SELinux?


person CCJ    schedule 17.02.2016    source источник


Ответы (1)


Вся работа над MMAC была оставлена ​​проектом SE для Android, так как ни одна из них не была принята в апстриме. В настоящее время не существует поддерживаемого механизма для привязки разрешений пакетов к политике SE Linux. Если вы создаете Android, можно восстановить эту работу в их дереве, ветки для начала - это ветки seandroid здесь: https://bitbucket.org/seandroid/frameworks-base/branches/

Однако наиболее актуальным веткам с кодом более года. Так что у вас могут возникнуть проблемы с портированием.

Кроме того, этот код использует файл mac_permissions.xml для управления доступом, но EOPS, расширенные изменения операций также будут полезны, вы можете прочитать об этом в его файле конфигурации: https://bitbucket.org/seandroid/external-sepolicy/src/ccb97c52cda2bac69c0499b3c76bc8e0d28d636c/eops.xml?at=seandroid-5.1.1&fileviewer=file-view-default

Имейте в виду, что проверки разрешений во время установки и изменения eops, хотя и обеспечивают форму обязательного контроля доступа, на самом деле не используют основные технологии SE Linux. Таким образом, его можно использовать с ядром с поддержкой selnux или без него.

Если кто-то действительно хотел связать SE Linux со строками разрешений, потребовались бы значительные усилия, чтобы пометить разрешения, и чтобы служба диспетчера пакетов (PMS) и служба диспетчера действий (AMS) вычисляли, разрешен ли доступ.

Однако теперь, когда доступны элементы управления разрешениями Android для каждого приложения, большая часть работы больше не требуется.

person William Roberts    schedule 13.06.2016
comment
Я не вижу файл eops.xml в разделе external / sepolicy последней версии Lollipop AOSP (android.googlesource.com/platform/external/sepolicy / + /); было ли это также не принято в апстриме? - person CCJ; 22.06.2016