Intel嚴重漏洞 OS更新將會降低效能 - 3C

Daph Bay avatar
By Daph Bay
at 2018-01-05T17:37

Table of Contents

※ 引述《Sirctal (母豬母豬 夜裡哭哭)》之銘言:
: https://gist.github.com/ErikAugust/724d4a969fb2c6ae1bbd7b2a9e3d4bb6

這code是來自Google關於Spectre的範例程式
https://spectreattack.com/spectre.pdf

獻醜一下我只看程式碼並稍微參照論文的解讀


readMemoryByte()第一個參數是malicious_x、
第二個參數value回傳最有可能的兩個結果,第三個參數score回傳對應的評分(越大越好)

readMemoryByte()會猜測真實位址為(array1真實位址 + malicious_x)的資料
一般來說你對一個只有160bytes的陣列讀array1[12345678]肯定會當掉
因為在虛擬記憶體映射時會找不到(array1的虛擬位址+12345678),
會產生區段錯誤(Segmentation Fault),於是程式就被OS殺掉了

虛擬記憶體映射是現代CPU的基礎,它令程式可以使用實際上零碎的記憶體來組成連續的
而且也能保證User級的應用程式彼此從記憶體上隔離,達成安全性
https://zh.wikipedia.org/wiki/%E8%99%9A%E6%8B%9F%E5%86%85%E5%AD%98
看wiki比較詳細

這份code的核心在victim_function(),原理是基於分支預測

考慮以下程式碼:
if (x < array1_size)
{
temp &= array2[array1[x] * 512];
}

x就是malicious_x(不過程式執行時混入安全的training_x,每五次才會用一次malicious)
array1[x]就是我們想撈出來的資料,array1_size是一個小於array1大小的數字
假設x = 123456789,正常來說執行到array1[x]會當掉
所以碼農會為這段程式碼加上邊界檢查,當x>=array1_size就會不會跑到array1[x]

就在這時候分支預測登場了,CPU猜測會中 temp &= array2[array1[x] * 512],於是讀取
array1[x],然後再讀array2[array1[x] * 512]
假設array1[x]是28,那array2[28*512]到array2[29*512-1]這段就會被載進快取
後面再透過測定讀取array2每一段512bytes的時間,判斷是Cache Hit/Miss
這樣就能猜測array1[x]

我的理解是,與Meltdown相比Spectre無法直接給定目標位址,
只能盡可能全倒出來然後去翻找,感覺挺沒效率的
不過能夠讀取array1[12345789]而不會crash就已經很有趣了

--
Tags: 3C

All Comments

Suhail Hany avatar
By Suhail Hany
at 2018-01-09T21:41
所以這個就不是買麥噹噹套餐
而是改去翻人家的垃圾桶嗎@@
Megan avatar
By Megan
at 2018-01-12T22:47
不算是啦...就麥噹噹每份套餐都買,只是看買到哪一
Megan avatar
By Megan
at 2018-01-16T00:00
個的時候的東西拿出來是最快的,那就bingo了
Kristin avatar
By Kristin
at 2018-01-16T20:05
更新後以前開一堆網頁不會頓現在都會卡 是中了嗎
Hardy avatar
By Hardy
at 2018-01-21T08:10
清楚
Xanthe avatar
By Xanthe
at 2018-01-25T02:50
不應該只是被Debuff而已

Intel嚴重漏洞 OS更新將會降低效能

Olivia avatar
By Olivia
at 2018-01-05T17:05
嘗試提供一個文組見解 不過 過度簡化東西一定會有誤 有能力的還是請看論文 我自己也是菜逼8 有錯請指教 我們假設有個保險箱的管理員,叫做內核先生。 小明的生日是870327,他把自己的生日存在這個保險箱裡。 多年以前,當你問管理員,「嘿 小明生日的第一位數是多少?」,管理員會千里迢迢的去 問小明「我可以給 ...

Intel嚴重漏洞 OS更新將會降低效能

Charlotte avatar
By Charlotte
at 2018-01-05T16:34
更白話一點就是 你去寄物櫃拿東西,謊稱是某某人幾號的櫃子。你跟店員說你先幫我取幾號的物品, 我還要找一下號碼牌。然後店員已經拿出來面前了,但是你卻拿不出證明或是說抱 歉你說錯了。雖然東西不會給你,但是你已經知道是某某人是放什麼樣的東西。 -- 擴充一點的版本: 因為太多人來取物(execute),但找櫃 ...

Intel嚴重漏洞 OS更新將會降低效能

Ula avatar
By Ula
at 2018-01-05T15:59
※ 引述《s25g5d4 (function(){})()》之銘言: : 1 ; rcx = kernel address : 2 ; rbx = probe array : 3 retry: : 4 mov al, byte [rcx] : 5 shl rax, 0xc : 6 jz retry ...

Intel嚴重漏洞 OS更新將會降低效能

Tracy avatar
By Tracy
at 2018-01-05T15:42
※ 引述《jclin (狀態:idle)》之銘言: : ※ 引述《s25Ag5d4 (function(){})()》之銘言: : : (刪) : : 1 ; rcx = kernel address : : 2 ; rbx = probe array : : 3 retry: : : 4 mov a ...

Intel嚴重漏洞 OS更新將會降低效能

Frederic avatar
By Frederic
at 2018-01-05T15:18
※ 引述《s25Ag5d4 (function(){})()》之銘言: : (刪) : 1 ; rcx = kernel address : 2 ; rbx = probe array : 3 retry: : 4 mov al, byte [rcx] : 5 shl rax, 0xc : 6 j ...