日前,有關英特爾芯片漏洞的討論遍及整個IT圈。有關英特爾芯片漏洞細節的報告最先發布在由谷歌公司、美國賓夕法尼亞大學、馬里蘭大學、奧地利格拉茨技術大學、澳大利亞阿德萊德大學等機構研究人員聯合設計的網站上。這份報告披露,包括英特爾在內的各主流芯片,其底層技術都采用了一種叫“推測性執行”的方法。
在這份報告影響下截至周四,英特爾股價在兩日內下跌5.2%,市值蒸發113億美元。同時,AMD股價累計上漲10.4%。
多位華爾街分析師預計,AMD將利用英特爾出現的安全問題。瑞穗證券分析師維賈伊·拉克什(Vijay Rakesh)在一份報告中稱,鑒于AMD使用了不同的架構,目前尚未發現漏洞,AMD可能會把它作為一項營銷優勢。
拉克什指出,英特爾目前在數據中心市場占據高達99%的份額,這對AMD來說是一個重大機遇。金融信息提供商FactSet的數據顯示,分析師預計,2017年,英特爾數據中心集團將創造185億美元收入,74億美元營業利潤。
“長期客戶可能更希望把AMD,甚至是ARM作為替代選擇,以減低架構風險,”美銀美林分析師維維克·阿雅(Vivek Arya)周四在報告中稱,“AMD似乎有望成為最直接受益者。”
AMD在服務器市場份額的大幅增長并不是沒有出現過,該公司在2006年的份額一度達到26%。如果AMD能夠在數據中心業務中拿下10%或15%的份額,那么它的營收可能就會增加數十億美元。
究竟Intel芯片碰到了啥問題?
芯片組是負責聯系中央處理器和周邊設備運作的計算機主板核心組成部分。使用該方法的絕大多數中央處理器為提高性能,會根據被假設為真實的判斷,推測性地執行指令。執行期間,中央處理器會驗證假設,如假設有效,則執行繼續,反之則解除執行。但“推測性執行”可能在執行解除后產生無法消除的副作用,從而導致計算機信息泄露。
針對英特爾芯片的設計缺陷,谷歌“零點項目”團隊介紹了3種不同攻擊方式,前兩種方式被稱為“崩潰”,后一種被稱作“幽靈”。
該團隊認為,這個設計缺陷具有3個特點:首先,沒有任何一個補丁可以同時抵御3種攻擊方式;其次,與傳統病毒不同,攻擊不會留下痕跡,計算機無法在被攻擊時發現;第三,惡意攻擊者可以從一臺虛擬設備上發起攻擊,侵入主機的物理內存,“借道”獲取其他虛擬設備信息。“零點項目”研究員詹·霍恩解釋說,“黑客”可以利用該方法讀取設備內存,獲得密碼、密鑰等敏感信息。
“零點項目”是2014年7月由谷歌公司啟動的互聯網安全項目,成員主要由谷歌內部頂尖安全工程師組成,專門負責找出網絡系統安全漏洞。該團隊原定9日發布英特爾芯片安全漏洞的相關報告,科技網站《紀事》搶先報道這個發現后,該團隊緊急公布了研究結果,完整報告仍將于9日發布。
波及面廣修補困難
芯片被稱為計算機的“大腦”。分析人士認為,英特爾1995年后生產的絕大多數芯片都暴露在風險之中,漏洞波及了大量設備,帶來的問題主要體現在幾個方面:
第一,波及面廣。基于英特爾芯片運行的微軟“視窗”、Linux、蘋果macOS和安卓等主流操作系統,以及谷歌、亞馬遜等公司提供的大型云計算服務都可能受到影響。
第二,修復有難度。盡管谷歌、微軟、亞馬遜等公司正在陸續推出補丁,但這些補丁主要針對被稱為“崩潰”的兩種攻擊方法,防范“幽靈”攻擊則需對硬件進行升級,而更換全球大多數計算設備難度巨大。
第三,或存后遺癥。業內人士稱,現有防護補丁將增加中央處理器負荷,漏洞即使得到修復,也可能導致全球個人電腦性能明顯下降。英特爾基于Linux開源操作系統的開發者戴夫·漢森認為,補丁將使芯片運轉效率降低約5%,對聯網功能的影響甚至高達30%。但英特爾否認類似說法,認為補丁對芯片影響會隨時間減弱。
第四,產業關切深。英特爾的芯片在物聯網、無人駕駛、5G、人工智能、深度學習等新興領域廣泛應用,安全漏洞對這些領域造成的威脅可能從網絡向現實世界延伸。而云計算等服務對芯片計算能力的需求呈指數級提升,修補漏洞對芯片計算效率造成的影響可能拖慢整個行業發展。
英特爾關于安全研究結果的回應
對于這件事,英特爾做出了回應,他們表示,英特爾和其他技術公司對最近媒體報道的一項安全研究已經了解。這一研究中描述的軟件分析方法,當被用于惡意目的時,有可能從被操縱的計算設備中不當地收集敏感數據。英特爾認為,這些攻擊沒有可能損壞、修改或刪除數據。
最近的報道還稱,這些破壞是由“漏洞”或“缺陷”造成的,并且是英特爾產品所獨有的——這是不正確的。根據迄今的分析,許多類型的計算設備(有來自許多不同供應商的處理器和操作系統)都會容易受到類似攻擊。
英特爾致力于為產品和客戶安全提供保障,并與許多其他技術公司(包括 AMD、ARM 控股和多個操作系統供應商)密切合作,以制定用于全行業的方法,迅速、有建設性地解決這一問題。英特爾已開始提供軟件和固件更新來抵御這些破壞。與某些報道中指出的恰恰相反,不同負載受影響程度不同。對于一般的計算機用戶來說影響并不顯著,而且會隨著時間的推移而減輕。
英特爾致力于提供業界最佳實踐,負責任地披露潛在的安全問題,這就是英特爾和其他供應商原本計劃在下周發布更多軟件和固件更新的原因。但由于當前媒體不準確的報道,英特爾今天特此發表聲明。
請與您的操作系統供應商或系統制造商聯系,并盡快采納任何可用的更新。日常遵循抵御惡意軟件的安全操作,也有助于在應用更新之前防止可能的破壞。
英特爾相信其產品在世界上是最安全的,并且在合作伙伴的支持下,當前對這一問題的解決方案,能為客戶提供最佳的安全保障。
與此同時,英特爾也發布了相關的更新:
英特爾方面指出,他們已經為基于英特爾芯片的各種計算機系統(包括個人電腦和服務器)開發了更新,并且正在快速發布這些更新,以保護這些系統免受谷歌Project Zero所報告的兩種潛在攻擊隱患(被稱為Spectre和Meltdown)。英特爾與其產業伙伴在部署軟件補丁和固件更新方面已取得重要進展。
英特爾已經針對過去5年中推出的大多數處理器產品發布了更新。到下周末,英特爾發布的更新預計將覆蓋過去5年內推出的90%以上的處理器產品。此外,許多操作系統供應商、公共云服務提供商、設備制造商和其他廠商也表示,他們正在或已對其產品和服務提供更新。
英特爾相信,這些更新對不同工作負載的性能影響會有不同。對于一般的計算機用戶來說,影響并不顯著,而且會隨著時間的推移而減輕。雖然對于某些特定的工作負載,軟件更新對性能的影響可能一開始相對較高,但隨著采取進一步后續的優化工作,包括更新部署后的識別、測試和軟件更新改進,應該可以減輕這種影響。
系統更新程序可通過系統制造商、操作系統提供商和其他相關廠商獲得。
英特爾將與其產業伙伴和其他廠商一起繼續合作以解決這些問題,也感謝他們的支持和協助。英特爾鼓勵所有計算機用戶啟用操作系統以及其他計算機軟件的自動更新功能,以確保其系統是最新版本。
他們強調,近日公布的安全更新在實際部署中并不會影響性能。
具體測試結果包括:
蘋果:“我們的GeekBench 4基準測試以及Speedometer、JetStream和ARES-6等常見的Web瀏覽基準測試表明,2017年12月的更新沒有顯著降低macOS和iOS設備的性能。”
微軟:“絕大多數Azure客戶不會感受到此次更新對性能的影響。我們已經優化了CPU和磁盤I/O路徑,在采納更新后沒有看到對性能產生明顯的影響。”
亞馬遜:“我們沒有觀察到這對絕大多數EC2工作負載的性能有產生實際的影響。”
谷歌:“在包括云基礎設施在內的大多數工作負載上,我們看到對性能的影響可以忽略不計。”
英特爾相信,這些更新對性能的影響在很大程度上取決于于具體的工作負載。對于一般的計算機用戶來說影響并不顯著,并會隨著時間的推移而減輕。
背后的原理和分析
首先我們先要明白這次的漏洞是啥,我們先從機制說起來。這次曝光的漏洞一組三個,基本原理都是一樣的。
而在具體解析之前,我們需要搞清楚幾個概念:
一是緩存(Cache):
CPU執行指令,最大的速度瓶頸不在計算,而在于內存訪問。為了降低內存訪問需要的時間,現代CPU全部都設計了緩存。通俗地說,就是把曾經讀過的內存,備一份在速度更快的緩存里。下次再讀同一塊數據的時候就可以直接從緩存里取,就會更快;
另一個亂序執行(OOO):
因為有訪存瓶頸,指令之間的執行時間差距可能非常大。一條普通的計算指令1拍結束。一條訪存指令如果緩存命中,需要10到100拍;如果緩存不命中,到內存里取,需要上萬拍甚至更多。如果上一條指令被訪存卡了十萬拍,后面其他的指令只能等著嗎?不可能的,所以現代CPU全部都設計了亂序執行的特性。把指令比做人的話,
順序執行就是排隊入場,先來后到,一直保持同一個順序。前邊的人停下了,后邊所有人都必須跟著停。亂序執行就好象逛超市,大家排著隊進場每人發個編號,之后自由亂逛,到結賬的地方如果你前邊編號的還有人沒出去,你就在出口坐著等會兒,最終實現大家出去的時候仍然按進入的順序排成一隊。坐著等前邊人回來的那個地方,你可以想象有幾排椅子的等候區,有個保安看著給大家排號,這個機構學名叫做ROB。
還有個概念叫做異常:
計算機只有一塊內存,這塊內存上既存著某個不知名應用的運行信息,也存著你的支付寶密碼。怎么樣防止不知名小程序看到你的支付寶密碼呢?當程序讀內存的時候,CPU會幫忙檢查讀的地址是否屬于這個程序。如果不屬于,就是非法訪問,CPU會在這條指令上產生一個異常,報操作系統槍斃。
操作系統為了處理異常,有一個要求:如果出現異常,那么異常指令之前的所有指令都已經執行完,異常指令之后的所有指令都尚未執行。
但是我們已經亂序執行了啊,怎么辦?所以ROB承擔起這個責任。指令亂序執行的時候,要修改什么東西都暫且記著,不真正修改。只有在從ROB里排隊出去的時候,才真正提交修改,維持指令之間的順序關系。
如果一條指令產生了異常,那么它會帶著異常來到ROB排隊。ROB按順序把之前的正常指令全部提交了,看到這條指令帶有異常之后就封鎖出口,異常指令和其后其他指令會被拋棄掉,不予提交。
還需要了解一下投機執行:
分支指令是最討厭的。例如“如果x<3,則執行a-b-c;否則,就執行d-e-f”。CPU大超市的入口保安,遇到正常指令只管按順序放進場,控制下超市里的人流量就OK。但遇到分支指令就會傻掉,因為不等這個分支指令執行完,就不知道該放abc進場,還是放def進場。
能傻傻的等分支出來再繼續放人嗎?不可能的。現代CPU都設計有投機執行的特性。
入口保安會根據歷史上這條分支取過哪邊,來猜測這一次會取哪邊。比如以前一百次分支都取的是abc那邊,那這一次我肯定猜它還會取abc那邊,我就直接放abc跟著進去。
萬一猜錯了?讓出口那的ROB把abc取消掉不讓他們提交就行了,我這邊再放def進去。
再來了解一下微結構側面效應:
被取消掉的指令不會得到提交,所以它們修改不了任何東西,也不會產生異常。所以我大可以隨意去投機執行指令,不會有任何危險,因為大不了我取消掉他們就萬事大吉了。——體系結構設計者如是想。這次的全部幾個BUG就都出在這里。被取消掉的指令,雖然不會造成結構上的影響,但在微結構上會留下可以觀測的影響——就是緩存。
這些被取消掉的指令不受異常的控制,可以訪問任何東西,比如你的支付寶密碼,然后借口自己執行錯了被取消掉,就不會被操作系統管。體系結構設計者認為被取消掉的指令看到你的支付寶密碼不會產生問題,因為它們留不下任何痕跡,但它們還是留下了:它們曾訪問過哪些內存,哪些內存的后續訪問就會變快。
我們來做一下攻擊示例:
執行這樣一句代碼:
if (x < array1_size)
y = array2[array1[x] * 4096];
看起來這程序好像非常正經,對array1的訪問甚至有邊界檢查,不讓下標x超過array1的大小。
這邊界檢查很重要,因為要訪問任何地址,比如你的支付寶密碼的第一位(假設為k),存儲在地址v的話,令x=v-array1,array1[x]就是在訪問地址v了。
不過這種赤裸裸的越界訪問一定會觸發異常,然后被操作系統槍決罷了。我們不能那么露骨。
if (x < array1_size)
y = array2[array1[x] * 4096];
開始執行的第一步,CPU首先會遇到一條分支指令,判斷x和array1_size誰大。假設array1_size沒在緩存里,CPU需要跑去內存里取。
在把array1_size取回來之前沒人知道x和array1_size誰大,于是有一萬拍的時間內CPU都不知道這個邊界檢查是成功了還是失敗了,這個時間窗口內CPU將繼續投機執行。
CPU猜測可能是x更小,投機執行下面的語句。你會發現這種猜測是可以被攻擊者誤導的,攻擊者可以在開始之前先用x=0多次執行這句代碼,讓CPU誤以為x大多數時候都很小。
但實際上,這次的x突然暗藏殺機,因為x=v-array1,而可愛的CPU就這樣被騙過去了。
if (x < array1_size)
y = array2[array1[x] * 4096];
投機執行的第一步,就是array1[x],試圖訪問你的支付寶密碼。CPU說不可以,于是給這條指令的臉上貼了一張異常罰單,但仍然允許它帶著密碼的真實值k到ROB那里去排隊。 口嫌體正 。
如果這條指令沒有被撤銷,操作系統就會槍斃這個犯規的程序;如果撤銷了,那么體系結構設計者相信你絕對沒辦法活著把k帶走。
if (x < array1_size)
y = array2[k * 4096];
投機執行的第二步。攻擊者嘗試讓投機指令把k留下,而這些最終將被撤銷的指令,唯一能留下的信息就是緩存。
第二條投機指令以k作為地址去訪問array2。k被乘以一個較大的數值,例如頁大小4096,這是出于一個技術細節原因。
假設array2的所有內容都不在緩存中,那么這條指令執行后,將僅有一個位置被加載到緩存上,這個位置的訪問速度將明顯快于其他位置,這個位置就標明了k的值。
if (x < array1_size)
y = array2[array1[x] * 4096];
隨后,array1_size的值讀取到了,CPU后知后覺發現投機執行錯了,于是上面投機執行的犯罪指令全部被取消。
然而這時被取消的指令已經留下了一條緩存項,出賣了密碼k。
攻擊者只需要讀取array2的每一個位置,測量讀取花費的時間,然后找到讀取最快的那個位置對應著k是多少,就這樣攻破了你支付寶密碼的第一位。
之后攻擊者讀取一些其他數據,將array1_size和array2再次擠出緩存,使用x=0反復執行這段代碼欺騙CPU的分支預測,就可以故伎重施,取出你支付寶密碼的下一位,以至于每一位。
-
處理器
+關注
關注
68文章
19834瀏覽量
233989 -
芯片
+關注
關注
459文章
52316瀏覽量
438127 -
英特爾
+關注
關注
61文章
10184瀏覽量
174203
發布評論請先 登錄
常見的漏洞分享

物聯網系統的安全漏洞分析
高通警告64款芯片存在“零日漏洞”風險
如何使用 IOTA?分析安全漏洞的連接嘗試

NFC協議分析儀的技術原理和應用場景
漏洞掃描一般采用的技術是什么
漏洞掃描的主要功能是什么
CANFD芯片應用中關鍵功能和性能指標分析
名單公布!【書籍評測活動NO.43】 算力芯片 | 高性能 CPU/GPU/NPU 微架構分析
軟銀AI芯片代工轉投臺積電,Intel代工業務受挫
如何使用Intel Processor Trace工具查看任意函數執行時間

評論