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

看板PC_Shopping (個人電腦購買)作者 (狀態:idle)時間8年前 (2018/01/05 15:18), 8年前編輯推噓1(106)
留言7則, 2人參與, 8年前最新討論串27/38 (看更多)
※ 引述《s25Ag5d4 (function(){})()》之銘言: : (刪) : 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 上的資料被移到快取了,它的 補充一下細節. 第四行一定會引發 exception,因為 user space application 不可以這樣 直讀取 kernel data。但是因為 OOOE 跟 superscalar, line 4 之後的指令也一並被拆解為 micro-ops 充份利用 CPU 上的運算單元 最後等 line 4 和後面的 uOPs 做完 in-order 回到 architecture state,發現 line 4 會有問題才 raise exception,並且把已經 OOOE 多做的資料清掉跟準備 發出 exception。但是這時會有 race condition 產生. 雖然 line 4 不允許被執行,但是後面的因為 uOPs 已經做了, rbx + rax 指向的資料已被搬進 cache。rbx 是自己程式記憶起頭,而 rax * 4096 就是 shift left 12, 避免預先讀進相鄰的 data 到 cache line 這時再利用以前的 paper 的 flush+reload 技巧把 cache 狀態讀出來 就可以知道 rcx 這個 byte 的值為何 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 24.6.217.218 ※ 文章網址: https://www.ptt.cc/bbs/PC_Shopping/M.1515136696.A.3AC.html ※ 編輯: jclin (24.6.217.218), 01/05/2018 15:19:54

01/05 15:21, 8年前 , 1F
感謝補充,uop 可以亂序執行,但 retirement 要一個
01/05 15:21, 1F

01/05 15:21, 8年前 , 2F
一個來,所以 line 7 的 retire 不會執行到,雖然
01/05 15:21, 2F

01/05 15:21, 8年前 , 3F
它的 uOP 已經跑完,但不會寫入 register
01/05 15:21, 3F

01/05 15:24, 8年前 , 4F
所以有寫 in order 回到 architecture state
01/05 15:24, 4F

01/05 15:25, 8年前 , 5F
其實我是想補關鍵字而已 XD
01/05 15:25, 5F

01/05 15:25, 8年前 , 6F
雖然是mov rbx但是不是這樣讀,還是要透過cache
01/05 15:25, 6F

01/05 15:25, 8年前 , 7F
side-channel attach 來判斷是讀了哪個資料
01/05 15:25, 7F
文章代碼(AID): #1QJoQuEi (PC_Shopping)
討論串 (同標題文章)
文章代碼(AID): #1QJoQuEi (PC_Shopping)