PTT推薦

Re: [情報] 研究人員揭露AMD晶片的Sinkclose漏洞,存

看板PC_Shopping標題Re: [情報] 研究人員揭露AMD晶片的Sinkclose漏洞,存作者
comipa
(綾崎若菜家御用)
時間推噓57 推:57 噓:0 →:66

※ 引述《hn9480412 (ilinker)》之銘言:
很久沒發文賺P幣了 是時候稍微增加一下收入

就稍微來聊一下System Management Mode大概是什麼東西好了.

先引用一下英文Wiki, 中文有寫跟沒寫一樣..
https://en.wikipedia.org/wiki/System_Management_Mode

用很白話文很簡單的比喻來說的話 他就是一個 時間暫停的魔眼
一旦啟動 其他程序的時間包括作業系統 就像時間凍結了一樣
這時候只有在SMM裡面的人(程式碼)還能活動 直到退出SMM
甚至作業系統搞到當機了, 除非CPU本身也完全涼透無法執行任何指令,
不然SMM在這情況下他應該都還能工作.

至於進入SMM的條件 就叫做SMI, System Management Interrupt.
他可以由單純硬體觸發 也可以從軟體觸發 要離開就由SMM裡面的程式碼去執行特殊指令

在SMM裡面, 幾本上就是可以為所欲為, 沒有什麼東西可以限制你.
系統平台上近乎所有資源, 還有記憶體的內容, 通通在你的控制之中.
至於離開之後, 除非SMM本身程式是故意留下足跡, 不然外界理論上是有可能不知道
你在裡面幹了什麼好事的. 所以SMM本身必須是很重視安全性.

至於SMM裡面要做什麼事情, 他本身也是一些程式碼構成, 這時候你可能會想說.
這不是雞生蛋蛋生雞了嗎? SMM一開始的程式碼又是哪來的?

x86 CPU一開始開機的時候 多半會從SPI ROM讀取程式 也就是我們俗稱的BIOS/UEFI
而要準備用在SMM裡面的程式碼其實也包含在內 我們就以UEFI為例.
UEFI開機會去初始化記憶體 在這個階段其實會預留4MB~8MB(好像吧,忘了)給SMM使用
這塊記憶體是獨佔性的 然後在接下來初始化各種UEFI軟體功能時 會載入一套
用在SMM裡面的程式碼到這塊記憶體 然後將這塊記憶體給標記鎖住
一旦鎖住之後 基本上就不允許修改記憶體中"可執行"的程式碼部分, SMM以外的人
也再也無法看到這塊內容 這邊其實應該就是這次AMD漏洞會影響到的部分 等等會講

當SMM程式碼全數載入/鎖定後, 也就相當於開啟了SMM功能, 之後就可以從軟硬體來
觸發SMM.

舉例來說我在另一篇文章提過 SPI的讀寫其實有一些保護機制 其中一個就是利用SMM,
透過不允許SMM以外的來源直接寫入SPI ROM, 並讓這個動作經過SMM程式碼的驗證
來達到避免入侵者修改程式碼的目的.

: 研究人員揭露AMD晶片的Sinkclose漏洞,存在近20年
: 文/陳曉莉 | 2024-08-12發表
: 資安業者 IOActive的兩名安全研究人員Enrique Nissim與Krzysztof Okupski在上周舉行的
: Defcon駭客會議上,揭露了一個存在於AMD晶片的安全漏洞,被研究人員命名為Sinkclose的
: 漏洞將允許駭客於系統管理模式(System Management Mode,SMM)執行程式碼,而且已存在
: 近20年。Sinkclose的漏洞編號為CVE-2023-31315,波及絕大多數的AMD處理器,從行動處理
: 器、桌面處理器、工作站處理器到資料中心處理器等,估計影響數億臺裝置。
: 根據AMD的簡要說明,CVE-2023-31315漏洞存在於模型特定暫存器(Model Specific Regist
: er,MSR)的驗證不當,允許具備Ring 0存取權限的惡意程式,即便是在系統管理中斷(Sys
: tem Management Interrupt,SMI)上鎖時,都能修改SMM配置,因而可執行任意程式。
接下來就跳到這邊 也就是上面講的問題. SMM本來身為最高權限的程式碼, 並且設計
上在鎖定之後就不允許修改 從而保證程式碼是安全的.

