顯示廣告
隱藏 ✕
※ 本文轉寄自 ptt.cc 更新時間: 2023-07-27 16:02:15
看板 PC_Shopping
作者 s25g5d4 (function(){})()
標題 Re: [情報] AMD Zen2的CPU漏洞Zenbleed
時間 Wed Jul 26 14:30:32 2023


簡單回覆一下這個漏洞是怎麼回事,用手機不想打太多字

這次的漏洞有 Meltdown/Spectre 有諸多相似之處
但是比起這兩者,這次的漏洞更為直接
目前我沒看到有人把 Zenbleed 歸類為 side channel attack
所以就當它不是

關於 Meltdown 可以參考先前文章:
#1QJlGo9y (PC_Shopping)
Re: [情報] Intel嚴重漏洞 OS更新將會降低效能 - PC_Shopping板 - Disp BBS s25g5d4 看了三天的 paper 終於看懂 Meltdown 怎麼做到的 Spectre 太複雜看不懂沒時間懶得看所以不談 首先我預設大家都知道 instruction-level paralleism 指令層

以下用 M/S/Z 分別代表上述三種漏洞

相似的地方在於都是濫用預測執行 (speculative execution)
但 AMD 這次可以說是邏輯錯誤,跟 M/S 不同
因為 M/S 的執行邏輯是正確的,但在安全性檢查上不夠完善
雖然無法「直接」存取受害程式資料,但仍然可以從間接資料推測出原始資料

而 AMD 這次的漏洞則是妥妥的讓攻擊者直接讀取它不該讀到的東西
也就是說,即使不是惡意攻擊,仍然有機會在特定條件下造成執行錯誤

簡述這次的漏洞,就是濫用分支預測與預測執行,
在發生分支預測錯誤而回滾狀態時,讓兩個不同執行緒搶到同一個暫存器

x86 作為 CISC 代表,他的暫存器長度是多變的,
再加上暫存器重命名機制,即使你現在機器碼寫存取第一個暫存器,
實際上 CPU 可能會把它對映到另外一個暫存器上

所以當預測執行錯誤而必須回滾處理器狀態時,

本來已經被釋出的暫存器又被回滾回釋放前的狀態,

但回滾前另外一個執行緒已經拿走這個暫存器去用了
這時兩個執行緒都搶到同一個暫存器,
其中一個是惡意程式,就能直接讀取資料

所以我認為這是一個邏輯錯誤
因為即使不是惡意攻擊,這也是個妥妥的 race condition

目前 AMD 給的解決方法是微碼更新
依照白帽駭客的做法,在公開揭露前都會留時間給廠商修正
所以這次攻擊只要更新到最新的 AGESA 就修正了 **更新:可能尚未修正,見下方補充**
對於暫時無法更新微碼的機器,可以透過修改 CPU 執行模式緩解
此緩解辦法可能會造成一定程度的效能減損
目前我沒有看到有人提供效能影響報告就是了

詳細的資訊可以參考發現此漏洞的白帽駭客文章:
https://lock.cmpxchg8b.com/zenbleed.html

值得一題的是,這次的漏洞發現並非刻意針對某種系統/機制/邏輯的弱點攻擊,
而是在稱為 fuzzing 的一種產生任意指令/資料,以檢視軟體穩定性的測試中發現
詳細的發現過程是隨機產生一堆指令,再以同樣的順序再執行一次,比對兩者結果
不一樣的是對照組將嚴格遵循循序且不平行處理模式,務求最正確的結果


所以該作者能發現就是執行結果不一樣,
在現實應用中是有機會造成 phantom bug 的

