Упорядочение/обработка политики Android AOSP selinuxAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Упорядочение/обработка политики Android AOSP selinux

Сообщение Anonymous »

Когда люди создают свою собственную политику AOSP selinux, какова точная последовательность включения файлов? следующее репо:

https://android.googlesource.com/platfo ... icy/+/main
Если мы рассмотрим приведенную выше структуру репо, каков правильный способ включения всех файлов?

иногда мне казалось, что эта ссылка:

https://source.android.com/docs/securit ... inux/build

возможно, дает другую последовательность. Какие файлы предназначены для предварительной обработки m4 и какие другие файлы могут быть включены.
Может быть, следует отдать приоритет каким-либо файлам в списках файлов .te в каждой папке? Какую последовательность следует соблюдать для обеспечения максимальной безопасности?
Как необходимо упорядочить следующий список файлов/папок:
$ ls -l
total 168
-rw-rw-r-- 1 44485 Mar 30 21:00 Android.bp
drwxrwxr-x 2 4096 Mar 30 21:00 apex
-rw-rw-r-- 1 34 Mar 30 21:00 ashmem_compat_memfd_context.txt
drwxrwxr-x 7 4096 Apr 3 19:47 build
-rw-rw-r-- 1 7346 Mar 30 21:00 CleanSpec.mk
drwxrwxr-x 3 4096 Mar 30 21:00 compat
drwxrwxr-x 2 4096 Mar 30 21:00 contexts
drwxrwxr-x 2 4096 Mar 30 21:00 flagging
drwxrwxr-x 2 4096 Mar 30 21:00 mac_permissions
-rw-rw-r-- 1 128 Mar 30 21:00 METADATA
drwxrwxr-x 5 4096 Mar 30 21:00 microdroid
-rw-rw-r-- 1 0 Mar 30 21:00 MODULE_LICENSE_PUBLIC_DOMAIN
-rw-rw-r-- 1 1029 Mar 30 21:00 NOTICE
-rw-rw-r-- 1 225 Mar 30 21:00 OWNERS
drwxrwxr-x 3 4096 Mar 30 21:00 prebuilts
-rw-rw-r-- 1 177 Mar 30 21:00 PREUPLOAD.cfg
drwxrwxr-x 3 20480 Mar 30 21:00 private
drwxrwxr-x 2 4096 Mar 30 21:00 public
-rw-rw-r-- 1 2592 Mar 30 21:00 README.apps.md
-rw-rw-r-- 1 5945 Mar 30 21:00 README.md
drwxrwxr-x 2 4096 Mar 30 21:00 reqd_mask
-rw-rw-r-- 1 687 Mar 30 21:00 TEST_MAPPING
drwxrwxr-x 3 4096 Mar 30 21:00 tests
drwxrwxr-x 3 4096 Mar 30 21:00 tools
drwxrwxr-x 2 4096 Mar 30 21:00 treble_sepolicy_tests_for_release
drwxrwxr-x 2 4096 Mar 30 21:00 vendor
$ find ./public -type f ! -regex ".*\.\(te\|cil\)$"
./public/attributes
./public/ioctl_macros
./public/global_macros
./public/ioctl_defines
./public/roles
./public/te_macros
./public/nlmsg_defines
./public/nlmsg_macros
./public/neverallow_macros
$ find ./private -type f ! -regex ".*\.\(te\|cil\)$"
./private/attributes
./private/file_contexts_overlayfs
./private/users
./private/keys.conf
./private/security_classes
./private/port_contexts
./private/mls_decl
./private/mls
./private/tee_service_contexts
./private/access_vectors
./private/roles_decl
./private/mls_macros
./private/property_contexts
./private/service_contexts
./private/file_contexts
./private/file_contexts_asan
./private/keystore2_key_contexts
./private/fs_use
./private/mac_permissions.xml
./private/genfs_contexts
./private/initial_sid_contexts
./private/policy_capabilities
./private/bug_map
./private/initial_sids
./private/hwservice_contexts
./private/seapp_contexts
$

также возникают проблемы с cmd checkpolicy, например:
checkpolicy -M -C -c 35 -o policy.cil policy.conf
ERROR "syntax error"

в строках, которые начинаются с sid или genfscon. в основном это ошибки для любых ролей/пользователей/контекстно-ориентированных файлов.
Если вообще все такие файлы удаляются, то, наконец, в последней строке возникает ошибка, например:
ERROR "syntax error" at token code 0.

Источник https://github.com/SELinuxProject/selinux:
checkpolicy/policy_scan.l:
"*" { return(yytext[0]); }
{ yyterminate(); }
. { yyerror("unrecognized character");
/* Available since bison 3.6, avoids duplicate error message */
#ifdef YYerror
return YYerror;
#else
return INVALID_CHAR;
#endif
}
%%
int yyerror(const char *msg)
{
#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
const char *token;
char buf[8];

if (isprint((unsigned char)yytext[0])) {
token = yytext;
} else {
snprintf(buf, sizeof(buf), "%#x", yytext[0]);
token = buf;
}

if (source_file[0])
fprintf(stderr, "%s:%lu:",
source_file, source_lineno);
else
fprintf(stderr, "(unknown source)::");

/*
fprintf(stderr, "ERROR '%s' at token code '%s' on line %lu:\n%s\n%s\n ; EXTRA info : source_file '%s' ; yytext : '%s' ; yytext0 : '%s' ",
msg,
token,
policydb_lineno,
linebuf[0], linebuf[1], source_file, yytext, yytext[0]);
*/

fprintf(stderr, "ERROR '%s' at token code '%s' on line %lu:\n%s\n%s\n",
msg,
token,
policydb_lineno,
linebuf[0], linebuf[1]);

изменил приведенный выше исходный код, вставив:

"*" { return(yytext[0]); } { yyterminate(); } .

{ yyerror("нераспознанный символ");

регистр, чтобы избежать проблем с последней строкой (возможно, после удаления строк с ошибками). Все еще не решено.
В основном проблемы с синтаксисом возникают из-за таких частей:
selinux/checkpolicy/policy_parse.tab.c, как:
*---------------------------------------------------.
| yyerrorlab -- error raised explicitly by YYERROR. |
`---------------------------------------------------*/
yyerrorlab:

файлы типа checkpolicy/policy_scan.l содержат допустимые ключевые слова, например:
$ cat ./policy_scan.l | grep 'sid'
sid { return(SID); }
$ cat ./policy_scan.l | grep 'genfs'
genfscon |
$ cat ./policy_scan.l | grep 'GENFS'
GENFSCON { return(GENFSCON);}
$
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»