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

By Mason
at 2018-01-04T13:20
at 2018-01-04T13:20
Table of Contents
※ 引述《kira925 (1 2 3 4 疾風炭)》之銘言:
: https://googleprojectzero.blogspot.tw/2018/01/reading-privileged-
: memory-with-side.html?m=1
: https://tinyurl.com/y82aqvbf (縮網址)
: Google:我忍你們很久了
: 以下內容只是粗略看過 有錯誤請指正
: 目前Google找到了三種不同的問題
: 第一種: bounds check bypass 三家都有中獎,針對特殊的BPF JIT Compiler
: (Google的概念測試對象: Intel Xeon/AMD FX/AMD A8/ARM A57)
: 第二種: branch target injection Intel
: (概念測試對象: Intel Xeon)
: 第三種: rogue data cache load Intel
: (概念測試對象: Intel Xeon)
: 不過情節差異大概是 第一種並不是系統預設會去開啟的東西
: 第二與第三是日常的系統指令
: 順帶一提 第一種可能是先天SPEC就有漏洞
: ARM的回應表示Work as Intended不過也承認確實有漏洞存在
: 他們已經準備好對應的更新了(也要做FUCKWIT?)
: ----
: 讓我們繼續看下去
針對第三種,從paper的例子裡大致講一下
1 ; rcx = kernel address
2 ; rbx = probe array
3 retry:
4 mov al, byte [rcx] <--讀取kernel address
5 shl rax, 0xc
6 jz retry
7 mov rbx, qword [rbx + rax] <--user address
第4行,intel在scheduler要issue指令前,沒有確認load是否有權限讀取
等到指令執行完,要retire時才核查權限
但是等到這個時候,後面的指令也都執行完了
第7行的cache line [rbx + rax]從記憶體搬到了cache內
因為[rbx + rax]是位於user可以存取的範圍內
所以之後可以藉由讀取不同cache line,看他是cache hit/miss
來猜測kernel address裡的內容是什麼
至於其他家處理器,在scheduler要issue指令前就確認了權限
因此第4行指令就根本不會執行了,更不用說後面的567行了
舉個白話文的例子來說
未成年的小明到i餐廳點"高級"清酒喝,服務生在點酒時並未確認小明身分證
把清酒加熱後,上給小明時才發現他未成年
雖然小明沒有喝到酒,但是酒早已被加熱了
小明藉由酒溫知道了哪一瓶才是"高級"清酒,並把他偷出來喝掉
至於其他a餐廳,在點酒時就會先確認身分證,服務生自然不會加熱清酒
因此小明永遠不知道a餐廳真正的"高級"清酒是哪一瓶
例子講完了,至於要怎麼修?
那就在scheduler要issue訪存指令前先確認權限阿
根據架構不同,如果權限存放的地方離scheduler有點遠
讀起來多花一點時間,那就把頻率降低一點來meet timing
或者每個存取都多花一個cycle來確認權限囉
--
: https://googleprojectzero.blogspot.tw/2018/01/reading-privileged-
: memory-with-side.html?m=1
: https://tinyurl.com/y82aqvbf (縮網址)
: Google:我忍你們很久了
: 以下內容只是粗略看過 有錯誤請指正
: 目前Google找到了三種不同的問題
: 第一種: bounds check bypass 三家都有中獎,針對特殊的BPF JIT Compiler
: (Google的概念測試對象: Intel Xeon/AMD FX/AMD A8/ARM A57)
: 第二種: branch target injection Intel
: (概念測試對象: Intel Xeon)
: 第三種: rogue data cache load Intel
: (概念測試對象: Intel Xeon)
: 不過情節差異大概是 第一種並不是系統預設會去開啟的東西
: 第二與第三是日常的系統指令
: 順帶一提 第一種可能是先天SPEC就有漏洞
: ARM的回應表示Work as Intended不過也承認確實有漏洞存在
: 他們已經準備好對應的更新了(也要做FUCKWIT?)
: ----
: 讓我們繼續看下去
針對第三種,從paper的例子裡大致講一下
1 ; rcx = kernel address
2 ; rbx = probe array
3 retry:
4 mov al, byte [rcx] <--讀取kernel address
5 shl rax, 0xc
6 jz retry
7 mov rbx, qword [rbx + rax] <--user address
第4行,intel在scheduler要issue指令前,沒有確認load是否有權限讀取
等到指令執行完,要retire時才核查權限
但是等到這個時候,後面的指令也都執行完了
第7行的cache line [rbx + rax]從記憶體搬到了cache內
因為[rbx + rax]是位於user可以存取的範圍內
所以之後可以藉由讀取不同cache line,看他是cache hit/miss
來猜測kernel address裡的內容是什麼
至於其他家處理器,在scheduler要issue指令前就確認了權限
因此第4行指令就根本不會執行了,更不用說後面的567行了
舉個白話文的例子來說
未成年的小明到i餐廳點"高級"清酒喝,服務生在點酒時並未確認小明身分證
把清酒加熱後,上給小明時才發現他未成年
雖然小明沒有喝到酒,但是酒早已被加熱了
小明藉由酒溫知道了哪一瓶才是"高級"清酒,並把他偷出來喝掉
至於其他a餐廳,在點酒時就會先確認身分證,服務生自然不會加熱清酒
因此小明永遠不知道a餐廳真正的"高級"清酒是哪一瓶
例子講完了,至於要怎麼修?
那就在scheduler要issue訪存指令前先確認權限阿
根據架構不同,如果權限存放的地方離scheduler有點遠
讀起來多花一點時間,那就把頻率降低一點來meet timing
或者每個存取都多花一個cycle來確認權限囉
--
Tags:
3C
All Comments

