Re: [情報] Intel嚴重漏洞 OS更新將會降低效能

看板PC_Shopping (個人電腦購買)作者 (function(){})()時間8年前 (2018/01/05 11:42), 8年前編輯推噓120(1222108)
留言232則, 121人參與, 最新討論串25/38 (看更多)
看了三天的 paper 終於看懂 Meltdown 怎麼做到的 Spectre 太複雜看不懂沒時間懶得看所以不談 首先我預設大家都知道 instruction-level paralleism 指令層級平行, superscalar 超純量, out-of-order execution 亂序執行, speculative execution 推測執行 他們之間的關聯為,為了達成 ILP 所以引入 superscalar。 但是資料相依性問題造成 superscalar 不能很好發揮,因此 引入 out-of-order execution 讓 CPU 挑鄰近的可以同時執 行的指令執行。再來 speculative execution 遇到條件分支 conditional branch 時先預測會進某個分支並執行。 除此之外還有 micro op,以下寫作 uop,則是把一個 instr- cution 拆成好幾個 uop 並把他丟下去跑。CPU 裡有好幾個不 同運算單元,包含算術運算、讀寫單元、分支單元,而且分別 都有複數分身可以同時執行。所以指令拆成 uop 以後先堆到 buffer 裡面,再丟到各個單元去跑。 把以上所有東西合起來就是,先解決資料相依性問題,挑幾個 鄰近的指令進來,拆成 uop,丟到 buffer,開始排程去跑, 並根據分支預測把可能的指令拿過來拆一拆一起下去跑。 接著 Meltdown 攻擊的問題點在於,當 user mode process 存取他不該存取的記憶體資料時,那個指令會產生一個例外 execption, 接著會產生一個中斷 interrupt 丟給 OS 去處理 這個例外。但因為以上幾個東西合在一起,其實指令的執行先 後順序是不一定的,有可能後面的跑一跑並且產生了一些副作 用,結果因為前面的指令產生例外,清空 buffer 與管線,雖 然暫存器 register 與記憶體都沒有寫入,理論上是當作沒發 生,可是卻有副作用發生了。這個副作用就是記憶體存取,會 先載入快取 cache。Layer 幾的快取其實不重要,因為重點是 它被載入快取中,所以存取時花費的時間一定比從記憶體存取 來的快。這個時間的差異就是洩漏出來的資訊。 考慮下面的指令 1 ; rcx = kernel address 2 ; rbx = probe array 3 retry: 4 mov al, byte [rcx] 5 shl rax, 0xc 6 jz retry 7 mov rbx, qword [rbx + rax] 在第四行會產生一個例外,但因為 OOOE 與推測執行,造成第 七行的讀取記憶體行為也執行了,它存取的資料被從記憶體中 搬入快取,但因為在第四行產生例外,因此 rbx 並沒有真的 被寫入資料。因為 rbx + rax 上的資料被移到快取了,它的 存取速度一定比其他在 probe array 裡的資料來的快,因此 只要掃一次整個 probe array 看看哪個資料存取速度比別的 快,再算出它與 probe array 起始位置的偏移量,就知道在 第四行中從 rcx 讀取到的 kernel data 是甚麼。 所以 KPTI 就是完全分離 kernel address 與 user address ,也就是 kernel space 的所有資料都不在 user space 中, 在 user space 讀資料都讀不到 kernel 資料,相對應的也不 會有例外產生。 --

12/10 18:52,
我之前也發生過很多次 yahoo本來就很爛 還外加奇摩
12/10 18:52

12/10 18:53,
之前即時通死都不讓我登入 後來我就改用MSN了...
12/10 18:53

12/10 18:53,
發現MSN也不給你登....
12/10 18:53

12/10 18:55,
就改登PTT了
12/10 18:55

12/10 18:57,
最近ptt也一直斷....
12/10 18:57

12/10 19:57,
只好掀桌出去裸奔了...
12/10 19:57
-- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.227.40.20 ※ 文章網址: https://www.ptt.cc/bbs/PC_Shopping/M.1515123762.A.27C.html

01/05 11:53, 8年前 , 1F
恩~跟我想的差不多
01/05 11:53, 1F

01/05 11:53, 8年前 , 2F
跟我想的一樣
01/05 11:53, 2F

