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























