顯示廣告
隱藏 ✕
※ 本文為 terievv 轉寄自 ptt.cc 更新時間: 2018-01-06 16:28:24
看板 PC_Shopping
作者 s25g5d4 (function(){})()
標題 Re: [情報] Intel嚴重漏洞 OS更新將會降低效能
時間 Fri Jan  5 11:42:38 2018


看了三天的 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 資料,相對應的也不
會有例外產生。


--
eggimage:我之前也發生過很多次 yahoo本來就很爛 還外加奇摩12/10 18:52
madeinchina:之前即時通死都不讓我登入 後來我就改用MSN了...12/10 18:53
eggimage:發現MSN也不給你登....12/10 18:53
madeinchina:              就改登PTT了12/10 18:55
eggimage:最近ptt也一直斷....12/10 18:57
freely10469:                只好掀桌出去裸奔了...12/10 19:57

--
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.227.40.20
※ 文章代碼(AID): #1QJlGo9y (PC_Shopping)
※ 文章網址: https://www.ptt.cc/bbs/PC_Shopping/M.1515123762.A.27C.html
ivan761016  : 恩~跟我想的差不多1F 01/05 11:53
DsLove710   : 跟我想的一樣2F 01/05 11:53
Angrboda    : 原來是這樣3F 01/05 11:55
henry46277  : 我很誠實的講 真的看不太懂  有文組的版本嗎?4F 01/05 11:58

總之就是一種側載攻擊
洪師傅, 不要跟他拼拳, 嘗試切他中路的概念

gg068187    : 趕快推才不會被發現看不懂5F 01/05 11:59
aeolus0829  : 看到組合語言就飄掉了... 囧>6F 01/05 11:59
Mankind69   : 我很認同,跟我看法一樣7F 01/05 12:01
qxxrbull    : 微處理機概論、組合語言 頭好痛8F 01/05 12:02
Apache      : 就本來要授權的東西 你老闆說先做再來問我比較省事9F 01/05 12:02
doom3       : 這是簡介Intel如何偷吃步嗎XD10F 01/05 12:04
ycc1227     : 我的答案跟你一樣11F 01/05 12:06
tongigun    : 嗯嗯跟我想的一樣12F 01/05 12:08
StarHero    : INTEL:我不是教你詐~13F 01/05 12:09
DKPCOFGS    : 有人看得懂可以翻譯一下嗎14F 01/05 12:09
iceyang     : 所以前面推文說的關閉cache就好是真的?15F 01/05 12:12
s25g5d4     : 關不掉,那是硬體設計,而且真的拿掉快取那直接倒退16F 01/05 12:13
s25g5d4     : 半世紀
gekidou     : 沒錯........完全看不懂18F 01/05 12:14
chrisdar    : 不能關閉cache, 但是可以把cache清空19F 01/05 12:15
StarHero    : 就像你去郵局存錢 正常流程 你要填單 然後把存款單+20F 01/05 12:16
chrisdar    : 甚麼時候清空就是重點了, 清空cache帶來效能拖累21F 01/05 12:16
nn3356      : 看到組合語言就豆頁痛22F 01/05 12:16
StarHero    : 錢+存款簿 送入櫃台 這樣~  可是櫃台想加快速度23F 01/05 12:17
Shauter     : 關掉快取? 這 你的CPU效能要回到20年之前吧24F 01/05 12:17
StarHero    : 先拿你的存簿去打好 才收錢跟存單25F 01/05 12:19
StarHero    : 這時候就產生問題了...不給錢然後存簿又打好給你了~
jinshun     : INTEL -20%27F 01/05 12:21
xxtomnyxx   : 簡單的說就是 Intel 的 CPU 為了加快速度,會偷跑28F 01/05 12:23
xxtomnyxx   : 後面的指令,所以當發現前面的指令有例外存取時,雖
xxtomnyxx   : 然會清空後面偷跑的指令搬到快取的資料,但在搬到快
xxtomnyxx   : 取到清空的這段期間就可能被其他惡意程序趁機存取到
xxtomnyxx   : 這個高層級的資料。
vash0319    : 嗯 跟我想的一樣......果然看不懂33F 01/05 12:26
kuma660224  : 只有intel愛搶快偷吃步。34F 01/05 12:26
iip06112    : 看不懂shl這行的意思 可以讀出kernel data嗎35F 01/05 12:26