By Ophelia
at 2018-01-07T01:36
at 2018-01-07T01:36

By Puput
at 2018-01-10T00:05
at 2018-01-10T00:05

By Caitlin
at 2018-01-12T13:56
at 2018-01-12T13:56

By Noah
at 2018-01-15T05:34
at 2018-01-15T05:34

By Olive
at 2018-01-18T17:31
at 2018-01-18T17:31

By Zora
at 2018-01-21T22:13
at 2018-01-21T22:13

By Rosalind
at 2018-01-25T12:12
at 2018-01-25T12:12

By Agatha
at 2018-01-28T06:25
at 2018-01-28T06:25

By James
at 2018-01-30T03:24
at 2018-01-30T03:24

By Christine
at 2018-01-31T22:04
at 2018-01-31T22:04

By Christine
at 2018-02-03T04:53
at 2018-02-03T04:53

By Lauren
at 2018-02-04T07:00
at 2018-02-04T07:00

By Valerie
at 2018-02-07T11:34
at 2018-02-07T11:34

By Robert
at 2018-02-11T05:24
at 2018-02-11T05:24

By Dinah
at 2018-02-15T23:40
at 2018-02-15T23:40

By Hedda
at 2018-02-18T06:29
at 2018-02-18T06:29

By Erin
at 2018-02-22T00:40
at 2018-02-22T00:40

By Mia
at 2018-02-22T10:45
at 2018-02-22T10:45

By Aaliyah
at 2018-02-24T11:20
at 2018-02-24T11:20

By Hazel
at 2018-02-26T09:52
at 2018-02-26T09:52

By Victoria
at 2018-03-01T22:49
at 2018-03-01T22:49

By Hedda
at 2018-03-04T17:37
at 2018-03-04T17:37

By Daniel
at 2018-03-04T21:25
at 2018-03-04T21:25

By Caroline
at 2018-03-05T12:49
at 2018-03-05T12:49

By Dora
at 2018-03-08T17:05
at 2018-03-08T17:05

By Michael
at 2018-03-13T08:57
at 2018-03-13T08:57

By Hedda
at 2018-03-16T14:57
at 2018-03-16T14:57

By Faithe
at 2018-03-17T09:35
at 2018-03-17T09:35

By Ula
at 2018-03-20T14:33
at 2018-03-20T14:33

By Daniel
at 2018-03-24T19:52
at 2018-03-24T19:52

By William
at 2018-03-29T14:37
at 2018-03-29T14:37

By Heather
at 2018-04-03T12:07
at 2018-04-03T12:07

By Donna
at 2018-04-08T03:07
at 2018-04-08T03:07

By Michael
at 2018-04-08T19:40
at 2018-04-08T19:40

