我正在準備電腦安全考試,我正在努力理解以下範例問題。
'解釋一下在 x86 上的 Ring 0 中運行和在 Linux 中以 UID 0 運行之間的區別。舉一個例子,說明其中一個可以實現,但另一個不能實現的功能。'
我目前的理解是,x86 上的 Ring 0 是最高特權的作業系統級別,核心程式碼在 Ring 0 中運行。以我目前對這些概念的理解,我不知道該如何回答這個問題。
請注意,這不是作業問題,也不是我評分的依據,它只是學習材料。
答案1
你的理解是正確的。 「Ring 0」是 x86 術語,表示處理器的核心模式。 「運行在ring 0」的意思是「核心程式碼」。
在安全性方面,進程(在任何UID下)可以完成的所有事情都可以由核心完成。有些事情從核心程式碼中做起來非常不方便,例如打開文件,但它們是可能的。
相反,在正常情況下,如果你可以在UID 0下運行程式碼,那麼你可以透過載入核心模組來運行核心程式碼。因此,在典型配置下,UID 0 和核心層級之間不存在安全屏障。然而,在進程中運行的程式碼仍然受到處理器用戶模式的限制:對外圍設備(包括磁碟、網路等)的每次存取仍然必須透過系統呼叫。電腦可以配置為具有不強大的 UID 0,例如: