Re: [情報] Intel CPU漏洞導致64位元作業系統、虛擬化軟體易受駭客

看板PC_Shopping (個人電腦購買)作者 (funnynose)時間13年前 (2012/06/19 18:33), 編輯推噓25(2509)
留言34則, 25人參與, 最新討論串1/1
在過去AMD開發X86-64的指令集時,AMD並沒有真的把記憶體的位元數擴充到64bit 實際上只有到48bit(因為48bit已足夠定址256TB的記憶體,真實64bit需要6層的 pagetable、而48bit只需要4層pagetable)。 所以當記憶體儲存時,第48~63bit的值必須與第47bit的值相等(canonical form) 假使值不相等那就會回傳一個錯誤訊息(GP)。 現在的作業系統設計主要都是階層化設計,分為User mode、Priveleged mode 中間是透過SYSRET這個System Call做切換,一些比較重要的事情都必須在 Priveleged mode底下運行,而進行轉換這個動作主要是透過SYSRET執行,也是 這次問題發生之所在。 SYSRET 主會做以下2個動作 將RCX值賦予RIP(instruction pointer) 轉換為User mode 而RCX 是一個通用的register所以可以存取64bit之值 但是RIP是用作存取記憶體位置所以必須符合前述所說canonical form 針對這點,Intel與AMD都會針對這個值檢查的時機不同。 Intel是在轉換前做檢查,AMD是在轉換後。 假使不符合canonical form Intel會是在Priveleged mode傳回GP AMD會在User mode傳回GP 假使GP是在Userv mode時傳出,那Stack pointer會是一個由hypervisor給定 得值 但是假使GP是在Priveleged mode傳出那SP值會是當下的SP值也就是Priveleged mode 底下的SP值 但是SYSRET並不會做回復SP值這個動作,這個動作是由hypervisor執行,所以當GP 出現之前SP值已經被複製到當下的地方,所以有心要搞破壞的人,只需要促使 hypervisor 所接收到的RIP不符合canonical form那他就能任意修改SP的值,藉此 破壞。 其實早期的AMD處理器也有相同的問題,並不只有Intel。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.213.173

06/19 18:37, , 1F
專業推
06/19 18:37, 1F
※ 編輯: a40136 來自: 140.115.213.173 (06/19 18:39)

06/19 18:39, , 2F
推~但還是看不太懂XD...是會讓CPU當機嗎?
06/19 18:39, 2F
可以讓他當機,但是更狠一點,可以控制整台電腦 ※ 編輯: a40136 來自: 140.115.213.173 (06/19 18:40)

06/19 18:43, , 3F
是改變sp然後pop到駭客的程式取得最高權限?
06/19 18:43, 3F
把要注入的Code放在自己虛擬機的Stack,藉由以上手法使得code會在 Priveleged mode下運行。 ※ 編輯: a40136 來自: 140.115.213.173 (06/19 18:46)

06/19 18:46, , 4F
有列出受影響的AMD與Intel處理器嗎?
06/19 18:46, 4F
理論上只要修改作業系統針對層級切換所使用的system call就可以解決這個問題 Windows、Xen、FreeBSD、RedHat、NetBSD都已經有Patch,記得更新就沒事了 如果是企業用戶使用Linux系統建議可以參考一下KSplice,在事情爆發後不到12小時 就更新了,還不錯。 ※ 編輯: a40136 來自: 140.115.213.173 (06/19 19:04)

06/19 19:08, , 5F
問一下...這跟ring0有關係嗎?
06/19 19:08, 5F
Intel CPU權限分為4層Ring0~Ring3,依照Windows internal Window指使用了Ring0 Ring3,而這裡說的Priveleged mode可以就說是Ring0

06/19 19:56, , 6F
還是看不懂0.0
06/19 19:56, 6F
※ 編輯: a40136 來自: 140.115.213.173 (06/19 20:01)

06/19 20:33, , 7F
所以這問題AMD很早就解決了? Intel則是現在才解決嗎?
06/19 20:33, 7F
正確來說最早是AMD實做這個指令集Intel拿去用,或許AMD後來偷改過沒公布

06/19 20:38, , 8F
專業推 勉強看得懂,請問一下這類知識要看哪些書?
06/19 20:38, 8F
恐龍本會有最基本的作業系統概念,想進階就去了解Linux Kernal

06/19 20:45, , 9F
恐龍?
06/19 20:45, 9F
※ 編輯: a40136 來自: 140.115.213.173 (06/19 21:00)

06/19 21:01, , 10F
operating system concepts
06/19 21:01, 10F

06/19 21:02, , 11F
恐龍中文版翻得有好一點了嗎? XDDD
06/19 21:02, 11F

06/19 21:03, , 12F
Linux Kernel是推薦哪本書呢? 中文或原文都可以
06/19 21:03, 12F
Linux Kernel in a Nutshell有網路書

06/19 21:05, , 13F
先謝謝大大
06/19 21:05, 13F

06/19 21:19, , 14F
幸好看得懂,感謝大大分析XD
06/19 21:19, 14F
我只是大3的學生 ... 不是大大

06/19 21:21, , 15F
有名的 ring 0 security bug
06/19 21:21, 15F
※ 編輯: a40136 來自: 140.115.213.173 (06/19 21:27)

06/19 21:34, , 16F
推一下 專業
06/19 21:34, 16F

06/19 21:55, , 17F
要看還是看英文吧...中文超爛(懊悔)
06/19 21:55, 17F

06/19 21:59, , 18F
推一個~ 專業~~
06/19 21:59, 18F

06/19 22:02, , 19F
推一個
06/19 22:02, 19F

06/20 01:03, , 20F
...令人懷念的恐龍本= ="..
06/20 01:03, 20F

06/20 02:10, , 21F
念中文本要用英文文法 這樣可以省去單字翻譯時間
06/20 02:10, 21F

06/20 02:40, , 22F
完全沒碰過OS QQ
06/20 02:40, 22F

06/20 21:05, , 23F
您只是大三的學生的話 那您應該是可以用外星語跟教授
06/20 21:05, 23F

06/20 21:05, , 24F
對話的哪幾位學生了XDDD
06/20 21:05, 24F

06/20 23:36, , 25F
原po年紀輕輕,程度就相當不錯,厲害
06/20 23:36, 25F

06/21 11:26, , 26F
你是許老師學生嗎?
06/21 11:26, 26F
大學部還不用選教授吧,果進研究所會想跟許教授 ※ 編輯: a40136 來自: 140.115.213.173 (06/21 11:59)

06/21 14:02, , 27F
這以後會是個人才
06/21 14:02, 27F

06/21 16:26, , 28F
有前途:P
06/21 16:26, 28F

06/21 20:50, , 29F
懷念
06/21 20:50, 29F

06/22 01:27, , 30F
大大受我一拜!
06/22 01:27, 30F

06/22 01:47, , 31F
可以來我們實驗室教學嗎 :p 我是許老師學生 XD
06/22 01:47, 31F

06/22 01:47, , 32F
歡迎來我們實驗室呀 XD
06/22 01:47, 32F
博班的大大就不要開我玩笑了Orz ※ 編輯: a40136 來自: 140.115.213.173 (06/22 11:12)

06/23 15:39, , 33F
大大超強<(_ _)>
06/23 15:39, 33F

06/23 22:02, , 34F
大屁超無敵強!!!
06/23 22:02, 34F
小屁無敵強!!! ※ 編輯: a40136 來自: 140.115.213.173 (06/23 22:03)
文章代碼(AID): #1Fu5MAAp (PC_Shopping)
文章代碼(AID): #1Fu5MAAp (PC_Shopping)