安全風險?為什麼 ubuntu 在 /boot/initrd* 和 /boot/vmlinuz* 中套用奇怪的權限?

安全風險?為什麼 ubuntu 在 /boot/initrd* 和 /boot/vmlinuz* 中套用奇怪的權限?

initrd.img 都是 644,另一隻手的 vmlinuz 是 600。我認為其他發行版實際上做得正確。 vlinuz 中的內容都是公開的,其中沒有任何秘密。但是,initrd 可以包含各種自訂設置,這些設置在other無法root讀取其內容時可能會暴露攻擊面。而且,人們在進行全盤加密時,將luks key包含在initrd中也是一種趨勢。因此一定no! no!要把initrd設定為全域可讀。

這種設計背後的原因是什麼?為什麼 ubuntu 需要 initrd.img 全域可讀?有什麼功能依賴於此嗎?

希望有經驗的使用者告訴我如何在ubuntu下讓initrd.img永久為600。由於這些檔案是在內核更新期間自動產生的。也許添加一些腳本/etc/kernel/postinst.d/

答案1

我發現我的電腦上安裝的 20.04 和 22.04 之間存在差異。在 20.04 中,我看到您在問題中描述的行為,而在 22.04 中 initrd.img* 檔案具有 600 權限。

跌跌撞撞這個錯誤我檢查了文件/etc/initramfs-tools,發現22.04中存在但20.04中不存在相關文件:

~$ sudo cat /etc/initramfs-tools/conf.d/calamares-safe-initramfs.conf 
[sudo] password for mook: 
UMASK=0077
~$ ls -l /etc/initramfs-tools/conf.d/calamares-safe-initramfs.conf 
-rw------- 1 root root 11 Apr 25 02:53 /etc/initramfs-tools/conf.d/calamares-safe-initramfs.conf

所以我認為,這是您需要添加的文件以獲得 initrd.img* 文件的安全權限。

當然,這不會影響已經存在的 initramfs 映像,可用於chmod將其權限變更為 600。

答案2

核心和符號檔案以權限 0600 安裝,因此漏洞利用程式無法讀取這些檔案來了解攻擊中使用的位址或偏移量。這遠非萬無一失,因為攻擊者可以提前下載所有核心包並自行建立必要的偏移表,但這是額外的工作。

改變一下可能是有意義的預設 initramfs 權限,如 @mook765 的答案所述。如果您對此有強烈的感受,請提交錯誤報告。這help.ubuntu.com 有關全磁碟加密的文章包括此步驟以及如何將密鑰嵌入 initramfs 的建議。

對於不將其他檔案系統的密鑰材料嵌入其 initramfs 的使用者來說,預設值應該是安全的。 (我相信這是一個非常罕見的配置。)

相關內容