就是讓 rax 的值乘以 4096, 以對齊 page size

orze04      : 看程式碼反而比較好懂 囧36F 01/05 12:26
xxtomnyxx   : 呃....應該說,因為資料還是有搬到快取留下的足跡,37F 01/05 12:27
xxtomnyxx   : 所以可以去查閱那筆資料
kira925     : 不是只有Intel偷吃步 而是Intel偷得步比較多39F 01/05 12:28
kira925     : 不管Meltdown還是Spectre都是抓這種行為
kira925     : 只是Intel偷得更兇 所以額外有Meltdown
xxtomnyxx   : shl 是把暫存器資料往高位元偏移的指令42F 01/05 12:29
orze04      : rax rbx那些是暫存器43F 01/05 12:29
KotoriCute  : 這些步驟現代高性能都有實作,所以Spectre每家都中44F 01/05 12:32
xxtomnyxx   : 我確認一下,rax 和 rbx 是 x64 的暫存器寫法吧?45F 01/05 12:32

x86 一個 word 是 16 bits
al 代表 lower-byte, ah 代表 upper-byte
ax 代表整個 word (2 bytes)
eax 代表兩個 word (4 bytes)
rax 代表四個 word (8 bytes = 64 bits)

Tsai07      : 原來如此,寫的真是淺顯易懂46F 01/05 12:32
linph       : 淺顯易懂推47F 01/05 12:32
xxtomnyxx   : 我學的組合語言是 x86 的,沒印象有 rax、rbx 這個48F 01/05 12:32
KotoriCute  : 但Intel的實作方式比其他人更激進,所以Meltdown只49F 01/05 12:32
s08glen     : 資工系菜比八表示欣慰,這學期學的課程讓我看得懂50F 01/05 12:32
KotoriCute  : Intel有51F 01/05 12:32
qxxrbull    : 偷的步多和少是哪邊的差別?52F 01/05 12:33
Bencrie     : rax rbx 就 64bits 的 eax ebx53F 01/05 12:34
xxtomnyxx   : 我猜是處理例外中斷和處理偷吃步程序的優先順序?54F 01/05 12:35
saito2190   : 看得懂推55F 01/05 12:36
Litfal      : 這些激進的廢掉,或是另外加防禦,會不會把原本領先56F 01/05 12:38
Litfal      : 的IPC吐回去阿...
kuma660224  : 改硬體,不會像軟體補丁損失這麼大58F 01/05 12:39
kuma660224  : RYZEN沒有激進到Meldown,效能也不弱
jk01        : 從旁側擊的蓋念60F 01/05 12:41
KotoriCute  : Google和Amazon說更新Fix後沒有明顯性能下降,大家61F 01/05 12:41
KotoriCute  : 可以回家啦
kuma660224  : Spectre看起來風險小到可忽略。各家都中但不一定要63F 01/05 12:41
kuma660224  : 改
KotoriCute  : Spectre 不是可以忽略,而是要補了話難度更大65F 01/05 12:43
Cubelia     : 專業66F 01/05 12:43
cabin2501   : 好猛 看不懂但是有一個結論:以後買AMD67F 01/05 12:43
iip06112    : 請問為什麼算出偏移量就能知道kernel data 另外 rax68F 01/05 12:43
iip06112    : +rbx附近(那個block)的資料也會一併被搬到快取中吧
iip06112    : ?

第四行中從 rcx 中的位址讀入資料 = 84 好了

先把 84 * 4096 來對齊 4K page size

接著讀取 rbx + 84*4096 的資料

此時整個 page 會被載入 cache 中 (4096 byte)

probe_array 要對齊 4K page size,它的起始位置要在 page 開頭

接著每 4K 資料就又是另一個 page

從頭掃一次 probe_array 看看到哪個 page 速度最快

因為第 84 個 page 在上面說的,被載入到 cache 中

所以掃到第 84 個 page 的時候明顯比其他 page 快

這樣就算出偏移量 = 84, 所以 rcx 中的位址的資料就等於 84