01/05 11:55, 8年前 , 3F
原來是這樣
01/05 11:55, 3F

01/05 11:58, 8年前 , 4F
我很誠實的講 真的看不太懂 有文組的版本嗎?
01/05 11:58, 4F
總之就是一種側載攻擊 洪師傅, 不要跟他拼拳, 嘗試切他中路的概念

01/05 11:59, 8年前 , 5F
趕快推才不會被發現看不懂
01/05 11:59, 5F

01/05 11:59, 8年前 , 6F
看到組合語言就飄掉了... 囧>
01/05 11:59, 6F

01/05 12:01, 8年前 , 7F
我很認同,跟我看法一樣
01/05 12:01, 7F

01/05 12:02, 8年前 , 8F
微處理機概論、組合語言 頭好痛
01/05 12:02, 8F

01/05 12:02, 8年前 , 9F
就本來要授權的東西 你老闆說先做再來問我比較省事
01/05 12:02, 9F

01/05 12:04, 8年前 , 10F
這是簡介Intel如何偷吃步嗎XD
01/05 12:04, 10F

01/05 12:06, 8年前 , 11F
我的答案跟你一樣
01/05 12:06, 11F

01/05 12:08, 8年前 , 12F
嗯嗯跟我想的一樣
01/05 12:08, 12F

01/05 12:09, 8年前 , 13F
INTEL:我不是教你詐~
01/05 12:09, 13F

01/05 12:09, 8年前 , 14F
有人看得懂可以翻譯一下嗎
01/05 12:09, 14F

01/05 12:12, 8年前 , 15F
所以前面推文說的關閉cache就好是真的?
01/05 12:12, 15F

01/05 12:13, 8年前 , 16F
關不掉,那是硬體設計,而且真的拿掉快取那直接倒退
01/05 12:13, 16F

01/05 12:13, 8年前 , 17F
半世紀
01/05 12:13, 17F

01/05 12:14, 8年前 , 18F
沒錯........完全看不懂
01/05 12:14, 18F

01/05 12:15, 8年前 , 19F
不能關閉cache, 但是可以把cache清空
01/05 12:15, 19F

01/05 12:16, 8年前 , 20F
就像你去郵局存錢 正常流程 你要填單 然後把存款單+
01/05 12:16, 20F

01/05 12:16, 8年前 , 21F
甚麼時候清空就是重點了, 清空cache帶來效能拖累
01/05 12:16, 21F

01/05 12:16, 8年前 , 22F
看到組合語言就豆頁痛
01/05 12:16, 22F

01/05 12:17, 8年前 , 23F
錢+存款簿 送入櫃台 這樣~ 可是櫃台想加快速度
01/05 12:17, 23F

01/05 12:17, 8年前 , 24F
關掉快取? 這 你的CPU效能要回到20年之前吧
01/05 12:17, 24F

01/05 12:19, 8年前 , 25F
先拿你的存簿去打好 才收錢跟存單
01/05 12:19, 25F

01/05 12:20, 8年前 , 26F
這時候就產生問題了...不給錢然後存簿又打好給你了~
01/05 12:20, 26F

01/05 12:21, 8年前 , 27F
INTEL -20%
01/05 12:21, 27F

01/05 12:23, 8年前 , 28F
簡單的說就是 Intel 的 CPU 為了加快速度,會偷跑
01/05 12:23, 28F

01/05 12:23, 8年前 , 29F
後面的指令,所以當發現前面的指令有例外存取時,雖
01/05 12:23, 29F

01/05 12:24, 8年前 , 30F
然會清空後面偷跑的指令搬到快取的資料,但在搬到快
01/05 12:24, 30F