By Genevieve
at 2018-04-10T18:15
at 2018-04-10T18:15

By Elizabeth
at 2018-04-13T13:27
at 2018-04-13T13:27

By Kyle
at 2018-04-16T05:41
at 2018-04-16T05:41

By Kyle
at 2018-04-20T23:35
at 2018-04-20T23:35

By Kyle
at 2018-04-25T18:34
at 2018-04-25T18:34

By Skylar DavisLinda
at 2018-04-28T21:52
at 2018-04-28T21:52

By Doris
at 2018-05-03T06:46
at 2018-05-03T06:46

By Callum
at 2018-05-07T17:16
at 2018-05-07T17:16

By Lauren
at 2018-05-12T14:24
at 2018-05-12T14:24

By Dorothy
at 2018-05-13T17:14
at 2018-05-13T17:14

By Ida
at 2018-05-16T12:48
at 2018-05-16T12:48

By Todd Johnson
at 2018-05-19T10:47
at 2018-05-19T10:47

By Agnes
at 2018-05-19T20:56
at 2018-05-19T20:56

By Eden
at 2018-05-21T22:26
at 2018-05-21T22:26

By Caroline
at 2018-05-26T18:23
at 2018-05-26T18:23

By Oliver
at 2018-05-30T10:07
at 2018-05-30T10:07

By James
at 2018-05-30T17:56
at 2018-05-30T17:56

By George
at 2018-06-03T13:35
at 2018-06-03T13:35

By Selena
at 2018-06-05T22:42
at 2018-06-05T22:42

By Carolina Franco
at 2018-06-10T10:03
at 2018-06-10T10:03

By Tom
at 2018-06-11T06:11
at 2018-06-11T06:11

By Bethany
at 2018-06-12T22:35
at 2018-06-12T22:35

By Sandy
at 2018-06-17T15:41
at 2018-06-17T15:41

By Yuri
at 2018-06-22T02:15
at 2018-06-22T02:15

By Wallis
at 2018-06-23T18:00
at 2018-06-23T18:00

By Mason
at 2018-06-25T07:15
at 2018-06-25T07:15

By Quanna
at 2018-06-25T16:13
at 2018-06-25T16:13

By Steve
at 2018-06-25T17:57
at 2018-06-25T17:57

By Mia
at 2018-06-26T16:01
at 2018-06-26T16:01

By Robert
at 2018-07-01T12:08
at 2018-07-01T12:08

By Enid
at 2018-07-02T22:02
at 2018-07-02T22:02

By Freda
at 2018-07-06T20:35
at 2018-07-06T20:35

By Rachel
at 2018-07-11T19:03
at 2018-07-11T19:03

By Elizabeth
at 2018-07-12T17:03
at 2018-07-12T17:03

By Xanthe
at 2018-07-16T03:18
at 2018-07-16T03:18

By Freda
at 2018-07-17T00:30
at 2018-07-17T00:30

By Jack
at 2018-07-18T21:11
at 2018-07-18T21:11

By Daniel
at 2018-07-21T09:07
at 2018-07-21T09:07

By Elvira
at 2018-07-23T20:32
at 2018-07-23T20:32

By Damian
at 2018-07-25T15:46
at 2018-07-25T15:46

By Daniel
at 2018-07-27T01:28
at 2018-07-27T01:28

By Elizabeth
at 2018-07-27T17:58
at 2018-07-27T17:58

By Tom
at 2018-07-30T19:00
at 2018-07-30T19:00

By George
at 2018-07-31T22:17
at 2018-07-31T22:17
Related Posts
微軟三年10億用戶沒達標 Windows 10連Win

By Gary
at 2018-01-04T12:59
at 2018-01-04T12:59
Intel嚴重漏洞 OS更新將會降低效能

By Damian
at 2018-01-04T12:55
at 2018-01-04T12:55
除Intel之外AMD和ARM也中招了

By John
at 2018-01-04T12:37
at 2018-01-04T12:37
Intel嚴重漏洞 OS更新將會降低效能

By Brianna
at 2018-01-04T12:33
at 2018-01-04T12:33
Intel嚴重漏洞 OS更新將會降低效能

By Mason
at 2018-01-04T12:01
at 2018-01-04T12:01