如何找出哪些寄存器受到Linux內核的保護,以防止用戶程序集寫入它們?哪些寄存器受到Linux用戶空間的保護?
回答
首先,請注意,Linux內核本身並不真正保護寄存器。它所做的只是確保用戶應用程序以特權級別3(最低特權)運行。從這一點來看,它是執行寄存器保護的處理器。
下面是從0級特權才能訪問寄存器列表(即,從內核):
- 控制寄存器(
CR0
-CR4
) GDTR
,LDTR
和IDTR
(全球/本地/中斷描述符表寄存器)TR
(任務寄存器)- 調試寄存器(
DR0
-DR7
) - 所有型號專用寄存器(
MSR
S)
你應該對在x86保護的詳細解釋讀取Intel's System Programming Manual第5章。
x86段寄存器(ss,cs,ds,es,fs,gs)對於用戶空間來說也不是完全公平的遊戲。 (據我所知,主要是隻讀; fs用於標識線程和索引到其線程本地存儲中,例如) – pmdj 2012-04-17 14:08:05
@pmjordan:謝謝。起初我沒有添加它們,因爲我似乎沒有找到任何有關這方面的官方文檔。我測試過,閱讀它們是允許的,直接書寫(通過'mov')不是。但是,我不確定是否允許間接編寫它們(例如通過遠程調用)。 – Job 2012-04-17 14:21:49
謝謝,我正在看那本手冊,感到不知所措。我需要展示正確的方向。所以我想知道,對於那些不提供這種保護的舊體系結構,更改這些寄存器不會是我採取的一個問題。在我看來,操作系統安全性與CPU架構安全功能一樣好。 – 2012-04-17 19:13:46
- 1. 訪問Linux用戶空間中的硬件寄存器
- 2. 通過Linux x86-64函數調用保留了哪些寄存器
- 3. MIPS中的浮點寄存器是哪些數字寄存器?
- 4. 硬件寄存器可以映射到用戶空間
- 5. intel 80386在哪裏保存寄存器?
- 6. Linux內核代碼空間寫保護
- 7. 訪問寄存器從用戶空間的物理地址
- 8. Linux-MIPS系統調用保存的寄存器?
- 9. 如何將用戶輸入數據保存到寄存器
- 10. 克隆受保護的邊緣受保護的驅動器
- 11. 哪些寄存器用於在solaris/linux中爲JNI方法傳遞JNIEnv?
- 12. 受保護的類成員訪問有哪些問題?
- 13. 受保護的成員可見用戶
- 14. 受保護的用戶ID來自ID
- 15. Linux如何處理(受保護的)內存區域?
- 16. 使用鏈接寄存器保護從stackoverflow攻擊嗎?
- 17. CA2221:終結器應該受到保護
- 18. MIPS寄存器保存
- 19. 更改linux內存保護
- 20. x86 cmp寄存器和內存 - 中間數據保存在哪裏?
- 21. 保護內核和用戶空間之間的共享內存段
- 22. 哪種資源受QMutex保護?
- 23. 我在哪裏可以存儲受保護的URL?
- 24. WordPress的 - 用戶登錄到特定的受保護的頁面
- 25. Linux內核空間和用戶空間
- 26. 哪些寄存器在函數中可以安全使用(x86)
- 27. 我如何知道哪些寄存器用於Mips程序
- 28. 在Linux上連接到來自Python的受保護WiFi
- 29. 拉動受保護帳戶的推文
- 30. Linux的QEMU重置寄存器
那麼,控制和調試寄存器通常只能在ring0中訪問,如果這是你的意思... – Damon 2012-04-17 07:17:59
哪個CPU架構? – JeremyP 2012-04-17 15:03:28
i386:x86_84是我的cpu。 – 2012-04-17 19:24:37