可是這邊開了個洞 讓入侵者有機會從OS階段的ring0就直接修改SMM裡面的東西
先不管這件事情的先決條件是什麼(原文也沒有講清楚).如果載入的OS本身 ring0也已
經被污染那就的確可以透過這個漏洞去入侵SMM, 再來就如上面的例子, 也許可以修改
SPI ROM內容了. SPI ROM被污染後 那下次開機執行的自然還是污染的程式碼.

: 至於Nissim與Okupski則說,SMM為x86架構最強大的執行模式之一,該層級的程式碼對於Hyp
: ervisor及作業系統等級的保護機制而言是不可見的,包括反欺騙引擎及反病毒系統;在研究
: AMD處理器時,他們發現用來保護SMM的一個重要元件含有缺陷,而且快20年了都沒有被發現
: 。
: 即使研究人員並未公布詳細的漏洞細節,也承諾尚不會釋出概念性驗證攻擊程式,但他們向
: Wired透露,此一漏洞最早可追溯到2006年甚至更早之前的AMD晶片,但駭客必須先可存取AM
: D的PC或伺服器,之後擴張其權限,進而於晶片上植入無法受到系統或防毒軟體偵測或保護的
: 惡意程式,就算是重新安裝作業系統也無濟於事。
: 這個意思就是,倘若使用者的AMD處理器已被駭客入侵,唯一的解法就是將它丟掉,沒有其它
: 的修補方法。
至於這部分 濠洨吧=_= 原文好像也沒這麼講.
SMM也只不過就是 一個權限最高的"RAM", 所以除非你能寫入SPI ROM,
不然開機他就會消失, 不存在什麼要丟掉. 就算SPI ROM被寫入
完整重新改寫SPI ROM也能夠消除掉

除非CPU SOC內建SPI ROM還鎖住不能改寫..x86現在市面上應該沒有這種東西

說到SMM在現代系統中的應用,大概有一些像是, 剛說的SPI保護
還有某些安全性驗證, 或是一些廠商自訂的介面/服務, 在Server則是有很重要的
RAS(可靠性、可用性和可維護性)應用, 的確可謂之重要而又脆弱.

其實之前UEFI三不五時就一直在修各種SMM漏洞, 像是利用buffer溢位之類有的沒有
的東西去"騙" SMM裡面的程式碼作一些不該做的事情.
當然照這次的漏洞, 看起來好像是可以更直觀的去改SMM程式, 的確是有相當高的危險性

不過x86陣營自然也有意識到SMM的缺點 最大的問題就是時間暫停這件事情
SMI一多必然會影響系統效能, 在大型Server時間就是金錢的世界中,x86陣營也一
直在盡量避免SMM的使用, 不久的將來也許就可以在周邊條件符合的環境下,直接
關閉SMM功能了.

到這邊P幣就騙夠了 謝謝各位的耐心觀看:P

: 不過,不管是IOActive或AMD都認為要攻陷CVE-2023-31315漏洞並不容易。
: AMD已於上周修補了大多數的處理器,但並不打算修補AMD Ryzen 3000 Series桌面處理器,
: 使得有用戶抱怨,3000系列是在2019年及2020年推出,它們存在還不到5年,還有很多人在使
: 用,也依然強大,呼籲AMD應該要重視這些用戶。
: https://www.ithome.com.tw/news/164412
: Intel:你看AMD也有問題吧,我還送刺客教條還算佛了吧
: 水桶都聽到咕嚕咕嚕的聲音了

--

※ PTT留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.134.212.51 (臺灣)
PTT 網址

smallreader 08/12 20:35解惑給推

a58524andy 08/12 20:37科普推

ericinttu 08/12 20:39跟我想的差不多 有看沒有懂

canandmap 08/12 20:51

圖 研究人員揭露AMD晶片的Sinkclose漏洞,存

Altair 08/12 21:01懂了 多重宇宙的另個我應該懂了

kuroshizu21 08/12 21:13得推一下, 其實真的還寫得蠻容易理解

kuroshizu21 08/12 21:14的, 可以明白這個事情大概是怎麼一回

kuroshizu21 08/12 21:14事...至於專業的細節, 外行人的我當