--
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.127.39.149 (臺灣)
※ 作者: s25g5d4 2023-07-26 14:30:32
※ 文章代碼(AID): #1amBsDJT (PC_Shopping)
※ 文章網址: https://www.ptt.cc/bbs/PC_Shopping/M.1690353037.A.4DD.html
oppoR20: 推 有料1F 42.77.215.102 台灣 07/26 14:38
mrme945: 懂了(其實沒有2F 111.71.212.31 台灣 07/26 14:39
a58524andy: Push3F 36.233.21.177 台灣 07/26 14:40
yymeow: 推 專業4F 60.250.130.216 台灣 07/26 14:44
asdg62558: 專業 推5F 125.229.47.209 台灣 07/26 14:50
mayolane: https://i.imgur.com/vtSOIoc.png6F 114.136.134.162 台灣 07/26 14:50
[圖]
liumang: 跟我想的一樣(完全不懂7F 27.242.37.73 台灣 07/26 14:50
spfy: 這種比酸一句就跑的強多了8F 223.136.218.89 台灣 07/26 14:51
E7lijah: https://i.imgur.com/fgsSL97.jpg9F 39.15.25.32 台灣 07/26 14:53
[圖]
Fezico: 這bug看reddit上解釋還要暫存器處於某種特10F 118.168.14.172 台灣 07/26 15:04
Fezico: 定狀況下才成立的樣子?

要有特定指令跟順序觸發才會踩到,受害程式也必須有用到特定指令
但這不是甚麼罕見的指令,反倒是很常見的

avans: 哇 專業講解,推12F 111.71.20.228 台灣 07/26 15:07
SILee: 聽起來怪怪的。所以他是還沒commit就把reg13F 99.92.209.224 美國 07/26 15:07
SILee: release出來?

對,但 rollback 沒有把資料還原回去,導致惡意程式可以讀到髒資料

jay0215: 薛丁格的兩隻貓搶一個盒子15F 223.136.186.146 台灣 07/26 15:13
righer: 所以跑windows update就可以修正cpu的漏洞16F 111.82.89.112 台灣 07/26 15:21
righer: 嗎?
yymeow: 要等新的BIOS18F 60.250.130.216 台灣 07/26 15:22
comipa: 推專業文19F 114.36.222.209 台灣 07/26 15:39
lazioliz: 跟我想得一樣20F 112.78.90.23 台灣 07/26 15:50
smallreader: 這樣有可能造成BSOD嗎21F 114.27.43.49 台灣 07/26 16:08
AmibaGelos: zen有實作checkpoint只留預測時的狀22F 114.43.184.10 台灣 07/26 16:11
AmibaGelos: 態 其餘物理reg可以複用 我猜corner
AmibaGelos: case回溯的reg map錯了

我不是很確定理解正不正確

map 應該沒錯,但是 rollback 只還原 zero bit 而沒有還原資料是錯的

導致惡意程式可以讀到髒資料

sdbb: 感謝科普25F 61.230.97.130 台灣 07/26 16:22
Chikei: 這bug是ymm暫存器用vzeroupper指令的時候26F 211.72.92.133 台灣 07/26 16:33
Chikei: 低位(對,不是高位)位元rollback沒處理好
kuninaka: phantom bug28F 61.227.115.226 台灣 07/26 17:16
blueballer: 推解釋29F 185.213.82.245 台灣 07/26 17:31
kenphin0729: 推解釋30F 1.200.24.124 台灣 07/26 17:54

更正一下文內消息
剛剛看到目前只有 EPYC 才有微碼更新 [1]
其他 Zen 2 家族處理器還沒有 patch 好的微碼

準確的來說目前只有修復下列處理器家族:

2nd Gen AMD EPYC™  Processors "Rome" (fixed)

尚未修復:

AMD Ryzen 3000 Series Desktop Processors "Matisse" (Target Dec 2023)

AMD Ryzen 4000 Series Desktop Processors with Radeon Graphics "Renoir" AM4
(Target Dec 2023)

AMD Ryzen Threadripper 3000 Series Processors "Castle Peak" HEDT
(Target Oct 2023)

AMD Ryzen Threadripper PRO 3000WX Series Processors "Castle Peak" WS SP3
(Target Nov 2023/Dec 2023)

AMD Ryzen 5000 Series Mobile Processors with Radeon Graphics "Lucienne"
(Target Dec 2023)

AMD Ryzen 4000 Series Mobile Processors with Radeon Graphics "Renoir"
(Target Nov 2023)

AMD Ryzen 7020 Series Processors "Mendocino" FT6 (Target Dec 2023)

本來沒有要那麼早公開揭露漏洞的
但可惜的是 AMD 錯誤的提前釋出修正微碼,而且只有修復部分產品 [2]
所以只好提早公開揭露了

目前 linux kernel 針對此問題將預設開啟前述緩解方案
如果偵測到尚未包含修正的微碼,會設定對應的 chiken bit 避免漏洞開採 [3]
沒意外的話各大 linux distro 應該已經或很快會上這個 patch

1: https://seclists.org/oss-sec/2023/q3/67
2: https://github.com/google/security-research/tree/master/pocs/cpus/zenbleed
3: https://seclists.org/oss-sec/2023/q3/79

freezeyp: 該升級zen3了嗎?31F 101.136.44.88 台灣 07/26 18:08
dxzy: 不想打太多字 (手停不下來)32F 36.228.225.23 台灣 07/26 18:11
harry886901: 懂了 分支預測對吧 抱歉我大學教授計33F 101.10.3.57 台灣 07/26 18:12
harry886901: 算機網路都在亂教
a1234567289: 計算機網絡@@?35F 49.216.29.40 台灣 07/26 18:27
atbb: 樓上不是啦,你連內文都沒仔細的看耶..36F 114.137.229.40 台灣 07/26 18:28
chicagoparis: 這至少是計算機組織或架構的事情…37F 49.158.172.18 台灣 07/26 18:30
bunjie: 不明覺厲啊38F 182.155.80.135 台灣 07/26 18:30
roc074: 計算機組織吧XD39F 42.72.104.242 台灣 07/26 18:39
wardraw: 推專業40F 124.11.129.176 台灣 07/26 18:46
s25g5d4: 大學的計算機組織是不喜歡的教授上的,我41F 59.127.39.149 台灣 07/26 18:47
Gsanz: https://i.imgur.com/EdywNCP.jpg42F 59.126.179.241 台灣 07/26 18:47
[圖]
s25g5d4: 混個及格而已 科科43F 59.127.39.149 台灣 07/26 18:47
s25g5d4: 印象中 branch prediction/speculative e
s25g5d4: xecution/OOE 大學都不會教啦,這些上網
s25g5d4: 啃資料比較實際。至少當年大學我們教 ARM
s25g5d4:  都沒有這些東西
s25g5d4: 然後啟蒙我了解這些的是 PCADV 的水球大
s25g5d4: ,水球大大你有看到嗎我在這
asd4302asd: 推專業50F 223.140.1.111 台灣 07/26 19:01
leung3740250: 大學的ppt不是還在教祖傳5-stage p51F 45.64.242.172 香港 07/26 19:05
leung3740250: ipeline嗎XD?
TFnight: 推53F 114.42.110.136 台灣 07/26 19:10
ekgs: 大學計組會教喇 只是教個皮毛爾已54F 111.251.111.197 台灣 07/26 20:12
ekgs: 現在的處理器太複雜了 一門計組課上不完的
damnedfish: 推56F 203.217.111.28 台灣 07/26 20:59
BlackCoal: 推,雖然我完全看不懂57F 36.239.169.134 台灣 07/26 21:13
lc85301: 竟然是用 fuzz test 抓到的58F 36.231.88.222 台灣 07/26 21:33
lc85301: 應該說現在處理器太複雜,學都是學概念
lc85301: 但其實現在也找得到 riscv 的實作,要從
lc85301: 實作學也不是不行
wahaha99: 推,這算妥妥的Bug了62F 36.226.176.19 台灣 07/26 21:43
lc85301: 是說這在攻擊上有實用性嗎?你只能拿到一63F 36.231.88.222 台灣 07/26 21:46
lc85301: 個 register 的值

可以,目標是攻擊 strlen 跟 strcmp, 這兩個函式的泛用性可想而知
而且這不是只拿一個 register 值
這是一個針對 SIMD 指令的攻擊,它的單次讀取有效長度達 128 bit
加上每個攻擊循環只有數行指令碼,不需太多 cycle 就能讀

然後,幹你 AMD
https://i.imgur.com/NiygTzB.png
[圖]
※ 編輯: s25g5d4 (218.164.132.132 臺灣), 07/26/2023 22:12:49
croweva: Zen3沒這錯誤 是不是AMD早就知道修掉了65F 1.200.91.144 台灣 07/26 23:20
s25g5d4: 應該不是,可能是執行策略改了66F 59.127.39.149 台灣 07/26 23:34
lc85301: 原來如此67F 36.231.88.222 台灣 07/27 00:27
xiaotee: 推一下68F 101.8.21.22 台灣 07/27 00:48
HenryLin123: 怎麼聽起來是個DV就要找到的bug?69F 24.7.100.65 美國 07/27 01:47
HenryLin123: physical register 會亂給別人
hn9480412: 水球現在都在Cool3C發文比較多www71F 125.229.98.170 台灣 07/27 02:17
s25g5d4: 哈,我指的是還在紙本電腦王雜誌連載的72F 59.127.39.149 台灣 07/27 02:19
s25g5d4: 當然現在線上版的也會看,不過論啟蒙還是
s25g5d4: 靠當年電腦王雜誌
Bf109G6: QQ75F 115.66.7.39 新加坡 07/27 04:45
lc85301: 現在 CPU 太複雜了,出現沒驗到的 bug76F 60.250.111.124 台灣 07/27 08:52
lc85301: 還算正常吧
niverse: 計組都祭祖惹78F 150.117.240.33 台灣 07/27 09:35
v86861062: 推推79F 180.217.130.131 台灣 07/27 12:49
moocow: !!!!!!!80F 122.116.46.54 台灣 07/27 14:36

--
※ 看板: PC_Shopping 文章推薦值: 0 目前人氣: 0 累積人氣: 53 
作者 s25g5d4 的最新發文:
點此顯示更多發文記錄
分享網址: 複製 已複製
guest
x)推文 r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