跳至內容

內核頁表隔離

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書

內核頁表隔離Kernel page-table isolation,縮寫KPTI,也簡稱PTI,舊稱KAISER)是Linux內核中的一種強化英語Hardening (computing)技術,旨在更好地隔離用戶空間與內核空間的內存來提高安全性,緩解現代x86 CPU中的「熔毀(Meltdown)」硬件安全缺陷。[1][2]

前身

[編輯]

KPTI補丁基於KAISER,它是一個用於緩解不太重要問題的早期補丁,當時業界還未了解到Meltdown的存在。

如果沒有KPTI,每當執行用戶空間代碼(應用程序)時,Linux會在其分頁表中保留整個內核內存的映射,並保護其訪問。這樣做的優點是當應用程序向內核發送系統調用或收到中斷時,內核頁表始終存在,可以避免絕大多數上下文交換相關的開銷(TLB刷新、頁表交換等)。

2005年,Linux內核採用了位址空間配置隨機載入(KASLR)隱匿用戶空間中的相關內核地址,增加了利用其他內核漏洞的難度[3][4]。儘管阻止了對這些內核映射的訪問,但在此後發現,現有的英特爾x86處理器(截至2017年12月[5])還存在着多處可能泄露這些內存位置的旁路攻擊,可能繞過KASLR。[2][6][7][8]AMD稱其處理器不受這些攻擊的影響,所以不需要KPTI作為緩解措施。[9][10][11][12][9][10][11]

Meltdown漏洞與KPTI

[編輯]

2018年1月,影響Intel x86處理器的熔毀漏洞被公布。KAISER補丁改為修復此問題,並更名為KPTI,因為新型攻擊很類似,儘管更為嚴重。

實現

[編輯]

KPTI通過完全分離用戶空間與內核空間頁表來解決頁表泄露。支持進程上下文標識符(PCID)特性的x86處理器可以用它來避免TLB刷新,但即便如此,它依然有很高的性能成本。據KAISER原作者稱,其開銷為0.28%[2];一名Linux開發者稱大多數工作負載下測得約為5%,但即便有PCID優化,在某些情況下開銷高達30%。[1]

KPTI在2018年早期被合併到Linux內核4.15版[13][14],並被反向移植到Linux內核4.14.11。Windows[15]macOS[16]也發布了類似的更新。

使用內核啟動選項「pti=off」可以部分禁用內核頁表隔離。依規定也可對已修復漏洞的新款處理器禁用內核頁表隔離[13]

參見

[編輯]

參考文獻

[編輯]
  1. ^ 1.0 1.1 Corbet, Jonathan. KAISER: hiding the kernel from user space. LWN.net. 15 November 2017 [2018-01-03]. (原始內容存檔於2020-12-08). 
  2. ^ 2.0 2.1 2.2 Gruss, Daniel; Lipp, Moritz; Schwarz, Michael; Fellner, Richard; Maurice, Clémentine; Mangard, Stefan. KASLR is Dead: Long Live KASLR (PDF). Engineering Secure Software and Systems 2017. 24 June 2017 [2018-01-03]. (原始內容存檔 (PDF)於2018-06-28). 
  3. ^ Dang, Alan. The NX Bit And ASLR - Behind Pwn2Own: Exclusive Interview With Charlie Miller. Tom's Hardware. 25 March 2009 [2017-12-29]. (原始內容存檔於2023-08-11) (英語). 
  4. ^ Bhattacharjee, Abhishek; Lustig, Daniel. Architectural and Operating System Support for Virtual Memory. Morgan & Claypool Publishers. 29 September 2017: 56. ISBN 9781627059336 (英語). 
  5. ^ 騰訊科技. 英特尔CPU爆惊天漏洞:全球PC面临最高30%“降速”. 財經網. 2018-01-03 [2018-01-03]. (原始內容存檔於2018-01-04) (中文(中國大陸)). 
  6. ^ Jang, Yeongjin; Lee, Sangho; Kim, Taesoo. Breaking Kernel Address Space Layout Randomization with Intel TSX (PDF). 2016 ACM SIGSAC Conference on Computer and Communications Security. CCS '16 (New York, NY, USA: ACM). 2016: 380–392 [2018-01-03]. ISBN 9781450341394. doi:10.1145/2976749.2978321. (原始內容存檔 (PDF)於2020-09-21). 
  7. ^ Gruss, Daniel; Maurice, Clémentine; Fogh, Anders; Lipp, Moritz; Mangard, Stefan. Prefetch Side-Channel Attacks: Bypassing SMAP and Kernel ASLR (PDF). 2016 ACM SIGSAC Conference on Computer and Communications Security. CCS '16 (New York, NY, USA: ACM). 2016: 368–379 [2018-01-03]. ISBN 9781450341394. doi:10.1145/2976749.2978356. (原始內容存檔 (PDF)於2020-08-17). 
  8. ^ Hund, R.; Willems, C.; Holz, T. Practical Timing Side Channel Attacks against Kernel Space ASLR (PDF). 2013 IEEE Symposium on Security and Privacy. May 2013: 191–205 [2018-01-03]. doi:10.1109/sp.2013.23. (原始內容存檔 (PDF)於2020-11-09). 
  9. ^ 9.0 9.1 Lendacky, Tom. Do not enable PTI on AMD processors. 26 December 2017 [2018-01-03]. (原始內容存檔於2020-11-09). 
  10. ^ 10.0 10.1 Gleixner, Thomas. x86/cpu, x86/pti: Do not enable PTI on AMD processors. 3 January 2018 [2018-01-04]. (原始內容存檔於2020-06-28). 
  11. ^ 11.0 11.1 An Update on AMD Processor Security. 4 January 2018 [2018-01-04]. (原始內容存檔於2018-03-17). 
  12. ^ IT之家. AMD谈Intel芯片漏洞:我们没受影响. 鳳凰資訊. 2018-01-04 [2018-01-04]. (原始內容存檔於2018-01-05). 
  13. ^ 13.0 13.1 Corbet, Jonathan. Kernel page-table isolation merged. LWN.net. 20 December 2017 [2018-01-03]. (原始內容存檔於2020-10-31). 
  14. ^ Larabel, Michael. KAISER Getting Ready To Better Protect The Linux Kernel. Phoronix. 27 November 2017 [2018-01-03]. (原始內容存檔於2020-10-19). 
  15. ^ Alex Ionescu [@aionescu]. Windows 17035 Kernel ASLR/VA Isolation In Practice (推文). 14 November 2017 –透過Twitter. 
  16. ^ Apple has already partially implemented fix in macOS for 'KPTI' Intel CPU security flaw. AppleInsider. [2018-01-03]. (原始內容存檔於2018-01-11) (美國英語). 

外部連結

[編輯]