導(dǎo)讀:交叉證書會(huì)導(dǎo)致Android設(shè)備崩潰,并且這并不是第一次出現(xiàn)這樣的問題。那么,這一問題存在著怎樣潛在的安全風(fēng)險(xiǎn)?
Michael Cobb是認(rèn)證信息系統(tǒng)安全架構(gòu)專家(CISSP-ISSAP),知名的安全作家,具有十多年豐富的IT行業(yè)經(jīng)驗(yàn),并且還從事過十六年的金融行業(yè)。他是Cobweb Applications公司的創(chuàng)始人兼常務(wù)董事,該公司主要提供IT培訓(xùn),以及數(shù)據(jù)安全和分析的支持。Michael還合著過IIS Security一書,并為領(lǐng)先的IT出版物撰寫過無數(shù)科技文章。此外,Michael還是微軟認(rèn)證數(shù)據(jù)庫系統(tǒng)管理員和微軟認(rèn)證專家。
據(jù)報(bào)道,交叉證書會(huì)導(dǎo)致Android設(shè)備發(fā)生問題。這些問題背后的漏洞是什么呢?攻擊者可以利用這些漏洞嗎,如果是這樣,是否有辦法來緩解這些問題?
Michael Cobb:交叉證書提供了一種方法,從單一的受信任的根或者從屬證書頒發(fā)機(jī)構(gòu),為多個(gè)其他根或從屬CA創(chuàng)建信任鏈。一個(gè)CA頒發(fā)的交叉數(shù)字證書用來為另一個(gè)CA的根證書簽發(fā)公鑰,允許在兩個(gè)CA層次結(jié)構(gòu)之間使用和信任證書。例如,在微軟Windows中,交叉證書允許操作系統(tǒng)內(nèi)核有單個(gè)受信任的微軟根授權(quán),同時(shí)擴(kuò)展信任鏈到多個(gè)商業(yè)CA,這些CA簽發(fā)證書用于代碼簽名軟件,以在Windows機(jī)器中分發(fā)和安裝軟件。
在所有交叉證書機(jī)制中,單個(gè)證書會(huì)鏈接到不同的根CA,這取決于哪個(gè)企業(yè)的計(jì)算機(jī)在驗(yàn)證該證書。例如,假設(shè)有一個(gè)Key Supplies公司以及其客戶Big Builders公司,為了在他們運(yùn)行的從屬和根CA之間配置完全的信任,每個(gè)企業(yè)的根CA需要與另一個(gè)公司的從屬企業(yè)CA進(jìn)行交叉認(rèn)證。這使得由任何CA頒發(fā)的證書鏈接到每個(gè)企業(yè)信任的根。如果證書頒發(fā)給Key Supplies的員工,當(dāng)由該Key Supplies網(wǎng)絡(luò)內(nèi)的其他計(jì)算機(jī)驗(yàn)證時(shí),這將會(huì)驗(yàn)證到Key Supplies的CA,但如果由Big Builders網(wǎng)絡(luò)中計(jì)算機(jī)驗(yàn)證的話,這將會(huì)驗(yàn)證到該客戶的CA。
交叉簽名可以創(chuàng)建非常長的證書鏈,并且,相同的證書有不同的證書鏈。這讓證書驗(yàn)證在處理時(shí)間和網(wǎng)絡(luò)流量方面更加昂貴,并增加了額外的復(fù)雜性。
這些可能是為什么Android設(shè)備處理交叉簽名證書出現(xiàn)問題的原因。趨勢(shì)科技公司研究人員發(fā)現(xiàn),當(dāng)在Android設(shè)備安裝新應(yīng)用或者導(dǎo)入特質(zhì)鑰匙串時(shí)引入特殊構(gòu)造的惡意證書(當(dāng)兩個(gè)證書在連續(xù)循環(huán)中交叉簽名時(shí)創(chuàng)建),設(shè)備可能會(huì)減慢或者死機(jī)。這個(gè)漏洞是由Android框架中兩個(gè)常用類造成:JarFile和KeyStore類。JarFile類用于驗(yàn)證jar數(shù)據(jù)包的證書和簽名文件,但當(dāng)嘗試驗(yàn)證交叉簽名證書鏈時(shí)它會(huì)陷入無限循環(huán)中;這個(gè)過程會(huì)不斷使用系統(tǒng)資源直到它耗盡,而這會(huì)導(dǎo)致設(shè)備重新啟動(dòng)。KeyStore類用于為遭遇相同問題的Android KeyStore處理PKCS#12文件。這個(gè)漏洞出現(xiàn)在所有Android版本中,并且,直接或間接使用這兩種類任何代碼都可能面臨風(fēng)險(xiǎn)。
但是,這個(gè)漏洞并沒有任何直接的安全問題;幾年前在Firefox中發(fā)現(xiàn)了類似的漏洞。在未來的研究可能會(huì)找到一種方法,在當(dāng)設(shè)備的系統(tǒng)資源被耗盡以及在重啟前變得不穩(wěn)定時(shí)注入或運(yùn)行任意代碼。
谷歌已經(jīng)意識(shí)到這個(gè)漏洞,但并沒有給出任何補(bǔ)丁時(shí)間表。在此期間,管理員應(yīng)該關(guān)注該漏洞補(bǔ)丁的安全新聞或者攻擊者可利用該漏洞的證據(jù)。而用戶則應(yīng)該從受批準(zhǔn)的商店下載應(yīng)用,并且,當(dāng)他們的設(shè)備運(yùn)行緩慢或意外重啟時(shí)立即報(bào)告。