kuroshizu21 08/12 21:15然是不會懂, 也應該不需要懂(喂~~~

riverkid20 08/12 21:18好像跟我想的差不多,但我看不懂,推

commandoEX 08/12 21:18簡單來說就是歷史共業(?

endorphin424 08/12 21:20推簡單明白,所以這東西就是時代必

endorphin424 08/12 21:20然產物,以後有機會淘汰就是了對吧

sellgd 08/12 21:20在電蝦推 跟我想的差不多 是政確的事嗎?

jhjhs33504 08/12 21:25這跟Intel ME的漏洞應該是差不多嚴重

jhjhs33504 08/12 21:25架構問題比較難完全修復最好直接蛋雕

跟Intel ME嚴格說來是不太一樣. ME漏洞會直接暴露出來讓人可以直接攻擊,入侵後就 基本無敵什麼都能做,要偷資料要改SPI, 應該都可以做得到. SMM漏洞照說明你得要先想辦法入侵OS取得ring0權限, 然後再跑進SMM去偷做事 不過修復上我就不知道這次對於AMD來說好不好修理. SMM本身並不是造成漏洞的主要因素, 問題是在CPU鎖定SMM要用到的RAM,又叫SMRAM 這個鎖定機制的安全性現在有問題. 所以如果AMD能在AGESA又或是microcode去修改 鎖定機制應該就ok.

abc21086999 08/12 21:28聽起來是A片的情節

Suicopas 08/12 22:13

orze04 08/12 22:35可以篡改ring0 的部分,那一堆事都可以辦

orze04 08/12 22:35到了

v86861062 08/12 22:36推推

terry12369 08/12 22:36https://imgur.com/6DIELvI.jpg

圖 研究人員揭露AMD晶片的Sinkclose漏洞,存

DivineSX 08/12 22:40

yymeow 08/12 22:41專業推推

dos01 08/12 22:41我還是沒很懂 看起來SMM就是一個弊大於利

dos01 08/12 22:41的東西 為什麼還要讓他繼續存在?

因為幾十年來大家都是這麼過的(X)

avans 08/12 22:55推淺顯易懂的解說!

wahaha99 08/12 23:02我猜 存在的理由就是為了相容

wahaha99 08/12 23:02相容些很古老、很底層的東西

albertfeng 08/12 23:09推科普 雖然我看不懂

E7lijah 08/12 23:10https://i.imgur.com/zNYkiOG.jpeg

圖 研究人員揭露AMD晶片的Sinkclose漏洞,存

futakinohi 08/12 23:14跟我想的一樣

cancelpc 08/12 23:17就跟Intel的ME一樣太上皇

x20165 08/12 23:35關機還能入侵嗎?

不能

jacky40383 08/12 23:41嗯 好 懂了

Arbin 08/12 23:49但這感覺是CPU的太上皇 不像ME管很多?

SMM是CPU的隱藏第二人格 ME是隱形地縛靈管家, CPU是住在這個家的人.

orangesabc 08/12 23:56看不懂

sdbb 08/13 00:24謝謝

s25g5d4 08/13 00:31不是 拿掉洞越多阿 韌體直接隨便改欸

沒錯你拔掉以前能靠SMM擋住的一些東西又要另外處理了

ohmylove347 08/13 00:40知識推

wild2012 08/13 00:51意思就是 一般人無所謂 server有點影響

wild2012 08/13 00:52比起INTEL 根本不算個事...

理論上當然是Server影響比較大, 畢竟上面還會跑一些重要的服務, 又真正關係到 資安問題 對於client來說,要怎麼從這個漏洞去盜取你的重要資料, 以這個年代來說 也就是一些帳號密碼, 那是另外一個故事了.

yys310 08/13 01:13推推

jjjj222 08/13 02:04基本上關心這種資安的東西, 就會知道

jjjj222 08/13 02:04一堆研究結果的觸發條件都很嚴苛...

jjjj222 08/13 02:05看多了以後我都懶得看了.. 真的太難

jjjj222 08/13 02:06反正我資料的價值絕對<<<他們要花的資源

bitcch 08/13 02:30感謝科普 之前還不知道有這東西

not5566 08/13 03:09魔眼4什麼

窩不知道, 可能要問小姐姐

tomsawyer 08/13 03:44聽起來對標的是intel ME?

不是喔, 其實有很大的差別. 與Intel ME同等地位的, 目前來說算是AMD PSP, ARM上可以把他想成類似XCP. 跟SMM完全不同的地方在於 Intel ME/ AMD PSP本身不是跑在你主要CPU上的 他們兩個都是在PCH or CPU SOC上面有多埋一顆小晶片,ME好像是類似atom架構 PSP則其實是一顆小ARM. 這個小晶片才是在執行ME/PSP的人. SMM真正要找個對應的東西的話, 他比較像是ARM的Trust Zone. 都是在同一顆主晶片上分割一部分資源來執行, SMM/TrustZone都有高於一般程序的權限, 而且對一般程序來說這兩個都 像是隱形人. 不過TrustZone的執行不像SMM會整個進入時間暫停一樣的狀態

jay0215 08/13 04:58有看有推!

jyhfang 08/13 05:01厲害 謝分享

ltytw 08/13 07:06快推 免的別人以為我

quamtum 08/13 07:10如果都能改bios,那一開始就進smm就好,

quamtum 08/13 07:11不用使用任何漏洞

quamtum 08/13 07:12smm可以做很多事,例如bios gui的usb

quamtum 08/13 07:12driver可以放在這

quamtum 08/13 07:14windows/linux也會利用smi做想做的事情,

quamtum 08/13 07:14拿掉很多os需要改

其實以Windows/Linux來說 他本身是不需要SMI的. SMM設計上其實就是故意要獨立於OS之外, 讓OS看不見他 但Windows下/Linux下有沒有會遇到SMI的狀況呢? 還是有. 要舉例又要提到SPI寫入, 例如當Windows/Linux需要寫入UEFI variable, 他會呼叫UEFI service, 然後uefi service會轉發SMI進SMM再去寫入SPI ROM. 對OS來說其實他是不知道後半段UEFI service發了SMI這件事情的. 另外一個例子是shutdown或是sleep, 這個部分則是晶片組會在收到OS要求shutdown/ sleep要求時, 發出SMI, 再跑去SMM裡面處理一些前置作業, 才進入shutdown/sleep.

※ 編輯: comipa (36.225.63.74 臺灣), 08/13/2024 07:53:24

azumanga 08/13 07:56推。

cmshow 08/13 08:39推科普長知識

warshipchiu 08/13 09:24專業推

pttbeigowow 08/13 09:29那該買amd還是intel 請大大解惑

skyclam 08/13 09:43能讓smm driver被置換掉,代表oem完全沒

skyclam 08/13 09:43對spi rom做加密, 三好加一好而已

kaltu 08/13 09:45這是整個攻擊鏈第二步以後要用到的東西,不

kaltu 08/13 09:45能說不是第一步所以就不用管

kaltu 08/13 09:45另外說只有server要在意也是常見的迷思,任

kaltu 08/13 09:45何人,在這個遠端工作的時代,只要你的電腦

kaltu 08/13 09:45裡有存取你公司的帳號密碼,你就是有價值目

kaltu 08/13 09:45

kaltu 08/13 09:45就算你任職的公司也不怎麼重要,只要你公司

kaltu 08/13 09:45的某個其他部門有跟稍微重要一點的其他客戶

kaltu 08/13 09:45有系統上的連線就有價值

kaltu 08/13 09:45不是你本身有價值而是你的存取權有價值

kaltu 08/13 09:45很多人以為自己不過就是個小咖不用怕,這種

kaltu 08/13 09:45心態就是出事的前奏,你作為整個攻擊鏈的一

kaltu 08/13 09:45個小踏板還是有攻擊價值的

kaltu 08/13 09:48另外其實SMM就把他想成虛擬機控制器就好了

kaltu 08/13 09:48,你的作業系統是在他之後的,平時都很透明

kaltu 08/13 09:48,但要搞事的時候理論上更高層的程式包含作

kaltu 08/13 09:48業系統在內,是不會知道他幹了什麼的

Glacier319 08/13 10:08之前windows不支援thunderbolt 所

Glacier319 08/13 10:08以driver做不到的部分都是靠BIOS裡

Glacier319 08/13 10:08的SMI去硬搞 快速插拔幾次後window

Glacier319 08/13 10:08s就藍屏了

Garrys 08/13 11:38推!

Amulet1 08/13 13:30看懂了 AMD YES

wei115 08/13 15:07不是太懂,uefi載入不是會有驗證,所以修

wei115 08/13 15:07改後的uefi無法啟動,但為什麼可以改spi

wei115 08/13 15:07rom後還能啟動?

wei115 08/13 15:09喔喔,看到前一篇文有解釋了,原來是系統

wei115 08/13 15:09廠沒開

理由: 1.系統廠沒開AMD提供的驗證機制(Platform Secure Boot) 2.UEFI部分本身的驗證有可能被幹掉 要講這個會講到root of trust/chain of trust的概念. 下次好了:P

※ 編輯: comipa (36.225.63.74 臺灣), 08/13/2024 15:35:17

xiaotee 08/13 17:32謝謝科普

smallreader 08/13 17:47platform secure boot多一個字,是不

smallreader 08/13 17:47是跟安全開機不一樣的東西?

KonBanwarire 08/13 17:53sb是edk2的吧,amd psp相關的東西

KonBanwarire 08/13 17:53也不是系統廠想關就關的

skyclam 08/13 18:06psb跟secure boot是不一樣的東西喔

沒錯 他是不同的東西 雖然都是安全性相關 就乾脆順便講下好了. UEFI的secure boot是什麼? 簡單來說就只是 驗證"將要執行"的模組的可靠性 問題在於 那從CPU開機第一時間拾取程式碼的時候, 誰知道這個程式碼可不可靠? 這就是所謂的root of trust, 你的整個系統平台上誰來負責做第一棒安全性驗證的問題 以純UEFI沒有其他機制輔助的情境會變成: 1. CPU fetch UEFI (SEC/PEI/DXE...etc) 2. UEFI 安全性模組啟動 3. UEFI 安全性模組負責在接下來的模組要被執行的時候一一做安全性驗證 4. UEFI 安全性模組最後要驗證OS的開機程序 5. 交棒給OS 所以在#2之前其實也沒有辦法保證安全性 AMD 的Platform Secure Boot或是其他廠商的類似功能就是在 #1之前(或同時)就去驗證整個UEFI又或是其他韌體的可靠性 接著才允許CPU開始執行fetch來的程式, 在這裡他就是root of trust的角色 而且這個root of trust同時必須保證自己的安全性 所以通常會搭配某種機制讓平台上可以去進行某種綁定以策安全 然後我們跟著上面的途徑走, #2以後負責驗證的這個角色換成了UEFI安全性模組 在系統有多個韌體模組的情況下, 這就會像是接力賽跑一樣, 負責做驗證的人一棒 一棒往下接力,這個就是所謂的chain of trust.

※ 編輯: comipa (220.134.212.51 臺灣), 08/13/2024 19:49:36 ※ 編輯: comipa (220.134.212.51 臺灣), 08/13/2024 19:50:49 ※ 編輯: comipa (220.134.212.51 臺灣), 08/13/2024 19:51:35 ※ 編輯: comipa (220.134.212.51 臺灣), 08/13/2024 19:54:36

smallreader 08/13 20:05想再問Windows裡面有個驅動(系統裝置

smallreader 08/13 20:05)叫 dynamic root of trust 也是應用

smallreader 08/13 20:05到同一個root of trust來源嗎~?

smallreader 08/13 20:08自動更新所裝的這個DRTM不曉得是什麼

smallreader 08/13 20:22謝謝,查完看到DRTM也是開機最初載入

smallreader 08/13 20:22不受信任的代碼,沒有處理#1之前驗證

skyclam 08/13 20:40廠商不肯開psb多半是想保留cpu的二手市

skyclam 08/13 20:40場吧,開了會鎖cpu的

smallreader 08/13 20:48哇靠 開了會鎖CPU 一種蘋果T1的概念?

weimr 08/13 22:04

commandoEX 08/13 22:59沒有二手市場廠商比較爽吧

yunf 08/14 00:01簡單來說就是有人可以潛伏在你的主機板裡面

yunf 08/14 00:01就算你還原系統也沒有用 解決方法就是 離線

yunf 08/14 00:01還原系統 更新補丁 包括覆寫 bios 再上線更

yunf 08/14 00:01厲害一點的就是把它備份起來再把惡意程式抓

yunf 08/14 00:01出來看他裡面到底是什麼

yunf 08/14 00:04再修正一下可能是任何硬體 說不定存在於可程

yunf 08/14 00:04式化的電競滑鼠面 還有無線網路設備都有可能

yunf 08/14 00:04只要是他能夠被改寫系統會讀取的都有可能

yunf 08/14 00:09其實這都還只是在講程式化的部分都還沒有講

yunf 08/14 00:09到晶片的部分

wardraw 08/14 10:52知識有長有推

ry3298 08/15 00:24