Spectre 幽靈 CPU快取漏洞原理

2021-10-06 07:29:43 字數 1948 閱讀 7482

偶然看到了一篇這樣的推送,但是感覺作者沒有說清楚,所以自己琢磨了好一會兒才弄懂,現在寫來說說自己的通俗理解,meltdown(熔斷)原理和這個類似,網上有很多的詳解,大家可以去看

我們知道,cpu的速度提公升發展非常快,而且又發展出多核的cpu技術,但是從記憶體中讀取指令的速度遠遠小於cpu的執行指令速度,為了提高cpu執行指令的速度,在cpu的內部加上了快取,來存放記憶體中某一塊有很大概率在下次要被執行指令,快取也分為一級(l1)、二級快取(l2)(cpu每個核都有)、**快取(l3)(多核共享)。

如果在一段程式中有這樣一段**

int judge =

114514

;void

foo(

int x)

}int

main()

foo(

11451444);

//此時傳入的11451444大於了judge

}

judge被放在了記憶體中,每次foo()函式被呼叫執行的時候,都要從記憶體中拿到judge的值和x進行比較,但是從記憶體中拿到judge的值的過程是很慢的,但是主函式中調取了foo()函式100次,每次都比judge小,所以cpu會對foo()函式的if分支進行**優化,在下次呼叫foo()函式時,cpu**傳入的x比judge小,先把要執行的**做了,並把資料放到快取中,等到取到judge的時候再把x和judge做判斷,如果x確實比judge小,那麼cpu就會從快取中把之前等待取judge時候存好的資料直接拿出來,如果x比judge大,cpu就會丟棄當前的狀態,重新恢復到執行if分支前的狀態,但是放在快取中的資料不會刪除!!!

參考上面github上spectre的源**

// 首先定義了乙個secret資料

char

*secret =

"the secret data"

;// array1_size放在記憶體中

unsigned

int array1_size =16;

uint8_t array1[

160]=;

uint8_t array2[

256*

512]

;void

victim_function

(size_t x)

其實array1初始化的資料我們不用管,這裡我們用到了乙個原理,如果讓:

size_t x =

(size_t)

(secret -

(char

*)array1)

;

那麼x就是array1位址和secret位址之間的差值,畫乙個圖理解一下:

[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-fcgchspa-1589872108577)(c:\users\asus\desktop\1.jpg)]

那麼x = 0x546789 - 0x123456 = 0x333333,那麼這時候通過陣列array1去訪問secret首位址中的值就可以這樣

value_type val = array1[x]

;// 那麼val的值就是array1的首位址加上偏移量0x333333(也就是0x456789)出的資料

// 當然,這樣訪問超出了陣列array1的大小

// 正常的**cpu會報異常越界訪問並停止,但是通過**分支的快取機制可以做到這一點!

size_t visit =

0x555555

- array1;

// 呼叫victim_function

victim_function((

int)visit)

;

獲取核心位址0x555555處的值

馬上給Meltdown和Spectre漏洞打補丁

元旦之後的第乙個工作日可謂是驚喜不斷,4號就傳來了 google project zero 等團隊和個人報告的 meltdown 和 spectre 核心漏洞的訊息,首先簡單介紹一下這兩個核心漏洞。meltdown 打破了使用者應用程式和作業系統之間最基本的隔離,這種攻擊允許程式訪問其他程式和作業系...

CPU多級快取

l1 cache是cpu第一級快取,分為資料快取和指令快取.以幫伺服器cpu的l1快取的容量通常在21 4906kb.l2 cache由於l1級快取記憶體容量限制,為了再次提高cpu的運算速度在cpu外部放置已高速儲存器,即二級快取。l3 cache現在都是內建的,而他可以進一步降低記憶體延遲,同時...

CPU 快取學習

1 cpu快取描述 對於密集型應用提高cpu處理速度。核心提公升快取利用 2.理解cpu架構 l3 記憶體是共享,l2 l1 分開資料與指令 cpu獨享 大約時鐘週期l14 l212 l330 記憶體100 我的電腦3.3ghz 1個時鐘週期大約0.33納秒。如果cpu操作的資料或指令都在快取中則直...