Intel嚴重漏洞 OS更新將會降低效能 - 3C

Table of Contents

看了三天的 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

--

All Comments

Mason avatarMason2018-01-07
我之前也發生過很多次 yahoo本來就很爛 還外加奇摩
James avatarJames2018-01-11
之前即時通死都不讓我登入 後來我就改用MSN了...
Carolina Franco avatarCarolina Franco2018-01-15
發現MSN也不給你登....
Iris avatarIris2018-01-19
就改登PTT了
Caitlin avatarCaitlin2018-01-21
最近ptt也一直斷....
Wallis avatarWallis2018-01-25
只好掀桌出去裸奔了...
Michael avatarMichael2018-01-28
恩~跟我想的差不多
Quintina avatarQuintina2018-02-01
跟我想的一樣
Xanthe avatarXanthe2018-02-03
原來是這樣
Ivy avatarIvy2018-02-05
我很誠實的講 真的看不太懂 有文組的版本嗎?
Andrew avatarAndrew2018-02-06
趕快推才不會被發現看不懂
Mia avatarMia2018-02-09
看到組合語言就飄掉了... 囧>
Oliver avatarOliver2018-02-13
我很認同,跟我看法一樣
Irma avatarIrma2018-02-18
微處理機概論、組合語言 頭好痛
Caroline avatarCaroline2018-02-22
就本來要授權的東西 你老闆說先做再來問我比較省事
Irma avatarIrma2018-02-24
這是簡介Intel如何偷吃步嗎XD
Jacob avatarJacob2018-02-27
我的答案跟你一樣
Doris avatarDoris2018-02-27
嗯嗯跟我想的一樣
Candice avatarCandice2018-02-28
INTEL:我不是教你詐~
Charlie avatarCharlie2018-02-28
有人看得懂可以翻譯一下嗎
Christine avatarChristine2018-03-01
所以前面推文說的關閉cache就好是真的?
Irma avatarIrma2018-03-02
關不掉,那是硬體設計,而且真的拿掉快取那直接倒退
半世紀
Ivy avatarIvy2018-03-02
沒錯........完全看不懂
Daniel avatarDaniel2018-03-03
不能關閉cache, 但是可以把cache清空
Joe avatarJoe2018-03-03
就像你去郵局存錢 正常流程 你要填單 然後把存款單+
Rachel avatarRachel2018-03-06
甚麼時候清空就是重點了, 清空cache帶來效能拖累
Ophelia avatarOphelia2018-03-10
看到組合語言就豆頁痛
Rachel avatarRachel2018-03-12
錢+存款簿 送入櫃台 這樣~ 可是櫃台想加快速度
George avatarGeorge2018-03-12
關掉快取? 這 你的CPU效能要回到20年之前吧
Quintina avatarQuintina2018-03-14
先拿你的存簿去打好 才收錢跟存單
Catherine avatarCatherine2018-03-15
這時候就產生問題了...不給錢然後存簿又打好給你了~
Skylar Davis avatarSkylar Davis2018-03-20
INTEL -20%
Callum avatarCallum2018-03-21
簡單的說就是 Intel 的 CPU 為了加快速度,會偷跑
後面的指令,所以當發現前面的指令有例外存取時,雖
Elvira avatarElvira2018-03-24
然會清空後面偷跑的指令搬到快取的資料,但在搬到快
Heather avatarHeather2018-03-28
取到清空的這段期間就可能被其他惡意程序趁機存取到
這個高層級的資料。
Blanche avatarBlanche2018-04-01
嗯 跟我想的一樣......果然看不懂
Necoo avatarNecoo2018-04-04
只有intel愛搶快偷吃步。
Charlotte avatarCharlotte2018-04-09
看不懂shl這行的意思 可以讀出kernel data嗎
John avatarJohn2018-04-14
看程式碼反而比較好懂 囧
Zanna avatarZanna2018-04-18
呃....應該說,因為資料還是有搬到快取留下的足跡,
所以可以去查閱那筆資料
Lauren avatarLauren2018-04-22
不是只有Intel偷吃步 而是Intel偷得步比較多
Yuri avatarYuri2018-04-25
不管Meltdown還是Spectre都是抓這種行為
只是Intel偷得更兇 所以額外有Meltdown
Dorothy avatarDorothy2018-04-30
shl 是把暫存器資料往高位元偏移的指令
Xanthe avatarXanthe2018-04-30
rax rbx那些是暫存器
Necoo avatarNecoo2018-05-02
這些步驟現代高性能都有實作,所以Spectre每家都中
但Intel的實作方式比其他人更激進,所以Meltdown只
Intel有
Adele avatarAdele2018-05-04
我確認一下,rax 和 rbx 是 x64 的暫存器寫法吧?
我學的組合語言是 x86 的,沒印象有 rax、rbx 這個
Eden avatarEden2018-05-08
原來如此,寫的真是淺顯易懂
Eden avatarEden2018-05-13
淺顯易懂推
Charlotte avatarCharlotte2018-05-14
資工系菜比八表示欣慰,這學期學的課程讓我看得懂
Poppy avatarPoppy2018-05-19
偷的步多和少是哪邊的差別?
Sarah avatarSarah2018-05-21
rax rbx 就 64bits 的 eax ebx
Hamiltion avatarHamiltion2018-05-25
我猜是處理例外中斷和處理偷吃步程序的優先順序?
Eden avatarEden2018-05-26
看得懂推
Edward Lewis avatarEdward Lewis2018-05-29
這些激進的廢掉,或是另外加防禦,會不會把原本領先
的IPC吐回去阿...
Jessica avatarJessica2018-05-30
改硬體,不會像軟體補丁損失這麼大
Carolina Franco avatarCarolina Franco2018-06-02
RYZEN沒有激進到Meldown,效能也不弱
Frederic avatarFrederic2018-06-03
從旁側擊的蓋念
Hamiltion avatarHamiltion2018-06-07
Google和Amazon說更新Fix後沒有明顯性能下降,大家
可以回家啦
Margaret avatarMargaret2018-06-07
Spectre看起來風險小到可忽略。各家都中但不一定要
Hamiltion avatarHamiltion2018-06-10
Spectre 不是可以忽略,而是要補了話難度更大
Eartha avatarEartha2018-06-14
專業
Oliver avatarOliver2018-06-16
好猛 看不懂但是有一個結論:以後買AMD
Emily avatarEmily2018-06-20
請問為什麼算出偏移量就能知道kernel data 另外 rax
+rbx附近(那個block)的資料也會一併被搬到快取中吧
Skylar Davis avatarSkylar Davis2018-06-24
要解決Spectre,OS和軟體這兩個都要更新
Ingrid avatarIngrid2018-06-28
處理起來比Meltdown更麻煩
Cara avatarCara2018-07-02
Spectre is harder for hackers to take advantage
of
but is also harder to fix
Leila avatarLeila2018-07-03
就是S很難真正出問題,但難靠軟體解決風險。
Genevieve avatarGenevieve2018-07-06
Google 測試沒有說 Spectre 可以忽略不管
James avatarJames2018-07-07
有沒有人能舉個例子 平時上網駭客如何主動透過這漏
洞攻擊並竊取我們本地端的資料
Rebecca avatarRebecca2018-07-09
不過 Meltdown 是"馬上""立刻"要解決的問題
Christine avatarChristine2018-07-09
理論上當然不能不管,但短期也不會出啥問題
Dorothy avatarDorothy2018-07-13
Meltdown才是馬上嚴重要立即解決
Hedda avatarHedda2018-07-17
現在雲端廠已經出來說,更新Meltdown fix 沒有明顯
性能下降了
Joseph avatarJoseph2018-07-19
要期待Intel 在Server領域崩盤,看來可能性不大了
Caroline avatarCaroline2018-07-20
難道要承認效能變慢 買時間的客戶不出來靠北退費
Thomas avatarThomas2018-07-20
這幾天Phoronix的更新測試是大概差3~5%拉
至於廠商會不會講有差 講有差他要被狗幹當然說沒
Yedda avatarYedda2018-07-21
笑了 解決方案的廠商怎麼敢將自己方案有問題
Thomas avatarThomas2018-07-25
表面河蟹 私下I皇不知道要割多少肉解決
Ethan avatarEthan2018-07-29
實測若3-5%已蠻嚴重。接近一年份的牙膏。
Jessica avatarJessica2018-08-01
不過哪家廠商敢出面說嚴重,得罪i皇不是小事
Candice avatarCandice2018-08-03
probe array是直接對應cache 的位址嗎
Frederica avatarFrederica2018-08-06
嗯嗯 這篇文章是用中文嗎 我怎麼看不懂
Kama avatarKama2018-08-06
Ryzen真的要飛天了,就算拉到5G打個20%也沒啥優勢
Thomas avatarThomas2018-08-07
al是rax裡的一段 shift rax也會等量shift al
Kristin avatarKristin2018-08-07
如果差5% 其實是還好啦XD
Ursula avatarUrsula2018-08-11
完了我看不懂
Zora avatarZora2018-08-14
Azure也是炒翻天的時候就出來澄清沒事了 少部分
用戶網路會有點影響 但是有我們好棒棒的免費網路
Puput avatarPuput2018-08-18
加速服務可以幫你把影響抵銷甚至更快喔
Susan avatarSusan2018-08-20
我有個朋友在Azure的機器被reboot之後掛掉惹..QQ
Elizabeth avatarElizabeth2018-08-21
現在進入上下交相賊的狀況 喬好表面就雲淡風輕
看新的採購案AMD數量變化就知道真假
Yedda avatarYedda2018-08-25
真der 5%也不過差一個世代 還好8代多了2核 像7代只
能當6代用 幫QQ
Charlotte avatarCharlotte2018-08-26
Azure還沒正式上更新吧 表定是1/10
Skylar Davis avatarSkylar Davis2018-08-28
azure的機器好像昨天會被強制重開 昨天有看到災情QQ
Irma avatarIrma2018-08-31
搞不好折扣給很大下次還是買IntelXD
Sierra Rose avatarSierra Rose2018-09-04
下次買打5折
Victoria avatarVictoria2018-09-08
好像有這件事 沒寫Script的機器服務斷掉了
Belly avatarBelly2018-09-09
恩恩 跟我想的一樣
Charlie avatarCharlie2018-09-13
等等看intel的cpu 9代相對8代的性能提升...大致上
能當作被調降性能的最大值>.0
Joe avatarJoe2018-09-14
會這麼快解嗎?P4都能賣了有什麼賣不動XD
Liam avatarLiam2018-09-19
沒注意到今天有多發一封信 還真的緊急提早patch了
Anonymous avatarAnonymous2018-09-21
看到組語 直接end
Lauren avatarLauren2018-09-22
未看留言就知道會有跟我想的一樣
Emma avatarEmma2018-09-25
跟我預想的差不多耶
Ida avatarIda2018-09-28
9代硬體會修嗎? 這應該不是步進就能修好的
Kumar avatarKumar2018-09-29
應該10代才會修好整個分支預測喔 9代我猜是遮蔽?
Adele avatarAdele2018-10-02
恩 跟我想的一樣
Anonymous avatarAnonymous2018-10-05
雲端業者是在賣計算力的,當然要先喊影響不大啦
Anthony avatarAnthony2018-10-08
我也這麼覺得
Charlotte avatarCharlotte2018-10-10
新聞報那麼大 不趕快更新到時候就真的有攻擊災情了
David avatarDavid2018-10-12
推理解
Elizabeth avatarElizabeth2018-10-13
不更新會被竊取密碼嗎
Noah avatarNoah2018-10-16
等有人被攻擊產生損失就崩潰了
Queena avatarQueena2018-10-21
不更新winrar密碼會被繞過去
Necoo avatarNecoo2018-10-23
不太懂,為什麼知道資料是否放在快取裡就能知道資料
Iris avatarIris2018-10-28
?
Anonymous avatarAnonymous2018-10-28
因為他有refrence要偷的資料的其中一個bit
Todd Johnson avatarTodd Johnson2018-10-29
ATM密碼通通被安德烈搞定
Agatha avatarAgatha2018-11-01
家裡門不關小偷會上門嗎 跟 小偷根本不會來妳家偷
Lucy avatarLucy2018-11-06
Speculative Execution/OOOE是現代高效能處理器必備
並不是只有Intel這樣搞,只是Intel權限檢查沒弄好
Jack avatarJack2018-11-07
快推,但我還是看不懂
Quanna avatarQuanna2018-11-09
影響至少5%,牙膏說用戶會習慣的
Agatha avatarAgatha2018-11-12
wiki英文解釋的也算淺顯吧,可以再搭配著看
Ursula avatarUrsula2018-11-13
會習慣謊言的
Agnes avatarAgnes2018-11-17
先推才不會被發現看不懂
Quintina avatarQuintina2018-11-18
這個會影響CHROME瀏覽器下GOOGLE帳號被盜用嗎??
Ursula avatarUrsula2018-11-20
推解釋很清楚 看完這篇終於可以理解問題在哪了
Frederic avatarFrederic2018-11-24
是說銀行金融機密機關伺服器要先擔心吧
Charlotte avatarCharlotte2018-11-27
你484偷看我ㄉ筆記本 跟我想的差不多
Emily avatarEmily2018-11-30
wow 偷看筆記本? 可以簡化成這個概念嗎 XD
Iris avatarIris2018-12-04
大家都是一般使用者影響不大 可是何謂一般使用者@@
影片剪輯跟開實況算嗎?
Olivia avatarOlivia2018-12-08
嗯嗯 我想的…看不懂 給推
Bennie avatarBennie2018-12-12
公有雲只是提供運算資源給租用戶,不是直接租用機器,
效能應該不會有影響吧?
Madame avatarMadame2018-12-15
公有雲不影響....那他幹嘛買那麼多好設備買i3就好
Robert avatarRobert2018-12-19
白算盤唸完半本 還算看得懂 呼
Jack avatarJack2018-12-24
大陸人都用鍵盤側錄程式,強多了....
Sierra Rose avatarSierra Rose2018-12-27
好像懂了感謝耐心解釋 所以是第四行在讀出資料且還
沒造成exception的時候就已經把讀出的資料forwordin
g給後面的幾行指令了是嗎 那是不是把exception的步
驟提前的話就能解決啊
Freda avatarFreda2018-12-29
問題在 memory fetch 的時候就該擋下來
Jake avatarJake2019-01-01
理組:找原po可能講錯的地方 文組:果然跟我想的一
Quintina avatarQuintina2019-01-05
那我肯定是文組的 QQ
Faithe avatarFaithe2019-01-07
我是說公有雲的租用戶不影響,提供商當然影響到慘了
阿...白白損失這麼多運算能力
Olga avatarOlga2019-01-11
終於要飛天啦
Kama avatarKama2019-01-15
可以翻譯成文組看得懂的嗎
Dinah avatarDinah2019-01-15
Skylar DavisLinda avatarSkylar DavisLinda2019-01-18
完全看不懂
Donna avatarDonna2019-01-21
恩恩 跟我想得一模一樣
Thomas avatarThomas2019-01-24
Susan avatarSusan2019-01-27
我坦誠我看完大概還是不懂…
Gary avatarGary2019-01-29
這樣說的話有亂數執行的CPU應該都有問題?
Margaret avatarMargaret2019-02-02
樓上說的對,所以intel也拼命拖AMD下水
Aaliyah avatarAaliyah2019-02-04
這個跟亂序執行沒有關係,是因為intel在執行前沒有
Rae avatarRae2019-02-07
檢查權限,乖乖跟AMD一樣先檢查再執行就沒事
Daniel avatarDaniel2019-02-12
請問跟亂序執行沒關係 就只是pipeline的問題嗎
Susan avatarSusan2019-02-16
亂序執行是會有Spectre漏洞
Bennie avatarBennie2019-02-20
不是Meltdown
Caroline avatarCaroline2019-02-22
這樣讓文組看懂很難吧 讀CS的也需要融會貫通才懂
Bennie avatarBennie2019-02-24
趕緊推文!
Lily avatarLily2019-02-25
詳細推
Bennie avatarBennie2019-03-01
嗯嗯 我也是這麼覺得
Hazel avatarHazel2019-03-03
這時候就要感謝我唸的大學CS把組語列為必修科目了
Sierra Rose avatarSierra Rose2019-03-07
總之就是Intel sucks!
Ina avatarIna2019-03-09
又看到ASM 頭會痛痛
Jake avatarJake2019-03-11
十年來一直讓使用者暴露在高危險環境中,被抓包
還想拖其他人一起下水
Kumar avatarKumar2019-03-16
嗯 所有iOS及Mac全部都會受到meltdown和spectre影
響 GG
Skylar Davis avatarSkylar Davis2019-03-20
看不懂啦 XDDD
Daph Bay avatarDaph Bay2019-03-21
考資工研究所的 這題必考 (誤
Kama avatarKama2019-03-22
時事必考題啊 (真的
Tristan Cohan avatarTristan Cohan2019-03-25
Odelette avatarOdelette2019-03-30
Noah avatarNoah2019-04-02
每個字分開看,我看的懂
Gilbert avatarGilbert2019-04-07
我看懂啦~就是牙膏工廠出包啦~XD (誤)
Una avatarUna2019-04-09
99推
Gilbert avatarGilbert2019-04-14
Noah avatarNoah2019-04-15
George avatarGeorge2019-04-15
我早說了 跟我想的差不多
Daph Bay avatarDaph Bay2019-04-18
ok
Kumar avatarKumar2019-04-23
很好,這寫的很棒老師給你100分
Delia avatarDelia2019-04-25
推大大
Tom avatarTom2019-04-29
好文推個
Odelette avatarOdelette2019-04-30
幹 我真的後悔當初計結沒有認真學 看超久終於有點懂
Tom avatarTom2019-05-01
偷讀到的kernel資料 最終頂多只能留在cache
Joseph avatarJoseph2019-05-01
那麼要如何利用這個副作用 解析出那個資料呢
Daph Bay avatarDaph Bay2019-05-05
他的辦法就是 把資料直接當成偏移 試著讀取某個大陣
列的該偏移處
Erin avatarErin2019-05-07
這樣做的話 在一切偷跑的行為都被撤銷之後
Thomas avatarThomas2019-05-08
那個大陣列的該偏移處的資料仍然留在cache
Yuri avatarYuri2019-05-11
大陣列裡的資料是啥不重要 重點是我們想知道那個偏
移是多少
Lydia avatarLydia2019-05-12
為了做到這點 只要掃過大陣列 看讀到哪個偏移的時候
Kyle avatarKyle2019-05-16
讀最快 就知道那個偏移是多少了
真的是神技耶
Connor avatarConnor2019-05-20
想到這種東西的人 不是天才 就是整天胡思亂想吧XD
Brianna avatarBrianna2019-05-24
然後我一直以為寫OS的人只要會讀ISA的手冊就好
不太需要管微架構運作的細節
Charlotte avatarCharlotte2019-05-26
現在感覺最好也要懂
Charlotte avatarCharlotte2019-05-31
我的理解有點像async 總之偷跑造成順序不對
Charlotte avatarCharlotte2019-06-01
台大真的考出來了xdd 朝聖
Rosalind avatarRosalind2019-06-04
朝聖一下 幸好當初有follow到這篇
Elvira avatarElvira2019-06-04
嗚嗚 考完才知道這篇
Edward Lewis avatarEdward Lewis2019-06-05
謝謝原po讓我多二十分
Sierra Rose avatarSierra Rose2019-06-08
台大考了38分
Rosalind avatarRosalind2019-06-09
朝聖
Kama avatarKama2019-06-13
有考上要請客啊
Jack avatarJack2019-06-18
正取惹,感謝大i皇賜我吃穿
Mason avatarMason2019-06-23
神文二讀,花30分鐘看,計系72上台大