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