Re: [情報] AMD Zen2的CPU漏洞Zenbleed

看板PC_Shopping (個人電腦購買)作者 (function(){})()時間2年前 (2023/07/26 14:30), 2年前編輯推噓44(44040)
留言84則, 53人參與, 最新討論串2/2 (看更多)
簡單回覆一下這個漏洞是怎麼回事,用手機不想打太多字 這次的漏洞有 Meltdown/Spectre 有諸多相似之處 但是比起這兩者,這次的漏洞更為直接 目前我沒看到有人把 Zenbleed 歸類為 side channel attack 所以就當它不是 關於 Meltdown 可以參考先前文章: #1QJlGo9y (PC_Shopping) 以下用 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 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/PC_Shopping/M.1690353037.A.4DD.html

07/26 14:38, 2年前 , 1F
推 有料
07/26 14:38, 1F

07/26 14:39, 2年前 , 2F
懂了(其實沒有
07/26 14:39, 2F

07/26 14:40, 2年前 , 3F
Push
07/26 14:40, 3F

07/26 14:44, 2年前 , 4F
推 專業
07/26 14:44, 4F

07/26 14:50, 2年前 , 5F
專業 推
07/26 14:50, 5F

07/26 14:50, 2年前 , 6F

07/26 14:50, 2年前 , 7F
跟我想的一樣(完全不懂
07/26 14:50, 7F

07/26 14:51, 2年前 , 8F
這種比酸一句就跑的強多了
07/26 14:51, 8F

07/26 14:53, 2年前 , 9F

07/26 15:04, 2年前 , 10F
這bug看reddit上解釋還要暫存器處於某種特
07/26 15:04, 10F

07/26 15:04, 2年前 , 11F
定狀況下才成立的樣子?
07/26 15:04, 11F
要有特定指令跟順序觸發才會踩到,受害程式也必須有用到特定指令 但這不是甚麼罕見的指令,反倒是很常見的

07/26 15:07, 2年前 , 12F
哇 專業講解,推
07/26 15:07, 12F

07/26 15:07, 2年前 , 13F
聽起來怪怪的。所以他是還沒commit就把reg
07/26 15:07, 13F

07/26 15:07, 2年前 , 14F
release出來?
07/26 15:07, 14F
對,但 rollback 沒有把資料還原回去,導致惡意程式可以讀到髒資料

07/26 15:13, 2年前 , 15F
薛丁格的兩隻貓搶一個盒子
07/26 15:13, 15F

07/26 15:21, 2年前 , 16F
所以跑windows update就可以修正cpu的漏洞
07/26 15:21, 16F

07/26 15:21, 2年前 , 17F
嗎?
07/26 15:21, 17F

07/26 15:22, 2年前 , 18F
要等新的BIOS
07/26 15:22, 18F

07/26 15:39, 2年前 , 19F
推專業文
07/26 15:39, 19F

07/26 15:50, 2年前 , 20F
跟我想得一樣
07/26 15:50, 20F

07/26 16:08, 2年前 , 21F
這樣有可能造成BSOD嗎
07/26 16:08, 21F

07/26 16:11, 2年前 , 22F
zen有實作checkpoint只留預測時的狀
07/26 16:11, 22F

07/26 16:11, 2年前 , 23F
態 其餘物理reg可以複用 我猜corner
07/26 16:11, 23F

07/26 16:11, 2年前 , 24F
case回溯的reg map錯了
07/26 16:11, 24F
我不是很確定理解正不正確 map 應該沒錯,但是 rollback 只還原 zero bit 而沒有還原資料是錯的 導致惡意程式可以讀到髒資料

07/26 16:22, 2年前 , 25F
感謝科普
07/26 16:22, 25F

07/26 16:33, 2年前 , 26F
這bug是ymm暫存器用vzeroupper指令的時候
07/26 16:33, 26F

07/26 16:35, 2年前 , 27F
低位(對,不是高位)位元rollback沒處理好
07/26 16:35, 27F

07/26 17:16, 2年前 , 28F
phantom bug
07/26 17:16, 28F

07/26 17:31, 2年前 , 29F
推解釋
07/26 17:31, 29F

07/26 17:54, 2年前 , 30F
推解釋
07/26 17:54, 30F
更正一下文內消息 剛剛看到目前只有 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

07/26 18:08, 2年前 , 31F
該升級zen3了嗎?
07/26 18:08, 31F

07/26 18:11, 2年前 , 32F
不想打太多字 (手停不下來)
07/26 18:11, 32F

07/26 18:12, 2年前 , 33F
懂了 分支預測對吧 抱歉我大學教授計
07/26 18:12, 33F

07/26 18:12, 2年前 , 34F
算機網路都在亂教
07/26 18:12, 34F

07/26 18:27, 2年前 , 35F
計算機網絡@@?
07/26 18:27, 35F

07/26 18:28, 2年前 , 36F
樓上不是啦,你連內文都沒仔細的看耶..
07/26 18:28, 36F

07/26 18:30, 2年前 , 37F
這至少是計算機組織或架構的事情…
07/26 18:30, 37F

07/26 18:30, 2年前 , 38F
不明覺厲啊
07/26 18:30, 38F

07/26 18:39, 2年前 , 39F
計算機組織吧XD
07/26 18:39, 39F

07/26 18:46, 2年前 , 40F
推專業
07/26 18:46, 40F

07/26 18:47, 2年前 , 41F
大學的計算機組織是不喜歡的教授上的,我
07/26 18:47, 41F

07/26 18:47, 2年前 , 42F

07/26 18:47, 2年前 , 43F
混個及格而已 科科
07/26 18:47, 43F

07/26 18:48, 2年前 , 44F
印象中 branch prediction/speculative e
07/26 18:48, 44F

07/26 18:48, 2年前 , 45F
xecution/OOE 大學都不會教啦,這些上網
07/26 18:48, 45F

07/26 18:48, 2年前 , 46F
啃資料比較實際。至少當年大學我們教 ARM
07/26 18:48, 46F

07/26 18:48, 2年前 , 47F
都沒有這些東西
07/26 18:48, 47F

07/26 18:49, 2年前 , 48F
然後啟蒙我了解這些的是 PCADV 的水球大
07/26 18:49, 48F

07/26 18:49, 2年前 , 49F
,水球大大你有看到嗎我在這
07/26 18:49, 49F

07/26 19:01, 2年前 , 50F
推專業
07/26 19:01, 50F

07/26 19:05, 2年前 , 51F
大學的ppt不是還在教祖傳5-stage p
07/26 19:05, 51F

07/26 19:05, 2年前 , 52F
ipeline嗎XD?
07/26 19:05, 52F

07/26 19:10, 2年前 , 53F
07/26 19:10, 53F

07/26 20:12, 2年前 , 54F
大學計組會教喇 只是教個皮毛爾已
07/26 20:12, 54F

07/26 20:15, 2年前 , 55F
現在的處理器太複雜了 一門計組課上不完的
07/26 20:15, 55F

07/26 20:59, 2年前 , 56F
07/26 20:59, 56F

07/26 21:13, 2年前 , 57F
推,雖然我完全看不懂
07/26 21:13, 57F

07/26 21:33, 2年前 , 58F
竟然是用 fuzz test 抓到的
07/26 21:33, 58F

07/26 21:35, 2年前 , 59F
應該說現在處理器太複雜,學都是學概念
07/26 21:35, 59F

07/26 21:37, 2年前 , 60F
但其實現在也找得到 riscv 的實作,要從
07/26 21:37, 60F

07/26 21:37, 2年前 , 61F
實作學也不是不行
07/26 21:37, 61F

07/26 21:43, 2年前 , 62F
推,這算妥妥的Bug了
07/26 21:43, 62F

07/26 21:46, 2年前 , 63F
是說這在攻擊上有實用性嗎?你只能拿到一
07/26 21:46, 63F

07/26 21:46, 2年前 , 64F
個 register 的值
07/26 21:46, 64F
可以,目標是攻擊 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

07/26 23:20, 2年前 , 65F
Zen3沒這錯誤 是不是AMD早就知道修掉了
07/26 23:20, 65F

07/26 23:34, 2年前 , 66F
應該不是,可能是執行策略改了
07/26 23:34, 66F

07/27 00:27, 2年前 , 67F
原來如此
07/27 00:27, 67F

07/27 00:48, 2年前 , 68F
推一下
07/27 00:48, 68F

07/27 01:47, 2年前 , 69F
怎麼聽起來是個DV就要找到的bug?
07/27 01:47, 69F

07/27 01:49, 2年前 , 70F
physical register 會亂給別人
07/27 01:49, 70F

07/27 02:17, 2年前 , 71F
水球現在都在Cool3C發文比較多www
07/27 02:17, 71F

07/27 02:19, 2年前 , 72F
哈,我指的是還在紙本電腦王雜誌連載的
07/27 02:19, 72F

07/27 02:19, 2年前 , 73F
當然現在線上版的也會看,不過論啟蒙還是
07/27 02:19, 73F

07/27 02:19, 2年前 , 74F
靠當年電腦王雜誌
07/27 02:19, 74F

07/27 04:45, 2年前 , 75F
QQ
07/27 04:45, 75F

07/27 08:52, 2年前 , 76F
現在 CPU 太複雜了,出現沒驗到的 bug
07/27 08:52, 76F

07/27 08:52, 2年前 , 77F
還算正常吧
07/27 08:52, 77F

07/27 09:35, 2年前 , 78F
計組都祭祖惹
07/27 09:35, 78F

07/27 12:49, 2年前 , 79F
推推
07/27 12:49, 79F

07/27 14:36, 2年前 , 80F
!!!!!!!
07/27 14:36, 80F

07/27 21:35, 2年前 , 81F
水球20年前常常在連線硬體版打筆戰。
07/27 21:35, 81F

07/28 01:38, 2年前 , 82F
推推
07/28 01:38, 82F

08/03 19:42, , 83F
@SUCKERKING 還有當時的資料嗎?
08/03 19:42, 83F

08/03 19:42, , 84F
死CS新鮮肝想看看
08/03 19:42, 84F
文章代碼(AID): #1amBsDJT (PC_Shopping)
文章代碼(AID): #1amBsDJT (PC_Shopping)