GNU/Linux >> Linux の 問題 >  >> Linux

kvm:モジュールの検証に失敗しました:署名および/または必要なキーがありません - 汚染されたカーネル

カーネルを再構成する代わりに、このエラー (module verification failed ) を 1 行追加するだけで解決できます CONFIG_MODULE_SIG=n Makefile の先頭へ モジュール自体:

CONFIG_MODULE_SIG=n

# If KERNELRELEASE is defined, we've been invoked from the
# kernel build system and can use its language.
ifneq ($(KERNELRELEASE),)
    obj-m := hello.o

# Otherwise we were called directly from the command
# line; invoke the kernel build system.
else
    KERNELDIR ?= /lib/modules/$(shell uname -r)/build
    PWD := $(shell pwd)

default:
    $(MAKE) -C $(KERNELDIR) M=$(PWD) modules
endif

システムのベンダーがカーネルでカーネル モジュールの署名検証を有効にしているようです。つまり、ベンダーが署名していないモジュールはロードされません。つまり、パッチを適用したモジュールは (適切に) 署名されておらず、カーネルはそのモジュールの読み込みを拒否します。

これのポイントは、マルウェアとルートキットが悪意のあるカーネル モジュールをロードするのを防ぐことです。

ベンダーに連絡することをお勧めします。プラットフォームのどこかに署名チェックを無効にするオプションがあるかもしれません。そうしないと、ベンダーがモジュールに署名できる場合があります。鍵と署名検証アルゴリズムの詳細を知っていれば、自分で署名することもできます。

実行しているプラ​​ットフォームがわからないと、より具体的な提案をすることは困難です。


カーネル ソース ディレクトリに移動し、次の操作を行います (例):

./scripts/sign-file sha512 ./signing_key.priv ./signing_key.x509 /lib/modules/3.10.1/kernel/drivers/char/my_module.ko

カーネル 4.4.* の場合、キーの場所は次のようになります:

./scripts/sign-file sha512 ./certs/signing_key.pem ./certs/signing_key.x509 path/to/your/kernel/module.ko 

.config を開いて、カーネルが使用しているダイジェスト アルゴリズムを確認します そして CONFIG_MODULE_SIG でそれを読む 構成値。

CONFIG_MODULE_SIG=y CONFIG_MODULE_SIG_ALL=y CONFIG_MODULE_SIG_SHA512=y CONFIG_MODULE_SIG_HASH="sha512"

Linux
  1. Cythonという名前のモジュールがなく、cythonizeの実行に失敗しました[修正]

  2. Linux – Linuxの汚染されたカーネル?

  3. Pm-hibernateがフリーズしたり、Dell Xps 13、14.04、3.19カーネルで再開に失敗したりしますか?

  1. Linuxカーネルモジュールのmodule_initとinit_moduleの違いは何ですか?

  2. カーネル モジュール パラメータの変更 (/sys/module を使用)

  3. Linux の汚染されたカーネルとは何ですか?

  1. SPKAC公開鍵で署名の検証に失敗しました–OpenCAエラーを修正しました

  2. Pam –必要かつ十分な制御フラグ?

  3. Linux –カーネルモジュールを適切にリロードする方法は?