→ 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
※ 文章網址: https://www.ptt.cc/bbs/PC_Shopping/M.1515123762.A.27C.html
推 ivan761016 : 恩~跟我想的差不多 01/05 11:53
推 DsLove710 : 跟我想的一樣 01/05 11:53
推 Angrboda : 原來是這樣 01/05 11:55
推 henry46277 : 我很誠實的講 真的看不太懂 有文組的版本嗎? 01/05 11:58
總之就是一種側載攻擊
洪師傅, 不要跟他拼拳, 嘗試切他中路的概念
推 gg068187 : 趕快推才不會被發現看不懂 01/05 11:59
推 aeolus0829 : 看到組合語言就飄掉了... 囧> 01/05 11:59
推 Mankind69 : 我很認同,跟我看法一樣 01/05 12:01
推 qxxrbull : 微處理機概論、組合語言 頭好痛 01/05 12:02
→ Apache : 就本來要授權的東西 你老闆說先做再來問我比較省事 01/05 12:02
推 doom3 : 這是簡介Intel如何偷吃步嗎XD 01/05 12:04
推 ycc1227 : 我的答案跟你一樣 01/05 12:06
推 tongigun : 嗯嗯跟我想的一樣 01/05 12:08
→ StarHero : INTEL:我不是教你詐~ 01/05 12:09
推 DKPCOFGS : 有人看得懂可以翻譯一下嗎 01/05 12:09
→ iceyang : 所以前面推文說的關閉cache就好是真的? 01/05 12:12
→ s25g5d4 : 關不掉,那是硬體設計,而且真的拿掉快取那直接倒退 01/05 12:13
→ s25g5d4 : 半世紀 01/05 12:13
推 gekidou : 沒錯........完全看不懂 01/05 12:14
推 chrisdar : 不能關閉cache, 但是可以把cache清空 01/05 12:15
→ StarHero : 就像你去郵局存錢 正常流程 你要填單 然後把存款單+ 01/05 12:16
→ chrisdar : 甚麼時候清空就是重點了, 清空cache帶來效能拖累 01/05 12:16
推 nn3356 : 看到組合語言就豆頁痛 01/05 12:16
→ StarHero : 錢+存款簿 送入櫃台 這樣~ 可是櫃台想加快速度 01/05 12:17
推 Shauter : 關掉快取? 這 你的CPU效能要回到20年之前吧 01/05 12:17
→ StarHero : 先拿你的存簿去打好 才收錢跟存單 01/05 12:19
→ StarHero : 這時候就產生問題了...不給錢然後存簿又打好給你了~ 01/05 12:20
推 jinshun : INTEL -20% 01/05 12:21
→ xxtomnyxx : 簡單的說就是 Intel 的 CPU 為了加快速度,會偷跑 01/05 12:23
→ xxtomnyxx : 後面的指令,所以當發現前面的指令有例外存取時,雖 01/05 12:23
→ xxtomnyxx : 然會清空後面偷跑的指令搬到快取的資料,但在搬到快 01/05 12:24
→ xxtomnyxx : 取到清空的這段期間就可能被其他惡意程序趁機存取到 01/05 12:25
→ xxtomnyxx : 這個高層級的資料。 01/05 12:25
推 vash0319 : 嗯 跟我想的一樣......果然看不懂 01/05 12:26
→ kuma660224 : 只有intel愛搶快偷吃步。 01/05 12:26
推 iip06112 : 看不懂shl這行的意思 可以讀出kernel data嗎 01/05 12:26
就是讓 rax 的值乘以 4096, 以對齊 page size
推 orze04 : 看程式碼反而比較好懂 囧 01/05 12:26
→ xxtomnyxx : 呃....應該說,因為資料還是有搬到快取留下的足跡, 01/05 12:27
→ xxtomnyxx : 所以可以去查閱那筆資料 01/05 12:27
推 kira925 : 不是只有Intel偷吃步 而是Intel偷得步比較多 01/05 12:28
→ kira925 : 不管Meltdown還是Spectre都是抓這種行為 01/05 12:29
→ kira925 : 只是Intel偷得更兇 所以額外有Meltdown 01/05 12:29
→ xxtomnyxx : shl 是把暫存器資料往高位元偏移的指令 01/05 12:29
推 orze04 : rax rbx那些是暫存器 01/05 12:29
推 KotoriCute : 這些步驟現代高性能都有實作,所以Spectre每家都中 01/05 12:32
→ xxtomnyxx : 我確認一下,rax 和 rbx 是 x64 的暫存器寫法吧? 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 : 原來如此,寫的真是淺顯易懂 01/05 12:32
推 linph : 淺顯易懂推 01/05 12:32
→ xxtomnyxx : 我學的組合語言是 x86 的,沒印象有 rax、rbx 這個 01/05 12:32
→ KotoriCute : 但Intel的實作方式比其他人更激進,所以Meltdown只 01/05 12:32
推 s08glen : 資工系菜比八表示欣慰,這學期學的課程讓我看得懂 01/05 12:32
→ KotoriCute : Intel有 01/05 12:32
推 qxxrbull : 偷的步多和少是哪邊的差別? 01/05 12:33
推 Bencrie : rax rbx 就 64bits 的 eax ebx 01/05 12:34
→ xxtomnyxx : 我猜是處理例外中斷和處理偷吃步程序的優先順序? 01/05 12:35
推 saito2190 : 看得懂推 01/05 12:36
推 Litfal : 這些激進的廢掉,或是另外加防禦,會不會把原本領先 01/05 12:38
→ Litfal : 的IPC吐回去阿... 01/05 12:38
推 kuma660224 : 改硬體,不會像軟體補丁損失這麼大 01/05 12:39
→ kuma660224 : RYZEN沒有激進到Meldown,效能也不弱 01/05 12:40
推 jk01 : 從旁側擊的蓋念 01/05 12:41
推 KotoriCute : Google和Amazon說更新Fix後沒有明顯性能下降,大家 01/05 12:41
→ KotoriCute : 可以回家啦 01/05 12:41
→ kuma660224 : Spectre看起來風險小到可忽略。各家都中但不一定要 01/05 12:41
→ kuma660224 : 改 01/05 12:41
→ KotoriCute : Spectre 不是可以忽略,而是要補了話難度更大 01/05 12:43
推 Cubelia : 專業 01/05 12:43
→ cabin2501 : 好猛 看不懂但是有一個結論:以後買AMD 01/05 12:43
推 iip06112 : 請問為什麼算出偏移量就能知道kernel data 另外 rax 01/05 12:43
→ iip06112 : +rbx附近(那個block)的資料也會一併被搬到快取中吧 01/05 12:43
→ iip06112 : ? 01/05 12:43
第四行中從 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和軟體這兩個都要更新 01/05 12:44
→ KotoriCute : 處理起來比Meltdown更麻煩 01/05 12:45
→ kuma660224 : Spectre is harder for hackers to take advantage 01/05 12:45
→ kuma660224 : of 01/05 12:45
→ kuma660224 : but is also harder to fix 01/05 12:45
→ kuma660224 : 就是S很難真正出問題,但難靠軟體解決風險。 01/05 12:46
→ KotoriCute : Google 測試沒有說 Spectre 可以忽略不管 01/05 12:46
推 iceyang : 有沒有人能舉個例子 平時上網駭客如何主動透過這漏 01/05 12:47
→ iceyang : 洞攻擊並竊取我們本地端的資料 01/05 12:47
→ KotoriCute : 不過 Meltdown 是"馬上""立刻"要解決的問題 01/05 12:47
→ kuma660224 : 理論上當然不能不管,但短期也不會出啥問題 01/05 12:47
→ kuma660224 : Meltdown才是馬上嚴重要立即解決 01/05 12:48
→ KotoriCute : 現在雲端廠已經出來說,更新Meltdown fix 沒有明顯 01/05 12:48
→ KotoriCute : 性能下降了 01/05 12:48
→ KotoriCute : 要期待Intel 在Server領域崩盤,看來可能性不大了 01/05 12:49
推 MrDisgrace : 難道要承認效能變慢 買時間的客戶不出來靠北退費 01/05 12:52
推 kira925 : 這幾天Phoronix的更新測試是大概差3~5%拉 01/05 12:52
→ kira925 : 至於廠商會不會講有差 講有差他要被狗幹當然說沒 01/05 12:52
推 Lansbury : 笑了 解決方案的廠商怎麼敢將自己方案有問題 01/05 12:53
→ ChangWufei : 表面河蟹 私下I皇不知道要割多少肉解決 01/05 12:55
→ kuma660224 : 實測若3-5%已蠻嚴重。接近一年份的牙膏。 01/05 12:55
→ kuma660224 : 不過哪家廠商敢出面說嚴重,得罪i皇不是小事 01/05 12:56
推 hl4 : probe array是直接對應cache 的位址嗎 01/05 12:58
不是... 隨便找個地方塞一個很大的 array 而已
但一定要跟 page 對齊
推 BusterWu : 嗯嗯 這篇文章是用中文嗎 我怎麼看不懂 01/05 12:58
→ JoyRex : Ryzen真的要飛天了,就算拉到5G打個20%也沒啥優勢 01/05 13:00
推 orze04 : al是rax裡的一段 shift rax也會等量shift al 01/05 13:00
→ arrenwu : 如果差5% 其實是還好啦XD 01/05 13:01
推 cka : 完了我看不懂 01/05 13:01
※ 編輯: s25g5d4 (36.227.40.20), 01/05/2018 13:04:02
→ friedpig : Azure也是炒翻天的時候就出來澄清沒事了 少部分 01/05 13:03
→ friedpig : 用戶網路會有點影響 但是有我們好棒棒的免費網路 01/05 13:03
→ friedpig : 加速服務可以幫你把影響抵銷甚至更快喔 01/05 13:04
推 hakugetsu : 我有個朋友在Azure的機器被reboot之後掛掉惹..QQ 01/05 13:05
推 ariadne : 現在進入上下交相賊的狀況 喬好表面就雲淡風輕 01/05 13:06
推 DANTEINFERNO: 真der 5%也不過差一個世代 還好8代多了2核 像7代只 01/05 13:06
→ DANTEINFERNO: 能當6代用 幫QQ 01/05 13:06
→ ariadne : 看新的採購案AMD數量變化就知道真假 01/05 13:06
→ friedpig : Azure還沒正式上更新吧 表定是1/10 01/05 13:07
推 GJME : azure的機器好像昨天會被強制重開 昨天有看到災情QQ 01/05 13:08
推 MrDisgrace : 搞不好折扣給很大下次還是買IntelXD 01/05 13:08
推 ken720331 : 下次買打5折 01/05 13:08
→ friedpig : 好像有這件事 沒寫Script的機器服務斷掉了 01/05 13:09
推 Marxing : 恩恩 跟我想的一樣 01/05 13:12
→ jones2011 : 等等看intel的cpu 9代相對8代的性能提升...大致上 01/05 13:12
→ jones2011 : 能當作被調降性能的最大值>.0 01/05 13:12
推 MrDisgrace : 會這麼快解嗎?P4都能賣了有什麼賣不動XD 01/05 13:14
→ friedpig : 沒注意到今天有多發一封信 還真的緊急提早patch了 01/05 13:15
→ NCKU : 看到組語 直接end 01/05 13:17
推 n19605gh : 未看留言就知道會有跟我想的一樣 01/05 13:19
推 tontonplus : 跟我預想的差不多耶 01/05 13:19
推 Shauter : 9代硬體會修嗎? 這應該不是步進就能修好的 01/05 13:19
→ Shauter : 應該10代才會修好整個分支預測喔 9代我猜是遮蔽? 01/05 13:20
推 show95175300: 恩 跟我想的一樣 01/05 13:22
→ pig : 雲端業者是在賣計算力的,當然要先喊影響不大啦 01/05 13:26
推 eternal3326 : 我也這麼覺得 01/05 13:28
推 EAFV : 新聞報那麼大 不趕快更新到時候就真的有攻擊災情了 01/05 13:32
推 Ekmund : 推理解 01/05 13:39
推 NDSLite : 不更新會被竊取密碼嗎 01/05 13:39
噓 oil01 : 等有人被攻擊產生損失就崩潰了 01/05 13:44
推 chenszhanx : 不更新winrar密碼會被繞過去 01/05 13:44
推 wei115 : 不太懂,為什麼知道資料是否放在快取裡就能知道資料 01/05 13:45
→ wei115 : ? 01/05 13:46
推 jeff40108 : 因為他有refrence要偷的資料的其中一個bit 01/05 13:47
→ JoyRex : ATM密碼通通被安德烈搞定 01/05 13:48
推 larailing : 家裡門不關小偷會上門嗎 跟 小偷根本不會來妳家偷 01/05 13:49
→ jaid : Speculative Execution/OOOE是現代高效能處理器必備 01/05 14:01
→ jaid : 並不是只有Intel這樣搞,只是Intel權限檢查沒弄好 01/05 14:01
推 tactical : 快推,但我還是看不懂 01/05 14:06
推 aegis43210 : 影響至少5%,牙膏說用戶會習慣的 01/05 14:07
→ kobe8112 : wiki英文解釋的也算淺顯吧,可以再搭配著看 01/05 14:08
推 ericinttu : 會習慣謊言的 01/05 14:08
推 karen71014 : 先推才不會被發現看不懂 01/05 14:12
推 tactical : 這個會影響CHROME瀏覽器下GOOGLE帳號被盜用嗎?? 01/05 14:24
推 giraffe4527 : 推解釋很清楚 看完這篇終於可以理解問題在哪了 01/05 14:32
→ giraffe4527 : 是說銀行金融機密機關伺服器要先擔心吧 01/05 14:34
推 CactusFlower: 你484偷看我ㄉ筆記本 跟我想的差不多 01/05 14:35
→ JoeyChen : wow 偷看筆記本? 可以簡化成這個概念嗎 XD 01/05 14:39
推 william1978a: 大家都是一般使用者影響不大 可是何謂一般使用者@@ 01/05 14:45
→ william1978a: 影片剪輯跟開實況算嗎? 01/05 14:45
推 soarling : 嗯嗯 我想的…看不懂 給推 01/05 14:46
推 felaray : 公有雲只是提供運算資源給租用戶,不是直接租用機器, 01/05 14:50
→ felaray : 效能應該不會有影響吧? 01/05 14:50
噓 oil01 : 公有雲不影響....那他幹嘛買那麼多好設備買i3就好 01/05 15:04
→ oil01 : 啦 01/05 15:04
推 winiel559 : 白算盤唸完半本 還算看得懂 呼 01/05 15:07
推 jasonkey123 : 大陸人都用鍵盤側錄程式,強多了.... 01/05 15:08
推 iip06112 : 好像懂了感謝耐心解釋 所以是第四行在讀出資料且還 01/05 15:17
→ iip06112 : 沒造成exception的時候就已經把讀出的資料forwordin 01/05 15:17
→ iip06112 : g給後面的幾行指令了是嗎 那是不是把exception的步 01/05 15:17
→ iip06112 : 驟提前的話就能解決啊 01/05 15:17
→ s25g5d4 : 問題在 memory fetch 的時候就該擋下來 01/05 15:18
推 abdgmnzc : 理組:找原po可能講錯的地方 文組:果然跟我想的一 01/05 15:18
→ abdgmnzc : 樣 01/05 15:18
→ s25g5d4 : 那我肯定是文組的 QQ 01/05 15:20
推 felaray : 我是說公有雲的租用戶不影響,提供商當然影響到慘了 01/05 15:38
→ felaray : 阿...白白損失這麼多運算能力 01/05 15:38
→ AMD640 : 終於要飛天啦 01/05 15:40
推 Jokering5566: 可以翻譯成文組看得懂的嗎 01/05 15:47
推 RIFF : 01/05 15:47
推 reaturn : 完全看不懂 01/05 15:49
推 canblow : 恩恩 跟我想得一模一樣 01/05 15:53
推 user1120 : 推 01/05 15:57
推 willion003 : 我坦誠我看完大概還是不懂… 01/05 15:57
→ commandoEX : 這樣說的話有亂數執行的CPU應該都有問題? 01/05 16:07
推 sdbb : 樓上說的對,所以intel也拼命拖AMD下水 01/05 16:18
推 twlin : 這個跟亂序執行沒有關係,是因為intel在執行前沒有 01/05 16:23
→ twlin : 檢查權限,乖乖跟AMD一樣先檢查再執行就沒事 01/05 16:24
推 winiel559 : 請問跟亂序執行沒關係 就只是pipeline的問題嗎 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漏洞 01/05 16:34
→ Windcws9Z : 不是Meltdown 01/05 16:35
推 kipi91718 : 這樣讓文組看懂很難吧 讀CS的也需要融會貫通才懂 01/05 16:44
推 pilitiger : 趕緊推文! 01/05 16:45
※ 編輯: s25g5d4 (36.227.40.20), 01/05/2018 16:46:48
推 HarryCheng : 詳細推 01/05 17:13
推 kji590929 : 嗯嗯 我也是這麼覺得 01/05 17:42
推 ken841520 : 這時候就要感謝我唸的大學CS把組語列為必修科目了 01/05 17:45
推 ken841520 : 總之就是Intel sucks! 01/05 17:47
推 michelin4x4 : 又看到ASM 頭會痛痛 01/05 17:47
→ ken841520 : 十年來一直讓使用者暴露在高危險環境中,被抓包 01/05 17:49
→ ken841520 : 還想拖其他人一起下水 01/05 17:49
推 attis : 嗯 所有iOS及Mac全部都會受到meltdown和spectre影 01/05 19:26
→ attis : 響 GG 01/05 19:26
推 smartree : 看不懂啦 XDDD 01/05 20:03
推 doom3 : 考資工研究所的 這題必考 (誤 01/05 20:16
推 ericinttu : 時事必考題啊 (真的 01/05 20:27
推 ctes940008 : 推 01/05 21:19
→ hizerg : 推 01/05 21:52
推 biarg : 每個字分開看,我看的懂 01/05 22:12
推 APC : 我看懂啦~就是牙膏工廠出包啦~XD (誤) 01/06 00:48
推 ChangWufei : 99推 01/06 00:53
推 IHD : 爆 01/06 01:08
推 madstorm : 恩 01/06 01:49
推 plokm1221 : 我早說了 跟我想的差不多 01/06 09:18
推 kevin811221 : ok 01/06 12:47
推 versailles94: 很好,這寫的很棒老師給你100分 01/06 13:56
推 az7061780617: 推大大 01/07 03:52
推 goldflower : 好文推個 01/11 03:13
推 kugwa : 幹 我真的後悔當初計結沒有認真學 看超久終於有點懂 01/12 01:11
→ kugwa : 偷讀到的kernel資料 最終頂多只能留在cache 01/12 01:18
→ kugwa : 那麼要如何利用這個副作用 解析出那個資料呢 01/12 01:19
→ kugwa : 他的辦法就是 把資料直接當成偏移 試著讀取某個大陣 01/12 01:22
→ kugwa : 列的該偏移處 01/12 01:22
→ kugwa : 這樣做的話 在一切偷跑的行為都被撤銷之後 01/12 01:25
→ kugwa : 那個大陣列的該偏移處的資料仍然留在cache 01/12 01:26
→ kugwa : 大陣列裡的資料是啥不重要 重點是我們想知道那個偏 01/12 01:27
→ kugwa : 移是多少 01/12 01:27
→ kugwa : 為了做到這點 只要掃過大陣列 看讀到哪個偏移的時候 01/12 01:28
→ kugwa : 讀最快 就知道那個偏移是多少了 01/12 01:29
→ kugwa : 真的是神技耶 01/12 01:29
→ kugwa : 想到這種東西的人 不是天才 就是整天胡思亂想吧XD 01/12 01:30
推 kugwa : 然後我一直以為寫OS的人只要會讀ISA的手冊就好 01/12 01:40
→ kugwa : 不太需要管微架構運作的細節 01/12 01:40
→ kugwa : 現在感覺最好也要懂 01/12 01:41
推 Luos : 我的理解有點像async 總之偷跑造成順序不對 01/17 11:58
推 sarsman : 台大真的考出來了xdd 朝聖 02/06 12:19
推 leoone : 朝聖一下 幸好當初有follow到這篇 02/06 12:29
推 stacy62123 : 嗚嗚 考完才知道這篇 02/06 12:47
推 ap954212 : 謝謝原po讓我多二十分 02/06 13:19
推 winiel559 : 台大考了38分 02/06 14:40
推 nova06091 : 朝聖 02/06 16:54
→ s25g5d4 : 有考上要請客啊 02/14 00:57
推 winiel559 : 正取惹,感謝大i皇賜我吃穿 03/13 12:44
推 cow5566bad : 神文二讀,花30分鐘看,計系72上台大 08/24 14:09
推 v86861062: 推推180.217.130.131 07/27 12:45