Michael Cobb是认证信息系统安全架构专家(CISSP-ISSAP),知名的安全作家,具有十多年丰富的IT行业经验,并且还从事过十六年的金融行业。他是Cobweb Applications公司的创始人兼常务董事,该公司主要提供IT培训,以及数据安全和分析的支持。Michael还合著过IIS Security一书,并为领先的IT出版物撰写过无数科技文章。此外,Michael还是微软认证数据库系统管理员和微软认证专家。
据报道,交叉证书会导致Android设备发生问题。这些问题背后的漏洞是什么呢?攻击者可以利用这些漏洞吗,如果是这样,是否有办法来缓解这些问题?
Michael Cobb:交叉证书提供了一种方法,从单一的受信任的根或者从属证书颁发机构,为多个其他根或从属CA创建信任链。一个CA颁发的交叉数字证书用来为另一个CA的根证书签发公钥,允许在两个CA层次结构之间使用和信任证书。例如,在微软Windows中,交叉证书允许操作系统内核有单个受信任的微软根授权,同时扩展信任链到多个商业CA,这些CA签发证书用于代码签名软件,以在Windows机器中分发和安装软件。
在所有交叉证书机制中,单个证书会链接到不同的根CA,这取决于哪个企业的计算机在验证该证书。例如,假设有一个Key Supplies公司以及其客户Big Builders公司,为了在他们运行的从属和根CA之间配置完全的信任,每个企业的根CA需要与另一个公司的从属企业CA进行交叉认证。这使得由任何CA颁发的证书链接到每个企业信任的根。如果证书颁发给Key Supplies的员工,当由该Key Supplies网络内的其他计算机验证时,这将会验证到Key Supplies的CA,但如果由Big Builders网络中计算机验证的话,这将会验证到该客户的CA。
交叉签名可以创建非常长的证书链,并且,相同的证书有不同的证书链。这让证书验证在处理时间和网络流量方面更加昂贵,并增加了额外的复杂性。
这些可能是为什么Android设备处理交叉签名证书出现问题的原因。趋势科技公司研究人员发现,当在Android设备安装新应用或者导入特质钥匙串时引入特殊构造的恶意证书(当两个证书在连续循环中交叉签名时创建),设备可能会减慢或者死机。这个漏洞是由Android框架中两个常用类造成:JarFile和KeyStore类。JarFile类用于验证jar数据包的证书和签名文件,但当尝试验证交叉签名证书链时它会陷入无限循环中;这个过程会不断使用系统资源直到它耗尽,而这会导致设备重新启动。KeyStore类用于为遭遇相同问题的Android KeyStore处理PKCS#12文件。这个漏洞出现在所有Android版本中,并且,直接或间接使用这两种类任何代码都可能面临风险。
但是,这个漏洞并没有任何直接的安全问题;几年前在Firefox中发现了类似的漏洞。在未来的研究可能会找到一种方法,在当设备的系统资源被耗尽以及在重启前变得不稳定时注入或运行任意代码。
谷歌已经意识到这个漏洞,但并没有给出任何补丁时间表。在此期间,管理员应该关注该漏洞补丁的安全新闻或者攻击者可利用该漏洞的证据。而用户则应该从受批准的商店下载应用,并且,当他们的设备运行缓慢或意外重启时立即报告。