簡體   English   中英

kvm:模塊驗證失敗:缺少簽名和/或所需的密鑰 - 污染內核

[英]kvm: module verification failed: signature and/or required key missing - tainting kernel

我正在使用Ubuntu 14.04 LTS和內核版本3.13.11.4
我正在嘗試加載已修補的 KVM 模塊kvmkvm-intel ,但出現以下錯誤

kvm: module verification failed: signature and/or required key missing - tainting kernel
kvm: module has bad taint, not creating trace events

使用的源與創建我當前正在運行的映像的源相同。
我已經檢查了符號並確保錯誤不是由於在導出函數的修補文件中不包含EXPORT_SYMBOL_GPL()引起的。

我還看到了一些有關導致此錯誤的不同內核版本的內容,但我構建了啟動內核的內核,該內核使用與創建修補過的 kvm 模塊相同的源。
一切都在沒有警告的情況下編譯。 任何幫助表示贊賞!

無需重新配置內核,只需在模塊本身的Makefile頂部添加一行CONFIG_MODULE_SIG=n即可解決此錯誤( module verification failed ):

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

您的系統供應商似乎在您的內核上啟用了內核模塊簽名驗證,這意味着它不會加載供應商未簽名的任何模塊。 換句話說,您的修補模塊沒有簽名(正確)並且內核將拒絕加載它。

這樣做的目的是為了防止惡意軟件和 rootkit 加載惡意內核模塊。

我建議你聯系你的供應商。 您的平台上可能有一個選項可以禁用簽名檢查。 否則,您的供應商可能會為您簽署模塊。 您甚至可能擁有簽名驗證算法的密鑰和詳細信息,並且可以自己簽名。

在不知道您在哪個平台上運行的情況下,很難給出更具體的建議。

轉到內核源目錄並執行(例如):

./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"

通常,如果您正在構建自定義內核並使用make oldconfig 這將從 /boot 復制現有的 config-* 文件。 現在大多數內核模塊都需要由 linux 供應商簽名。 因此,在編譯內核之前,編輯 .config 並禁用 CONFIG_MODULE_SIG_ALL 和 CONFIG_MODULE_SIG。

CONFIG_MODULE_SIG=n
CONFIG_MODULE_SIG_ALL=n
# CONFIG_MODULE_SIG_FORCE is not set 
# CONFIG_MODULE_SIG_SHA1 is not set
# CONFIG_MODULE_SIG_SHA224 is not set
# CONFIG_MODULE_SIG_SHA256 is not set
# CONFIG_MODULE_SIG_SHA384 is not set

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM