IMA の測定を tsm-mr 経由で CC ランタイム測定レジスタに拡張するカーネルモジュール。
- 仕組み - IMA 計測の RTMR 拡張、IMA ログを起点とした順序保証、リプレイ検証、sysfs 診断
- IMA ポリシーの注意点 - ポリシーの書き込み順序、仮想ファイルシステムの除外
- 既知の問題 - ロード前エントリの不可視性、async window
- ビルドオプションの安全性 - Docker ビルドで使用する最適化オプションの安全性評価
CONFIG_TSM_MEASUREMENTS=y(Linux 6.16+ または tsm-mr パッチ適用済みカーネル)CONFIG_IMA=y,CONFIG_KPROBES=y,CONFIG_KRETPROBES=y
make
sudo insmod build/ima_rtmr.ko # 自動検出
sudo insmod build/ima_rtmr.ko mr_path=/sys/class/misc/tdx_guest/measurements/rtmr2:sha384カーネルモジュールは任意のタイミングでロードできます。ロード前の RTMR 値は
/sys/kernel/ima_rtmr/initial で参照でき、Verifier はこれをリプレイの baseline に使えます。
詳細は既知の問題を参照してください。
# パッチ適用(v6.17 / v7.0 に対応)
kernel/apply-patch.sh /path/to/linux 7.0
# menuconfig で CONFIG_IMA_RTMR=y を有効化してビルド
make menuconfig # Security -> Integrity -> IMA_RTMR
make
# パッチ除去
kernel/remove-patch.sh /path/to/linux 7.0Docker を使ってカーネルモジュールを組み込んだ Ubuntu 向けのカーネルパッケージをビルドできます。 詳細は ubuntu/README.md を参照してください。
Nix flake の devShell でビルド・フォーマットツール一式が揃います。
nix develop # gcc, make, kmod, treefmt (clang-format / shfmt) が利用可能
nix fmt # ソース全体をフォーマット.envrc を使う場合は direnv allow で自動的に devShell に入れます。
# モジュールロード前の RTMR 値は sysfs で参照可能
baseline=$(sudo cat /sys/kernel/ima_rtmr/initial)
# IMA 計測をトリガー(バイナリ実行やファイル読み取り等)
# ...
# RTMR リプレイ検証(skip=0 で IMA ログ先頭から再生)
sudo ./validate.py "$baseline" 0
# Bash実装 (遅いです)
sudo ./validate.sh "$baseline" 0sudo cat /sys/kernel/ima_rtmr/{disabled,extended_count,nmissed} でモジュール健全性を
確認できます。disabled=1 のときは RTMR と IMA ログの整合性が破綻しています。
詳細は 仕組み を参照してください。
Copyright (c) 2026 Acompany Co., Ltd.
本プロジェクトは GNU General Public License version 2 (GPL-2.0-only) の下で
配布されています。フルテキストは LICENSE を参照してください。
個々のファイルの先頭に SPDX-License-Identifier: GPL-2.0-only が記載されています。