最近,根據(jù)某國(guó)際安全小組的研究表明,金融巨頭Visa旗下部分受HTTPS保護(hù)的網(wǎng)站最近被發(fā)現(xiàn)了一種漏洞,它的存在可以讓黑客注入惡意代碼,訪(fǎng)客瀏覽器將會(huì)訪(fǎng)問(wèn)到惡意內(nèi)容。
加密重用造成的Forbidden Attack
據(jù)統(tǒng)計(jì),受影響一共有184臺(tái)服務(wù)器,其中部分屬于德國(guó)證券交易所(Deutsche B?rse)和波蘭銀行協(xié)會(huì)(Zwizek Banków Polskich),它們被發(fā)現(xiàn)容易受到某加密技術(shù)漏洞的攻擊,我們稱(chēng)之為“Forbidden Attack”。此外,還有7萬(wàn)臺(tái)web服務(wù)器被發(fā)現(xiàn)存在風(fēng)險(xiǎn),雖然實(shí)際執(zhí)行攻擊會(huì)比較困難。
這些數(shù)據(jù)來(lái)自于1月份的全網(wǎng)掃描,當(dāng)時(shí)Deutsche B?rse就修補(bǔ)了這個(gè)漏洞。但是在上周三的時(shí)候,研究人員發(fā)現(xiàn)Visa和Zwizek Banków Polskich的漏洞似乎仍然存在,而且官方并沒(méi)有回復(fù)安全研究員私下提交的漏洞信息。
該漏洞源于不正確的傳輸層安全協(xié)議,在數(shù)據(jù)被加密時(shí),錯(cuò)誤重用了相同的加密隨機(jī)數(shù)。TLS的規(guī)范其實(shí)已經(jīng)寫(xiě)明,這些數(shù)據(jù)只能使用一次,當(dāng)多次重用時(shí),則會(huì)導(dǎo)致Forbidden Attack。這種攻擊能讓黑客自行生成密鑰去認(rèn)證網(wǎng)站內(nèi)容。這個(gè)漏洞利用的首次提交,是 以評(píng)論的形式寫(xiě)給國(guó)家標(biāo)準(zhǔn)技術(shù)研究所的。之所以叫這個(gè)名字,是因?yàn)槠湔_加密的基本原則,是必須臨時(shí)而獨(dú)特的。
在TLS握手中,那184臺(tái)HTTPS服務(wù)重復(fù)使用了客戶(hù)端瀏覽器首次連接到HTTPS網(wǎng)站的那個(gè)隨機(jī)數(shù),違背了加密的基本原則。因此,黑客只要有能力監(jiān)控連接傳輸?shù)膬?nèi)容,比如處于同一個(gè)不安全的wifi環(huán)境下,他們就可以將惡意內(nèi)容注入到傳輸數(shù)據(jù)流里,而客戶(hù)端瀏覽器并不能檢查出任何差錯(cuò)。
研究人員在一篇名為《忽視隨機(jī)數(shù)的惡果:TLS GCM實(shí)戰(zhàn)偽造內(nèi)容攻擊》的paper中寫(xiě)道:“這是可靠性驗(yàn)證的失敗,即使只在同一個(gè)時(shí)間段里重用一個(gè)隨機(jī)數(shù),也能讓黑客通過(guò)HTTPS進(jìn)行偽造內(nèi)容攻擊。”這項(xiàng)研究的結(jié)果,也將作為8月份拉斯維加斯黑帽的大會(huì)某議題的基礎(chǔ)材料。
黑客污染HTTPS認(rèn)證過(guò)的內(nèi)容的中間人攻擊,已經(jīng)擊破了TLS的基本保證。黑客可以繞過(guò)保護(hù),添加惡意JS代碼或者添加能誘惑訪(fǎng)客輸入密碼、社會(huì)安全碼或者其他敏感數(shù)據(jù)的WEB內(nèi)容。雖然這個(gè)漏洞讓Forbidden Attack很好的文檔規(guī)范化了,新的研究結(jié)果仍值得我們注意如何利用它去對(duì)抗HTTPS保護(hù)的網(wǎng)站,網(wǎng)上也有相應(yīng)的POC代碼。
GCM隨機(jī)數(shù)重用攻擊visa.dk的POC
這篇paper是由研究人員Hanno B?ck、Aaron Zauner、Sean Devlin、 Juraj Somorovsky、and Philipp Jovanovic共同撰寫(xiě),里面警告我們網(wǎng)上約7萬(wàn)HTTPS服務(wù)器,可能會(huì)因?yàn)閭坞S機(jī)數(shù)算法生成的“隨機(jī)數(shù)”而遭受這類(lèi)攻擊。只要有足夠多的WEB請(qǐng)求,黑客就有很大可能性去重用其中一個(gè)來(lái)執(zhí)行攻擊。然而這樣所需WEB請(qǐng)求的數(shù)量是比較大的,約2的30次方個(gè)請(qǐng)求里取得重復(fù)隨機(jī)數(shù)的可能性為3%, 2的35次方個(gè)請(qǐng)求后能100%成功。正如paper的標(biāo)題所述,F(xiàn)orbidden Attack針對(duì)的是AES-GCM,世界上最廣泛的TLS對(duì)稱(chēng)加密協(xié)議。
在研究人員發(fā)現(xiàn)的7萬(wàn)站點(diǎn)中,黑客需要往WEB連接里填充TB級(jí)別的數(shù)據(jù),從而創(chuàng)建足夠多的請(qǐng)求。因此,這種攻擊的理論性可能會(huì)高于實(shí)際意義。但是,這仍然被大多數(shù)運(yùn)用HTTPS保護(hù)的組織當(dāng)作不可接受的風(fēng)險(xiǎn)。研究人員目前確定了幾個(gè)TLS實(shí)例中生成了偽隨機(jī)數(shù),其中有IBM的DominoWEB服務(wù)器,已于3月打上了補(bǔ)丁。還有個(gè)Radware的負(fù)載均衡器的案例,也 已經(jīng)修復(fù)了。
自研究人員發(fā)布掃描結(jié)果后,許多漏洞網(wǎng)站已經(jīng)修復(fù)了。但是只有工程師們深刻意識(shí)到這個(gè)問(wèn)題,事情才能顯著改善,這也是研究人員發(fā)布這篇paper的原因。
Zauner 在郵件中寫(xiě)道,“我敢肯定一年以后我再去掃描一遍,還是會(huì)有很多的漏洞案例??赡苓€有更多方法可以利用它,誰(shuí)知道呢?”
GCM工作機(jī)制淺析
那么,像GCM或者類(lèi)似CTR模式的CCM,為什么不能在發(fā)送的信息中進(jìn)行隨機(jī)數(shù)重用呢?下面我們將就GCM的工作機(jī)制進(jìn)行解釋一番:
當(dāng)使用AES GCM時(shí),我們并不會(huì)運(yùn)行AES加密的數(shù)據(jù)。而我們會(huì)使用AES去加密標(biāo)志自增計(jì)數(shù)器創(chuàng)建的各區(qū)塊,這就造就了不可預(yù)知的比特流(密鑰數(shù)據(jù)流)。然后,我們會(huì)用需要加密的數(shù)據(jù)流與之進(jìn)行XOR運(yùn)算。而最初的計(jì)數(shù)區(qū)塊,就是用來(lái)與其他加密文本一起生成身份驗(yàn)證標(biāo)記的。
如果我們單獨(dú)看AES加密算法,可以知道用相同的密鑰去加密相同的數(shù)據(jù),是會(huì)得到相同的加密文本的,這也是我們?yōu)樯缎枰狢BC模式下的IV。那么我們?cè)贕CM里面重用相同的隨機(jī)數(shù)會(huì)發(fā)生什么呢?
假設(shè)有兩個(gè)不同的消息A和B,我們?nèi)绻谄渲惺褂昧送浑S機(jī)數(shù)N,這些消息的第一個(gè)區(qū)塊會(huì)被這樣加密:
C?? = AES(counter(N,1)) ? A?
C?? = AES(counter(N,1)) ? B?
這基本上意味著,我們?nèi)绻褂孟嗤?jì)數(shù)器和相同的隨機(jī)數(shù)去XOR兩個(gè)加密的區(qū)塊,會(huì)得到XOR的文本:
C?? ? C?? = B? ? A?
如果我們知道其中一個(gè)純文本,我就可以用加密文本與之XOR,從而得到密鑰數(shù)據(jù)流。最后,我們就能解密另一段使用同樣的密鑰和隨機(jī)數(shù)加密的文本了(這點(diǎn)受限于已知文本長(zhǎng)度)。