時(shí)間:2018-03-22
事件的起點(diǎn)是Intel市售處理器被爆出因?yàn)樵O(shè)計(jì)的缺漏,會(huì)造成原本普通的程序卻可以擁有前所未有的高權(quán)限,甚至可以直接訪問(wèn)核心內(nèi)存當(dāng)中的數(shù)據(jù),這對(duì)于用戶隱私和設(shè)備安全無(wú)疑是多年來(lái)前所未有的噩夢(mèng)。
很快漏洞迅速升級(jí)演變,研究人員稱其為Meltdown”(熔斷)和“Spectre”(幽靈),不僅可以擁有內(nèi)核級(jí)別的高權(quán)限,潛在的危害性、影響的廣闊性、解決的棘手性都始料未及,因此這次曝光的漏洞才會(huì)鬧得沸沸揚(yáng)揚(yáng),關(guān)于漏洞的詳細(xì)信息,捷普安全實(shí)驗(yàn)室做了進(jìn)一步的跟蹤分析。
漏洞原理分析
Meltdown漏洞原理
亂序執(zhí)行可以簡(jiǎn)單的分為三個(gè)階段:
每個(gè)階段執(zhí)行的操作如下:
1) 獲取指令,解碼后存放到執(zhí)行緩沖區(qū)Reservations Stations
2) 亂序執(zhí)行指令,結(jié)果保存在一個(gè)結(jié)果序列中
3) 退休期Retired Circle,重新排列結(jié)果序列及安全檢查(如地址訪問(wèn)的權(quán)限檢查),提交結(jié)果到寄存器
結(jié)合Meltdown利用的代碼片段來(lái)看:
; rcx = kernel address
; rbx = probe array
1 mov al, byte [rcx]
2 shl rax, 0xc
3 mov rbx, qword [rbx + rax]
Meltdown漏洞的利用過(guò)程有4個(gè)步驟:
1) 指令獲取解碼
2) 亂序執(zhí)行3條指令,指令2和指令3要等指令1中的讀取內(nèi)存地址的內(nèi)容完成后才開(kāi)始執(zhí)行,指令3會(huì)將要訪問(wèn)的rbx數(shù)組元素所在的頁(yè)加載到CPU Cache中。
3) 對(duì)2)的結(jié)果進(jìn)行重新排列,對(duì)1-3條指令進(jìn)行安全檢測(cè),發(fā)現(xiàn)訪問(wèn)違例,會(huì)丟棄當(dāng)前執(zhí)行的所有結(jié)果,恢復(fù)CPU狀態(tài)到亂序執(zhí)行之前的狀態(tài),但是并不會(huì)恢復(fù)CPU Cache的狀態(tài)
4) 通過(guò)緩存測(cè)信道攻擊,可以知道哪一個(gè)數(shù)組元素被訪問(wèn)過(guò),也即對(duì)應(yīng)的內(nèi)存頁(yè)存放在CPU Cache中,從而推測(cè)出內(nèi)核地址的內(nèi)容
Spectre漏洞原理
與Meltdown類似,Spectre的原理是,當(dāng)CPU發(fā)現(xiàn)分支預(yù)測(cè)錯(cuò)誤時(shí)會(huì)丟棄分支執(zhí)行的結(jié)果,恢復(fù)CPU的狀態(tài),但是不會(huì)恢復(fù)CPU Cache的狀態(tài),利用這一點(diǎn)可以突破進(jìn)程間的訪問(wèn)限制(如瀏覽器沙箱)獲取其他進(jìn)程的數(shù)據(jù)。
Spectre的利用代碼片段:
if (x < array1_size) {
y = array2[array1[x] * 256];
// do something using Y that is
// observable when speculatively executed
}
具體攻擊過(guò)程可以分為三個(gè)階段:
1) 訓(xùn)練CPU的分支預(yù)測(cè)單元使其在運(yùn)行利用代碼時(shí)會(huì)進(jìn)行特定的預(yù)測(cè)執(zhí)行
2) 預(yù)測(cè)執(zhí)行使得CPU將要訪問(wèn)的地址的內(nèi)容讀取到CPU Cache中
3) 通過(guò)緩存測(cè)信道攻擊,可以知道哪一個(gè)數(shù)組元素被訪問(wèn)過(guò),也即對(duì)應(yīng)的內(nèi)存頁(yè)存放在CPU Cache中,從而推測(cè)出地址的內(nèi)容。
漏洞驗(yàn)證
目前開(kāi)源社區(qū)github已經(jīng)放出來(lái)了漏洞的驗(yàn)證代碼(PoC),如下:
https://github.com/Eugnis/spectre-attack
https://github.com/feruxmax/meltdown
https://github.com/gkaindl/meltdown-poc
https://github.com/turbo/KPTI-PoC-Collection
騰訊玄武實(shí)驗(yàn)室開(kāi)放了在線檢測(cè)當(dāng)前瀏覽器是否易受spectre漏洞攻擊的網(wǎng)址:
http://t.cn/RHkuFNl
影響環(huán)境
現(xiàn)代處理器(CPU)的運(yùn)作機(jī)制中存在兩個(gè)用于加速執(zhí)行的特性,推測(cè)執(zhí)行(Speculative Execution)和間接分支預(yù)測(cè)(Indirect Branch Prediction)。這兩組CPU漏洞的利用依靠推測(cè)執(zhí)行特性,通過(guò)用戶層面應(yīng)用從CPU 內(nèi)存中讀取核心數(shù)據(jù)。推測(cè)執(zhí)行技術(shù)從1995年開(kāi)始應(yīng)用,所以近20年的Intel, AMD, Qualcomm廠家和其它ARM的處理器幾乎都受到影響;
Intel CPU用戶:幾乎所有(1995年之后的所有的CPU型號(hào),除了2013年之前的Intel 安騰和Atom外);
AMD CPU用戶:根據(jù)AMD公司的聲明,目前AMD CPU不受Meltdown漏洞影響;
ARM CPU用戶:根據(jù)ARM公司的聲明,包括Cortex-A75在內(nèi)的少數(shù)ARM核心CPU受影響。
Intel CPU用戶:幾乎所有(1995年之后的所有的CPU型號(hào),除了2013年之前的Intel 安騰和Atom外);
AMD CPU用戶:根據(jù)AMD公司的聲明,目前AMD CPU不受Meltdown漏洞影響;
ARM CPU用戶:根據(jù)ARM公司的聲明,包括Cortex-A75在內(nèi)的少數(shù)ARM核心CPU受影響。
教您如何修復(fù)
針對(duì)這兩組漏洞,各家芯片廠商,操作系統(tǒng)廠商,瀏覽器廠商,以及云服務(wù)廠商,都積極采取措施,發(fā)布安全公告,并及時(shí)推出緩解措施和修復(fù)補(bǔ)丁。
〖 Intel 〗
Intel已經(jīng)確認(rèn)自身CPU中存在相關(guān)問(wèn)題,并正與包括AMD、ARM和多家操作系統(tǒng)廠商在內(nèi)的許多其他科技公司緊密合作,制定行業(yè)范圍的方法,以便及時(shí)和建設(shè)性地解決這些漏洞。另外Intel認(rèn)為有些媒體里面的報(bào)道并不準(zhǔn)確,這些問(wèn)題不僅僅Intel,其他廠商的CPU中也存在相關(guān)問(wèn)題。這些問(wèn)題的修復(fù)對(duì)性能的影響和具體的工作場(chǎng)景相關(guān),對(duì)一般用戶而言,影響并不顯著,而且隨著時(shí)間的推移這些影響都會(huì)得到緩解。
Intel已經(jīng)提供軟件和固件更新以解決這些漏洞,預(yù)計(jì)下周末之前會(huì)修復(fù)最近5年中90%的CPU。Intel的安全公告如下:
https://security-center.intel.com/advisory.aspx?intelid=INTEL-SA-00088&languageid=en-fr
https://newsroom.intel.com/news/intel-responds-to-security-research-findings/
https://newsroom.intel.com/news-releases/intel-issues-updates-protect-systems-security-exploits/
https://www.intel.com/content/www/us/en/architecture-and-technology/facts-about-side-channel-analysis-and-intel-products.html
〖 ARM 〗
ARM確認(rèn)大部分處理器不受漏洞影響,但給出了一個(gè)受影響的處理器列表。ARM認(rèn)為,利用這些漏洞進(jìn)行攻擊需要在本地運(yùn)行惡意軟件,用戶及時(shí)更新軟件和不點(diǎn)擊來(lái)歷不明的鏈接會(huì)降低攻擊風(fēng)險(xiǎn)。針對(duì)linux上的程序,ARM提供了新編譯器,可用新編譯器重新編譯。另外發(fā)布了Linux ARM內(nèi)核補(bǔ)丁,用于修補(bǔ)漏洞,相關(guān)頁(yè)面如下:
https://developer.arm.com/support/security-update/download-the-whitepaper
https://developer.arm.com/support/security-update
〖 AMD 〗
AMD針對(duì)每個(gè)漏洞做了回復(fù),第一個(gè)漏洞由軟件、操作系統(tǒng)廠商發(fā)布補(bǔ)丁解決,性能影響非常輕微,其他兩個(gè)漏洞由于AMD CPU特殊的架構(gòu),都不受影響。具體如下:
https://www.amd.com/en/corporate/speculative-execution
〖 Windows 〗
微軟已經(jīng)發(fā)布了安全通告,修復(fù)了IE、Edge、Windows內(nèi)核中相關(guān)問(wèn)題,并針對(duì)普通用戶、服務(wù)器用戶、云用戶各自給出了防護(hù)指南。
微軟普通用戶:
https://support.microsoft.com/help/4073119
服務(wù)器用戶:
https://support.microsoft.com/help/4072698
云用戶:
https://support.microsoft.com/help/4073235
微軟安全通告:
https://support.microsoft.com/en-us/help/4073235/cloud-protections-speculative-execution-side-channel-vulnerabilities
〖 Linux 〗
Linux內(nèi)核開(kāi)發(fā)者Thomas Gleixner在2017年12月在Linux內(nèi)核郵件列表中就新的KAISER隔離補(bǔ)丁發(fā)布了說(shuō)明。目前有人懷疑這批補(bǔ)丁可能正是為了解決Linux系統(tǒng)當(dāng)中的Metldown與Spectre漏洞。具體如下:
https://lkml.org/lkml/2017/12/4/709
〖 RedHat 〗
紅帽公司已經(jīng)發(fā)布一項(xiàng)建議,其中列出受到影響的產(chǎn)品及其當(dāng)前狀態(tài)。建議內(nèi)容表明:對(duì)于正在運(yùn)行受影響版本產(chǎn)品的紅帽客戶,強(qiáng)烈建議用戶盡快根據(jù)指導(dǎo)清單進(jìn)行更新。所有受影響產(chǎn)品都應(yīng)安裝修復(fù)補(bǔ)丁,借以緩解CVE-2017-5753 (變種1)與CVE-2017-5754 (變種3)漏洞。CVE-2017-5715(變種2)可通過(guò)本地以及虛擬訪客邊界兩種方式被加以利用。具體如下:
https://access.redhat.com/security/vulnerabilities/speculativeexecution?sc_cid=701f2000000tsLNAAY&
〖 安卓 〗
Android團(tuán)隊(duì)于2018年1月更新了安全通告:CVE-2017-5715、CVE-2017-5753以及CVE-2017-5754為已經(jīng)得到公開(kāi)披露的一系列與處理器內(nèi)推測(cè)執(zhí)行相關(guān)的漏洞。Android尚未發(fā)現(xiàn)任何在基于ARM的Android設(shè)備之上重現(xiàn)上述漏洞以進(jìn)行的未授權(quán)信息泄露行為。為了提供額外的保護(hù)措施,本公告當(dāng)中包含的CVE-2017-13218更新減少了對(duì)高精度定時(shí)器的訪問(wèn),旨在限制旁路攻擊(例如CVE-2017-5715、CVE-2017-5753以及CVE-2017-5754)所有已知變種對(duì)ARM處理器的影響。具體如下:
https://source.android.com/security/bulletin/2018-01-01
利用漏洞在瀏覽器中進(jìn)行攻擊依賴于新特性SharedArrayBuffer和用于高精度時(shí)間計(jì)算的函數(shù)performance.now。各個(gè)瀏覽器表示都采取了以下兩個(gè)緩解措施:
移除瀏覽器中可用于攻擊的SharedArrayBuffer特性
降低用于高精度時(shí)間計(jì)算的函數(shù)performance.now的精確性
加上這兩個(gè)緩解措施后,JS版本的漏洞PoC代碼將無(wú)法觸發(fā)。
〖 Microsoft Edge 〗
微軟已經(jīng)發(fā)布了瀏覽器補(bǔ)丁:
https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/ADV180002
〖 FireFox 〗
Mozilla從FireFox 57版本開(kāi)始采取了這兩個(gè)緩解措施:
https://blog.mozilla.org/security/2018/01/03/mitigations-landing-new-class-timing-attack/
〖 Chrome 〗
谷歌從Chrome 64版本開(kāi)始采取了這兩個(gè)緩解措施:
https://security.googleblog.com/2018/01/todays-cpu-vulnerability-what-you-need.html
〖 Amazon 〗
Amazon方面已經(jīng)發(fā)布一項(xiàng)安全公告,指出:此項(xiàng)安全漏洞廣泛存在于過(guò)去20年推出的英特爾、AMD以及ARM等各類現(xiàn)代處理器架構(gòu)當(dāng)中,影響范圍涵蓋服務(wù)器、臺(tái)式機(jī)以及移動(dòng)設(shè)備。Amazon EC2體系中除極少數(shù)實(shí)例外,其余皆受到嚴(yán)格保護(hù)。剩余部分的修復(fù)工作將在接下來(lái)數(shù)小時(shí)內(nèi)完成,并附有相關(guān)實(shí)例維護(hù)通知。雖然AWS所執(zhí)行的更新能夠切實(shí)保護(hù)底層基礎(chǔ)設(shè)施,但為了充分解決此次問(wèn)題,客戶還應(yīng)對(duì)實(shí)例中的操作系統(tǒng)進(jìn)行修復(fù)。目前Amazon Linux更新已經(jīng)開(kāi)始發(fā)布,具體如下:
https://aws.amazon.com/security/security-bulletins/AWS-2018-013/
〖 阿里云 〗
為解決處理器芯片的安全問(wèn)題,阿里云將在北京時(shí)間2018年1月12日凌晨1點(diǎn)進(jìn)行虛擬化底層的升級(jí)更新。屆時(shí),阿里云將采用熱升級(jí)的方式,絕大多數(shù)客戶不會(huì)受到影響。但個(gè)別客戶可能需要手動(dòng)重啟,阿里云建議客戶提前準(zhǔn)備運(yùn)營(yíng)預(yù)案及數(shù)據(jù)備份。
〖 騰訊云 〗
騰訊云將于北京時(shí)間2018年1月10日凌晨01:00-05:00通過(guò)熱升級(jí)技術(shù)對(duì)硬件平臺(tái)和虛擬化平臺(tái)進(jìn)行后端修復(fù),期間客戶業(yè)務(wù)不會(huì)受到影響。對(duì)于極少量不支持熱升級(jí)方式的,騰訊云另行安排時(shí)間手動(dòng)重啟修復(fù),這部分服務(wù)器騰訊云安全團(tuán)隊(duì)將會(huì)另行進(jìn)行通知,協(xié)商升級(jí)時(shí)間。
修復(fù)建議
對(duì)于操作系統(tǒng)的修復(fù)建議,三中科技提醒您,及時(shí)打上官方的最新補(bǔ)丁,并且及時(shí)注意官方的安全公告;對(duì)于云服務(wù)器的防護(hù)建議:聽(tīng)從云計(jì)算服務(wù)商的建議,如若對(duì)業(yè)務(wù)存在影響請(qǐng)及時(shí)與云計(jì)算提供商協(xié)商解決措施以及應(yīng)對(duì)方法;對(duì)于瀏覽器的防護(hù)措施:及時(shí)升級(jí)瀏覽器至最新版本。
文章來(lái)自網(wǎng)絡(luò)
Copyright © 2017-2024 河南中瀚安全技術(shù)有限公司 版權(quán)所有 豫ICP備18011434號(hào)-1 豫公網(wǎng)安備 41019702002746號(hào)