KotoriCute  : 要解決Spectre,OS和軟體這兩個都要更新71F 01/05 12:44
KotoriCute  : 處理起來比Meltdown更麻煩
kuma660224  : Spectre is harder for hackers to take advantage73F 01/05 12:45
kuma660224  :  of
kuma660224  : but is also harder to fix
kuma660224  : 就是S很難真正出問題,但難靠軟體解決風險。
KotoriCute  : Google 測試沒有說 Spectre 可以忽略不管77F 01/05 12:46
iceyang     : 有沒有人能舉個例子 平時上網駭客如何主動透過這漏78F 01/05 12:47
iceyang     : 洞攻擊並竊取我們本地端的資料
KotoriCute  : 不過 Meltdown 是"馬上""立刻"要解決的問題80F 01/05 12:47
kuma660224  : 理論上當然不能不管,但短期也不會出啥問題81F 01/05 12:47
kuma660224  : Meltdown才是馬上嚴重要立即解決
KotoriCute  : 現在雲端廠已經出來說,更新Meltdown fix 沒有明顯83F 01/05 12:48
KotoriCute  : 性能下降了
KotoriCute  : 要期待Intel 在Server領域崩盤,看來可能性不大了
MrDisgrace  : 難道要承認效能變慢 買時間的客戶不出來靠北退費86F 01/05 12:52
kira925     : 這幾天Phoronix的更新測試是大概差3~5%拉87F 01/05 12:52
kira925     : 至於廠商會不會講有差 講有差他要被狗幹當然說沒
Lansbury    : 笑了 解決方案的廠商怎麼敢將自己方案有問題89F 01/05 12:53
ChangWufei  : 表面河蟹 私下I皇不知道要割多少肉解決90F 01/05 12:55
kuma660224  : 實測若3-5%已蠻嚴重。接近一年份的牙膏。91F 01/05 12:55
kuma660224  : 不過哪家廠商敢出面說嚴重,得罪i皇不是小事
hl4         : probe array是直接對應cache 的位址嗎93F 01/05 12:58

不是... 隨便找個地方塞一個很大的 array 而已
但一定要跟 page 對齊

