Re: [情報] Intel嚴重漏洞 OS更新將會降低效能

看板PC_Shopping作者 (灰塵)時間6年前 (2018/01/05 17:37), 編輯推噓4(403)
留言7則, 4人參與, 6年前最新討論串32/38 (看更多)
※ 引述《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就已經很有趣了 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.219.126.91 ※ 文章網址: https://www.ptt.cc/bbs/PC_Shopping/M.1515145030.A.CF3.html

01/05 17:43, 6年前 , 1F
所以這個就不是買麥噹噹套餐
01/05 17:43, 1F

01/05 17:43, 6年前 , 2F
而是改去翻人家的垃圾桶嗎@@
01/05 17:43, 2F

01/05 17:47, 6年前 , 3F
不算是啦...就麥噹噹每份套餐都買,只是看買到哪一
01/05 17:47, 3F

01/05 17:48, 6年前 , 4F
個的時候的東西拿出來是最快的,那就bingo了
01/05 17:48, 4F

01/05 17:56, 6年前 , 5F
更新後以前開一堆網頁不會頓現在都會卡 是中了嗎
01/05 17:56, 5F

01/05 18:01, 6年前 , 6F
清楚
01/05 18:01, 6F

01/05 18:02, 6年前 , 7F
不應該只是被Debuff而已
01/05 18:02, 7F
文章代碼(AID): #1QJqT6pp (PC_Shopping)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 32 之 38 篇):
文章代碼(AID): #1QJqT6pp (PC_Shopping)