01/05 12:25, 8年前 , 31F
取到清空的這段期間就可能被其他惡意程序趁機存取到
01/05 12:25, 31F
還有 161 則推文
還有 7 段內文
01/05 20:27, 8年前 , 193F
時事必考題啊 (真的
01/05 20:27, 193F

01/05 21:19, 8年前 , 194F
01/05 21:19, 194F

01/05 21:52, 8年前 , 195F
01/05 21:52, 195F

01/05 22:12, 8年前 , 196F
每個字分開看,我看的懂
01/05 22:12, 196F

01/06 00:48, 8年前 , 197F
我看懂啦~就是牙膏工廠出包啦~XD (誤)
01/06 00:48, 197F

01/06 00:53, 8年前 , 198F
99推
01/06 00:53, 198F

01/06 01:08, 8年前 , 199F
01/06 01:08, 199F

01/06 01:49, 8年前 , 200F
01/06 01:49, 200F

01/06 09:18, 8年前 , 201F
我早說了 跟我想的差不多
01/06 09:18, 201F

01/06 12:47, 8年前 , 202F
ok
01/06 12:47, 202F

01/06 13:56, 8年前 , 203F
很好,這寫的很棒老師給你100分
01/06 13:56, 203F

01/07 03:52, 8年前 , 204F
推大大
01/07 03:52, 204F

01/11 03:13, 8年前 , 205F
好文推個
01/11 03:13, 205F

01/12 01:11, 8年前 , 206F
幹 我真的後悔當初計結沒有認真學 看超久終於有點懂
01/12 01:11, 206F

01/12 01:18, 8年前 , 207F
偷讀到的kernel資料 最終頂多只能留在cache
01/12 01:18, 207F

01/12 01:19, 8年前 , 208F
那麼要如何利用這個副作用 解析出那個資料呢
01/12 01:19, 208F

01/12 01:22, 8年前 , 209F
他的辦法就是 把資料直接當成偏移 試著讀取某個大陣
01/12 01:22, 209F

01/12 01:22, 8年前 , 210F
列的該偏移處
01/12 01:22, 210F

01/12 01:25, 8年前 , 211F
這樣做的話 在一切偷跑的行為都被撤銷之後
01/12 01:25, 211F

01/12 01:26, 8年前 , 212F
那個大陣列的該偏移處的資料仍然留在cache
01/12 01:26, 212F

01/12 01:27, 8年前 , 213F
大陣列裡的資料是啥不重要 重點是我們想知道那個偏
01/12 01:27, 213F

01/12 01:27, 8年前 , 214F
移是多少
01/12 01:27, 214F

01/12 01:28, 8年前 , 215F
為了做到這點 只要掃過大陣列 看讀到哪個偏移的時候
01/12 01:28, 215F

01/12 01:29, 8年前 , 216F
讀最快 就知道那個偏移是多少了
01/12 01:29, 216F

01/12 01:29, 8年前 , 217F
真的是神技耶
01/12 01:29, 217F

01/12 01:30, 8年前 , 218F
想到這種東西的人 不是天才 就是整天胡思亂想吧XD
01/12 01:30, 218F

01/12 01:40, 8年前 , 219F
然後我一直以為寫OS的人只要會讀ISA的手冊就好
01/12 01:40, 219F

01/12 01:40, 8年前 , 220F
不太需要管微架構運作的細節
01/12 01:40, 220F

01/12 01:41, 8年前 , 221F
現在感覺最好也要懂
01/12 01:41, 221F

01/17 11:58, 8年前 , 222F
我的理解有點像async 總之偷跑造成順序不對
01/17 11:58, 222F

02/06 12:19, 8年前 , 223F
台大真的考出來了xdd 朝聖
02/06 12:19, 223F

02/06 12:29, 8年前 , 224F
朝聖一下 幸好當初有follow到這篇
02/06 12:29, 224F

02/06 12:47, 8年前 , 225F
嗚嗚 考完才知道這篇
02/06 12:47, 225F

02/06 13:19, 8年前 , 226F
謝謝原po讓我多二十分
02/06 13:19, 226F

02/06 14:40, 8年前 , 227F
台大考了38分
02/06 14:40, 227F

02/06 16:54, 8年前 , 228F
朝聖
02/06 16:54, 228F

02/14 00:57, 8年前 , 229F
有考上要請客啊
02/14 00:57, 229F

03/13 12:44, 8年前 , 230F
正取惹,感謝大i皇賜我吃穿
03/13 12:44, 230F

08/24 14:09, 7年前 , 231F
神文二讀,花30分鐘看,計系72上台大
08/24 14:09, 231F

07/27 12:45, , 232F
推推
07/27 12:45, 232F
文章代碼(AID): #1QJlGo9y (PC_Shopping)
討論串 (同標題文章)
文章代碼(AID): #1QJlGo9y (PC_Shopping)