很可怕!NSA、GitHub 被惡搞:Windows 的鍋
微軟披露漏洞突破證書驗(yàn)證機(jī)制還不到24個(gè)小時(shí),研究人員就演示了攻擊。
NSA官網(wǎng)被惡搞,使用Windows 10上的Chrome。
微軟披露有史以來最嚴(yán)重的一個(gè)Windows漏洞還不到一天,就有安全研究人員演示了攻擊者如何鉆該漏洞的空子,從密碼層面冒充互聯(lián)網(wǎng)上的任何網(wǎng)站或服務(wù)器。
周三,研究人員Saleem Rashid在Twitter上發(fā)布了上世紀(jì)80年代的知名歌手Rick Astley的視頻《Never Gonna Give You Up》在Github.com和NSA.gov上播放的畫面。
這種數(shù)字手法名為瑞克搖擺(Rickrolling),常被用作以一種惡搞、無害的方式來表明嚴(yán)重的安全漏洞。在這里,Rashid采用的攻擊程序?qū)е翬dge瀏覽器和Chrome瀏覽器都騙過了Github和國家安全局(NSA)的HTTPS驗(yàn)證網(wǎng)站。Brave及其他Chrome衍生瀏覽器以及Internet Explorer也可能中同樣的招。(沒有跡象表明Firefox受此影響。)
Rashid模擬了攻擊漏洞:CVE-2020-0601,微軟接到NSA私下透露的情況后在周二給這個(gè)嚴(yán)重漏洞打上了補(bǔ)丁。正如外媒此前報(bào)道,該漏洞可以完全突破許多網(wǎng)站、軟件更新、VPN及其他安全攸關(guān)的計(jì)算機(jī)用途所采用的證書驗(yàn)證機(jī)制。它影響Windows 10系統(tǒng),包括服務(wù)器版本:Windows Server 2016和Windows Server 2019。Windows的其他版本不受影響。
Rashid告訴我,他的攻擊程序使用了大約100行代碼,但如果他想去除其攻擊所擁有的“幾個(gè)實(shí)用花招”,可以壓縮到10行代碼。雖然讓攻擊漏洞在實(shí)際情形下得逞存在一些限制和幾個(gè)可能很難滿足的要求,周三的概念驗(yàn)證攻擊表明了NSA為何將該漏洞評(píng)為“嚴(yán)重”等級(jí),稱狡猾的黑客會(huì)明白如何“迅速”利用漏洞。
“很可怕”
其他研究人員與NSA有著同樣的緊迫感。
MongoDB的研究人員和安全負(fù)責(zé)人Kenn White說:“Saleem剛演示的表明,使用[簡短]的腳本,你就可以為任何網(wǎng)站生成證書,而且證書在IE和Edge上完全受信任,僅使用Windows的默認(rèn)設(shè)置。這很可怕。它會(huì)影響VPN網(wǎng)關(guān)、VoIP以及使用網(wǎng)絡(luò)通信的幾乎任何系統(tǒng)。”(在Rashid演示針對(duì)Chrome進(jìn)行攻擊之前,我與White有過交談。)
該漏洞涉及新版本W(wǎng)indows對(duì)使用橢圓曲線加密技術(shù)(ECC)的證書的有效性進(jìn)行核查的方式。雖然易受攻擊的Windows版本核查三個(gè)ECC參數(shù),卻沒有核查第四個(gè)關(guān)鍵的參數(shù):基點(diǎn)生成器,它在算法中通常表示為G'。這歸咎于微軟實(shí)現(xiàn)ECC的方法,而不是ECC算法本身存在任何漏洞或缺陷。
攻擊者只要提取Windows默認(rèn)情況下隨帶的根證書的公鑰,就可以鉆這個(gè)漏洞的空子。這些證書之所以被稱為根證書,是由于它們屬于各大證書管理機(jī)構(gòu)(CA),這些CA要么頒發(fā)自己的TLS證書,要么驗(yàn)證代表根CA出售證書的中間CA。只要用ECC算法來簽名,任何根證書都可正常使用。Rashid的攻擊始于來自互聯(lián)網(wǎng)界最大的CA:Sectigo的根證書,Sectigo以前使用Comodo這個(gè)名稱。這名研究人員隨后修改了攻擊手法,使用GlobalSign根證書。他的代碼可使切換自動(dòng)進(jìn)行。
該攻擊者分析了用于生成根證書公鑰的特定ECC算法,隨后生成了一個(gè)私鑰,復(fù)制了該算法的所有證書參數(shù)(基點(diǎn)生成器除外)。由于易受攻擊的Windows版本無法核查該參數(shù),因此它們視為該私鑰有效。這么一來,攻擊者就騙過了Windows信任的根證書,該根證書可進(jìn)而生成用于對(duì)網(wǎng)站、軟件及其他敏感內(nèi)容進(jìn)行身份驗(yàn)證的任何證書。
這種行為相當(dāng)于執(zhí)法人員核查某人的身份證,確保身份證如實(shí)描述此人的身高、住址、生日和臉部,卻沒有注意到標(biāo)注的重量是250磅,而此人明明體重不到一半。
White說:“這個(gè)漏洞很奇怪,因?yàn)檫@就像對(duì)整個(gè)信任系統(tǒng)的基礎(chǔ)只核查了一半,而這是整條信任鏈的核心部分。”
注意事項(xiàng)
如前所述,有幾個(gè)要求和限制大大提高了Rashid的攻擊在實(shí)際情形下得逞的難度。首先是它很可能需要主動(dòng)的中間人攻擊。這種類型的攻擊篡改網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù),可能難以實(shí)施。主動(dòng)式中間人攻擊之外的替代手法是,說服攻擊對(duì)象點(diǎn)擊虛假的URL。這種方法容易得多,但也需要一定的針對(duì)性。(它不適用于對(duì)要求連接客戶端提供證書的網(wǎng)站或其他服務(wù)器發(fā)動(dòng)的攻擊。)
該漏洞還要求攻擊對(duì)象最近訪問過使用傳輸層安全證書的站點(diǎn),而該證書鏈接到ECC簽名的根證書。那是由于根證書必須已經(jīng)被目標(biāo)系統(tǒng)緩存起來。Rashid表示,如果目標(biāo)系統(tǒng)沒有緩存根證書,攻擊者仍可以成功地鉆空子,只需添加可訪問鏈接到根證書的網(wǎng)站的JavaScript。
另一個(gè)限制是:Chrome針對(duì)google.com及其他眾多敏感網(wǎng)站使用了一種名為證書鎖定(certificate pinning)的機(jī)制。證書鎖定要求對(duì)網(wǎng)站進(jìn)行身份驗(yàn)證的證書包含特定的加密哈希,即使提供的證書在其他方面有效。該措施可阻止攻擊騙過受保護(hù)的網(wǎng)站后得逞。
谷歌代表稱,雖然安裝微軟周二發(fā)布的補(bǔ)丁是防止攻擊的唯一合理方法,但Chrome的開發(fā)人員已發(fā)布了測(cè)試版的修復(fù)程序,很快會(huì)并入到穩(wěn)定版中。提醒一下:即使使用該修復(fù)程序,高危Windows版本的用戶仍將面臨來自其他攻擊場(chǎng)景的巨大風(fēng)險(xiǎn)。
時(shí)間問題
盡管面臨幾個(gè)要求和限制,該漏洞仍很嚴(yán)重。正如NSA官員在公告中所說:
該漏洞使Windows端點(diǎn)暴露在眾多攻擊途徑面前。NSA評(píng)估后認(rèn)為該漏洞很嚴(yán)重,狡猾的網(wǎng)絡(luò)攻擊者很快就能明白底層漏洞;一旦被利用,會(huì)使前面提到的平臺(tái)岌岌可危。不給漏洞打補(bǔ)丁會(huì)帶來嚴(yán)重且廣泛的后果。遠(yuǎn)程攻擊工具可能會(huì)迅速開發(fā)出來,唾手可得。迅速打上補(bǔ)丁是眼下唯一已知的緩解方法,應(yīng)是所有網(wǎng)絡(luò)所有者關(guān)注的焦點(diǎn)。
該漏洞可能不會(huì)像2014年Heartbleed漏洞那樣造成極嚴(yán)重的威脅,Heartbleed漏洞讓攻擊者可以從成千上萬個(gè)易受攻擊的網(wǎng)站竊取私鑰、密碼及其他高度敏感的數(shù)據(jù)。但由于微軟的這個(gè)漏洞挫敗了廣泛的安全措施,它甚至比蘋果嚴(yán)重的GoToFail漏洞還危險(xiǎn),后者阻止iOS和macOS系統(tǒng)檢測(cè)到網(wǎng)站提供的無效TLS證書。這使CVE-2020-0601成為近年來最嚴(yán)重的漏洞之一。
Windows的自動(dòng)更新機(jī)制可能已經(jīng)給易受攻擊的系統(tǒng)打上了補(bǔ)丁。此處(https://portal.msrc.microsoft.com/en-us/security-guidance/advisory/CVE-2020-0601#ID0EGB)附有各種高危版本的修復(fù)程序。還沒有打上補(bǔ)丁的讀者應(yīng)立即打上補(bǔ)丁。