Raspberry Pi の IMA 測定では `boot_aggregate` のみ

Raspberry Pi の IMA 測定では `boot_aggregate` のみ

Raspberry Pi 3B+ で Integrity Measurement Architecture (IMA) を使用しようとしています。

私は以下のオプションでカーネルをコンパイルしました( で設定menuconfig

CONFIG_IMA=y
CONFIG_IMA_MEASURE_PCR_IDX=10
# CONFIG_IMA_TEMPLATE is not set
CONFIG_IMA_NG_TEMPLATE=y
# CONFIG_IMA_SIG_TEMPLATE is not set
CONFIG_IMA_DEFAULT_TEMPLATE="ima-ng"
# CONFIG_IMA_DEFAULT_HASH_SHA1 is not set
CONFIG_IMA_DEFAULT_HASH_SHA512=y
CONFIG_IMA_DEFAULT_HASH="sha512"
# CONFIG_IMA_WRITE_POLICY is not set
CONFIG_IMA_READ_POLICY=y
# CONFIG_IMA_APPRAISE is not set

CONFIG_INTEGRITY=y
# CONFIG_INTEGRITY_SIGNATURE is not set
CONFIG_INTEGRITY_AUDIT=y

ima_policy次のように設定します/boot/cmdline.txt

console=serial0,115200 console=tty1 root=PARTUUID=8e9714d8-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait ima_policy=tcb ima_policy=appraise_tcb

Raspberry は正常に起動し、IMA sysfs フォルダーにアクセスできます。

この/sysfs/kernel/security/ima/policyファイルを入手しました。

dont_measure fsmagic=0x9fa0 
dont_measure fsmagic=0x62656572 
dont_measure fsmagic=0x64626720 
dont_measure fsmagic=0x1021994 
dont_measure fsmagic=0x1cd1 
dont_measure fsmagic=0x42494e4d 
dont_measure fsmagic=0x73636673 
dont_measure fsmagic=0xf97cff8c 
dont_measure fsmagic=0x43415d53 
dont_measure fsmagic=0x27e0eb 
dont_measure fsmagic=0x63677270 
dont_measure fsmagic=0x6e736673 
dont_measure fsmagic=0xde5e81e4 
measure func=MMAP_CHECK mask=MAY_EXEC 
measure func=BPRM_CHECK mask=MAY_EXEC 
measure func=FILE_CHECK mask=^MAY_READ euid=0 
measure func=FILE_CHECK mask=^MAY_READ uid=0 
measure func=MODULE_CHECK 
measure func=FIRMWARE_CHECK 
measure func=POLICY_CHECK 
dont_appraise fsmagic=0x9fa0 
dont_appraise fsmagic=0x62656572 
dont_appraise fsmagic=0x64626720 
dont_appraise fsmagic=0x1021994 
dont_appraise fsmagic=0x858458f6 
dont_appraise fsmagic=0x1cd1 
dont_appraise fsmagic=0x42494e4d 
dont_appraise fsmagic=0x73636673 
dont_appraise fsmagic=0xf97cff8c 
dont_appraise fsmagic=0x43415d53 
dont_appraise fsmagic=0x6e736673 
dont_appraise fsmagic=0xde5e81e4 
dont_appraise fsmagic=0x27e0eb 
dont_appraise fsmagic=0x63677270 
appraise fowner=0 

これも/sysfs/kernel/security/ima/ascii_runtime_measurements1行だけで取得できました。

10 45e7e585a82d311e1ee226b4256604c341dbc6b9 ima-ng sha512:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 boot_aggregate

私の問題は、Raspberry Pi がファイルを測定していないように見えるのに、ascii_runtime_measurements多くの測定値を含むファイルを期待していたことです。

私が何を間違っているのか誰か知っていますか?

ご協力いただきありがとうございます。

答え1

カーネルの問題かもしれません。iinit.c でこれを変更してみてください。私の場合はうまくいきました。幸運を祈ります! 更新された部分が最初で、オリジナルが下にあります。<

 static void init_once(void *foo)
 {
    struct integrity_iint_cache *iint = foo;
 
    memset(iint, 0, sizeof(*iint));
    iint->ima_file_status = INTEGRITY_UNKNOWN;
    iint->ima_mmap_status = INTEGRITY_UNKNOWN;
    iint->ima_bprm_status = INTEGRITY_UNKNOWN;
    iint->ima_read_status = INTEGRITY_UNKNOWN;
    iint->ima_creds_status = INTEGRITY_UNKNOWN;
    iint->evm_status = INTEGRITY_UNKNOWN;
    mutex_init(&iint->mutex);
 }
 
 
    if (!iint_cache)
    {
        iint_cache =
        kmem_cache_create("iint_cache", sizeof(struct integrity_iint_cache),
                  0, SLAB_PANIC, init_once);
    }
 
 



static void init_once(void *foo)
 {
    struct integrity_iint_cache *iint = foo;
 
    memset(iint, 0, sizeof(*iint));
    iint->ima_file_status = INTEGRITY_UNKNOWN;
    iint->ima_mmap_status = INTEGRITY_UNKNOWN;
    iint->ima_bprm_status = INTEGRITY_UNKNOWN;
    iint->ima_read_status = INTEGRITY_UNKNOWN;
    iint->ima_creds_status = INTEGRITY_UNKNOWN;
    iint->evm_status = INTEGRITY_UNKNOWN;
    mutex_init(&iint->mutex);
 }

関連情報