BusterWu    : 嗯嗯 這篇文章是用中文嗎 我怎麼看不懂94F 01/05 12:58
JoyRex      : Ryzen真的要飛天了,就算拉到5G打個20%也沒啥優勢95F 01/05 13:00
orze04      : al是rax裡的一段 shift rax也會等量shift al96F 01/05 13:00
arrenwu     : 如果差5% 其實是還好啦XD97F 01/05 13:01
cka         : 完了我看不懂98F 01/05 13:01
※ 編輯: s25g5d4 (36.227.40.20), 01/05/2018 13:04:02
friedpig    : Azure也是炒翻天的時候就出來澄清沒事了 少部分99F 01/05 13:03
friedpig    : 用戶網路會有點影響  但是有我們好棒棒的免費網路
friedpig    : 加速服務可以幫你把影響抵銷甚至更快喔
hakugetsu   : 我有個朋友在Azure的機器被reboot之後掛掉惹..QQ102F 01/05 13:05
ariadne     : 現在進入上下交相賊的狀況 喬好表面就雲淡風輕103F 01/05 13:06
DANTEINFERNO: 真der 5%也不過差一個世代 還好8代多了2核 像7代只104F 01/05 13:06
DANTEINFERNO: 能當6代用 幫QQ
ariadne     : 看新的採購案AMD數量變化就知道真假106F 01/05 13:06
friedpig    : Azure還沒正式上更新吧 表定是1/10107F 01/05 13:07
GJME        : azure的機器好像昨天會被強制重開 昨天有看到災情QQ108F 01/05 13:08
MrDisgrace  : 搞不好折扣給很大下次還是買IntelXD109F 01/05 13:08
ken720331   : 下次買打5折110F 01/05 13:08
friedpig    : 好像有這件事 沒寫Script的機器服務斷掉了111F 01/05 13:09
Marxing     : 恩恩 跟我想的一樣112F 01/05 13:12
jones2011   : 等等看intel的cpu 9代相對8代的性能提升...大致上113F 01/05 13:12
jones2011   : 能當作被調降性能的最大值>.0
MrDisgrace  : 會這麼快解嗎?P4都能賣了有什麼賣不動XD115F 01/05 13:14
friedpig    : 沒注意到今天有多發一封信 還真的緊急提早patch了116F 01/05 13:15
NCKU        : 看到組語 直接end117F 01/05 13:17
n19605gh    : 未看留言就知道會有跟我想的一樣118F 01/05 13:19
tontonplus  : 跟我預想的差不多耶119F 01/05 13:19
Shauter     : 9代硬體會修嗎? 這應該不是步進就能修好的120F 01/05 13:19
Shauter     : 應該10代才會修好整個分支預測喔 9代我猜是遮蔽?
show95175300: 恩 跟我想的一樣122F 01/05 13:22
pig         : 雲端業者是在賣計算力的,當然要先喊影響不大啦123F 01/05 13:26
eternal3326 : 我也這麼覺得124F 01/05 13:28
EAFV        : 新聞報那麼大 不趕快更新到時候就真的有攻擊災情了125F 01/05 13:32
Ekmund      : 推理解126F 01/05 13:39
NDSLite     : 不更新會被竊取密碼嗎127F 01/05 13:39
oil01       : 等有人被攻擊產生損失就崩潰了128F 01/05 13:44
chenszhanx  : 不更新winrar密碼會被繞過去129F 01/05 13:44
wei115      : 不太懂,為什麼知道資料是否放在快取裡就能知道資料130F 01/05 13:45
wei115      : ?
jeff40108   : 因為他有refrence要偷的資料的其中一個bit132F 01/05 13:47
JoyRex      : ATM密碼通通被安德烈搞定133F 01/05 13:48
larailing   : 家裡門不關小偷會上門嗎 跟 小偷根本不會來妳家偷134F 01/05 13:49
jaid        : Speculative Execution/OOOE是現代高效能處理器必備135F 01/05 14:01
jaid        : 並不是只有Intel這樣搞,只是Intel權限檢查沒弄好
tactical    : 快推,但我還是看不懂137F 01/05 14:06
aegis43210  : 影響至少5%,牙膏說用戶會習慣的138F 01/05 14:07
kobe8112    : wiki英文解釋的也算淺顯吧,可以再搭配著看139F 01/05 14:08
ericinttu   :                       會習慣謊言的140F 01/05 14:08
karen71014  : 先推才不會被發現看不懂141F 01/05 14:12
tactical    : 這個會影響CHROME瀏覽器下GOOGLE帳號被盜用嗎??142F 01/05 14:24
giraffe4527 : 推解釋很清楚 看完這篇終於可以理解問題在哪了143F 01/05 14:32
giraffe4527 : 是說銀行金融機密機關伺服器要先擔心吧
CactusFlower: 你484偷看我ㄉ筆記本 跟我想的差不多145F 01/05 14:35
JoeyChen    : wow 偷看筆記本? 可以簡化成這個概念嗎 XD146F 01/05 14:39
william1978a: 大家都是一般使用者影響不大 可是何謂一般使用者@@147F 01/05 14:45
william1978a:  影片剪輯跟開實況算嗎?
soarling    : 嗯嗯 我想的…看不懂 給推149F 01/05 14:46
felaray     : 公有雲只是提供運算資源給租用戶,不是直接租用機器,150F 01/05 14:50
felaray     : 效能應該不會有影響吧?
oil01       : 公有雲不影響....那他幹嘛買那麼多好設備買i3就好152F 01/05 15:04
oil01       : 啦
winiel559   : 白算盤唸完半本 還算看得懂 呼154F 01/05 15:07
jasonkey123 : 大陸人都用鍵盤側錄程式,強多了....155F 01/05 15:08
iip06112    : 好像懂了感謝耐心解釋 所以是第四行在讀出資料且還156F 01/05 15:17
iip06112    : 沒造成exception的時候就已經把讀出的資料forwordin
iip06112    : g給後面的幾行指令了是嗎 那是不是把exception的步
iip06112    : 驟提前的話就能解決啊
s25g5d4     : 問題在 memory fetch 的時候就該擋下來160F 01/05 15:18
abdgmnzc    : 理組:找原po可能講錯的地方 文組:果然跟我想的一161F 01/05 15:18
abdgmnzc    : 樣
s25g5d4     : 那我肯定是文組的 QQ163F 01/05 15:20
felaray     : 我是說公有雲的租用戶不影響,提供商當然影響到慘了164F 01/05 15:38
felaray     : 阿...白白損失這麼多運算能力
AMD640      : 終於要飛天啦166F 01/05 15:40
Jokering5566: 可以翻譯成文組看得懂的嗎167F 01/05 15:47
RIFF        :168F 01/05 15:47
reaturn     : 完全看不懂169F 01/05 15:49
canblow     : 恩恩 跟我想得一模一樣170F 01/05 15:53
user1120    : 推171F 01/05 15:57
willion003  : 我坦誠我看完大概還是不懂…172F 01/05 15:57
commandoEX  : 這樣說的話有亂數執行的CPU應該都有問題?173F 01/05 16:07
sdbb        : 樓上說的對,所以intel也拼命拖AMD下水174F 01/05 16:18
twlin       : 這個跟亂序執行沒有關係,是因為intel在執行前沒有175F 01/05 16:23
twlin       : 檢查權限,乖乖跟AMD一樣先檢查再執行就沒事
winiel559   : 請問跟亂序執行沒關係 就只是pipeline的問題嗎177F 01/05 16:26

