LoadPin

LoadPin是一個Linux安全模組,它確保所有核心載入的檔案(模組、韌體等)都來自同一個檔案系統,期望該檔案系統由只讀裝置(如dm-verity或CDROM)支援。這允許具有經過驗證和/或不可更改的檔案系統的系統強制執行模組和韌體載入限制,而無需單獨簽名檔案。

LSM可以在構建時透過CONFIG_SECURITY_LOADPIN選擇,並且可以在啟動時使用核心命令列選項“loadpin.enforce”進行控制。預設情況下,它是啟用的,但可以在啟動時停用(“loadpin.enforce=0”)。

LoadPin在看到第一個檔案載入時開始鎖定。如果支援檔案系統的塊裝置不是隻讀的,則會建立一個sysctl來切換鎖定:/proc/sys/kernel/loadpin/enabled。(具有可變的檔案系統意味著鎖定也是可變的,但是擁有sysctl允許在具有可變檔案系統的系統上進行輕鬆測試。)

也可以使用核心命令列選項“loadpin.exclude”從LoadPin中排除特定的檔案型別。預設情況下,所有檔案都包含在內,但可以使用核心命令列選項(例如“loadpin.exclude=kernel-module,kexec-image”)將其排除。這允許使用不同的機制,例如CONFIG_MODULE_SIGCONFIG_KEXEC_VERIFY_SIG來驗證核心模組和核心映像,同時仍然使用LoadPin來保護核心載入的其他檔案的完整性。有效檔案型別的完整列表可以在include/linux/kernel_read_file.h中定義的kernel_read_file_str中找到。