跟 pipeline 也沒關係,跟亂序執行算有關系但不是亂序執行的鍋

從 rcx (kernel address) 讀資料,再把讀出來的資料乘以 4096 (shift 12),

再去存取 rbx + 上面算出來的值,三個步驟是有相依性的

首先因為預測執行的關係這個分支的指令被認為可以先試著執行

注意指令被抓進來後會拆成 uop 才排到 reorder buffer 裡

指令被拆成 uop 後,亂序執行允許來自不同指令的 uop 不照順序執行

但是因為上述幾個步驟有相依性,還是要照步驟一二三執行

正常的設計是第一步存取記憶體時就該停下來,但 Intel 設計是先跑完再檢查

所以造成上面三個步驟都跑完了(或至少跑了部分),產生一些副作用

最後 uop 執行完,還是要照指令順序把結果依序寫到該寫入的地方

這一步稱為 instruction retirement,Intel 在 retire 階段才檢查權限

因此雖然不該寫入的東西確實沒被寫進暫存器,但它還是有執行讀取的動作

而且不只讀取了不該讀取的東西,還讓它繼續運算下去(第二、三步驟)

造成在第三步驟的時候 probe array 裡有資料被移到快取中

只要找到是哪一個資料,就能推敲出那個不該讀取的資料是甚麼

注意我上面稱為步驟是因為每個步驟其實可能不只一個 uop。


Windcws9Z   : 亂序執行是會有Spectre漏洞178F 01/05 16:34
Windcws9Z   : 不是Meltdown
kipi91718   : 這樣讓文組看懂很難吧 讀CS的也需要融會貫通才懂180F 01/05 16:44
pilitiger   : 趕緊推文!181F 01/05 16:45
※ 編輯: s25g5d4 (36.227.40.20), 01/05/2018 16:46:48
HarryCheng  : 詳細推182F 01/05 17:13
kji590929   : 嗯嗯 我也是這麼覺得183F 01/05 17:42
ken841520   : 這時候就要感謝我唸的大學CS把組語列為必修科目了184F 01/05 17:45
ken841520   : 總之就是Intel sucks!
michelin4x4 : 又看到ASM 頭會痛痛186F 01/05 17:47
ken841520   : 十年來一直讓使用者暴露在高危險環境中,被抓包187F 01/05 17:49
ken841520   : 還想拖其他人一起下水
attis       : 嗯 所有iOS及Mac全部都會受到meltdown和spectre影189F 01/05 19:26
attis       : 響 GG
smartree    : 看不懂啦  XDDD191F 01/05 20:03
doom3       : 考資工研究所的 這題必考 (誤192F 01/05 20:16
ericinttu   : 時事必考題啊 (真的193F 01/05 20:27
ctes940008  : 推194F 01/05 21:19
hizerg      : 推195F 01/05 21:52
biarg       : 每個字分開看,我看的懂196F 01/05 22:12
APC         : 我看懂啦~就是牙膏工廠出包啦~XD (誤)197F 01/06 00:48
ChangWufei  : 99推198F 01/06 00:53
IHD         : 爆199F 01/06 01:08
madstorm    : 恩200F 01/06 01:49
plokm1221   : 我早說了 跟我想的差不多201F 01/06 09:18
kevin811221 : ok202F 01/06 12:47
versailles94: 很好,這寫的很棒老師給你100分203F 01/06 13:56

--
※ 看板: terievv 文章推薦值: 0 目前人氣: 0 累積人氣: 134 
※ 本文也出現在看板: Z_sports
分享網址: 複製 已複製
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