为防止黑客攻击, Android系统要求每一个Android应用程序必须要凭借数字签名才能进行安装,这一方面在一定程度上提升了安全的能力,但是随着互联网应用的快速发展,这种签名机制的各种弊端也逐渐显现。在最近的Mosec2017上,百度首席安全科学家、百度安全实验室负责人韦韬和百度安全实验室高级资深研究员张煜龙,针对当前的安卓签名机制的束缚及其导致的生态乱象,提出了全新的OASP(Online App Status Protocol,在线应用状态协议)解决方案。它既能兼容现有的签名机制,兼具开放、灵活、安全、可远程验证等优点,为Android生态联合打击黑产提供了重要的基础。
Android应用签名的束缚和生态乱象
Android系统要求每一个Android应用程序必须要凭借数字签名才能进行安装,因此Android生态强烈地依赖应用签名。例如,在应用版本更替时,应用商店需要校验签名证书的一致性;在应用安装时,Android系统需要校验签名合法性以防应用被恶意篡改;在应用诊断中,安全厂商也常常通过签名证书关联开发者,从而进行黑白名单判断;此外,Android系统中一些权限和资源的访问授权也是通过签名进行保障。
因此,一旦开发者使用某个证书为应用签名,在该应用的整个生命周期中,都必须坚持使用这一证书为后续版本签名,这就造成Android应用签名具有不可遗失、无法更换、不能升级的束缚。
这一束缚已经迫切地需要解决。在很多真实场景里,开发者都面临着不得不更换证书、或者需要区分拥有相同签名证书的应用的情况。譬如,很多开发者直接拿Android开源代码(AOSP)里的证书来做应用签名,致使不同开发者的应用共享同一签名证书。此时,攻击者就可以用这些公开的证书做应用签名,仿冒、替换正规应用。还有一些应用在外包开发、ROM制作、应用商店上架的过程中被第三方重复签名,同样导致不同开发者的应用共享签名证书。
其次是厂商内部管理问题。一些厂商的证书监控不严,个人开发者可以随便调用公司产品的证书来给应用签名。还有不少厂商存在私钥和证书泄露的问题,甚至连顶级软硬件公司(包括安全厂商和CA)都不能幸免。第三方可以通过非法渠道获取这些大公司的签名证书,来进行应用仿冒攻击。
因此所有的签名证书都要设置有效期,过了有效期证书即会失效,不允许更换证书即意味着应用的生命周期也到此为止。在较长的证书期限中,证书的签名算法和摘要算法都是固定的。随着时间推移,各种签名和摘要算法的破解难度都在下降,极易受到攻击。因而,证书的更换十分必要。
不仅如此,互联网公司之间常出现应用产品线转卖,应用的买卖双方都会为是否要将签名证书转手而头疼不已。
总而言之,Android应用签名不可替换的束缚,让开发者们面临着诸多考验。
现有的解决方案及缺陷
Google的官方应用市场Google Play已经意识到了签名证书遗失和泄漏等问题的危害,并提供了新的签名下发机制,将原有的应用提交、下发都必须是同一套私钥证书的规则替换掉,现在开发者可以选择用不同的证书来做提交签名和下发签名——前者用于验证开发者身份,后者上传Google代为保管。这样做虽然增强了下发签名证书的安全保护,但是提交的过程存在仿冒、钓鱼、劫持等问题。同时,绝大多数公司很难接受把签名证书和私钥交给其他公司(Google)来管理。
应用开发者们也很早就意识到了签名束缚之痛,目前比较广泛的签名证书更换手段是引导用户手动升级应用——提示用户安装新证书签名的新版本,然后再提示用户卸载旧证书签名的旧版本,但这一过程用户体验很差。Android 5.0于是引入了证书自动升级机制,鉴于这一机制不兼容老版本Android,也无法隔代升级,用户体验仍然很差。另外,该过程依然存在不校验证书过期、不校验证书链、可能被攻击者降级回旧签名证书等安全问题,并没有很妥善地解决问题。
相比而言,得益于其严格封闭的生态管控,iOS在这方面情况稍微好一点。但值得深思的是,恰恰因为iOS的封闭性,开发者、安全厂商、设备厂商、应用商店、政府机构、普通用户等参与者难以参与到安全生态防御中去。虽然Apple在iOS系统漏洞的遏制和响应上具备一些优势和经验,在安全上的投入也取得了一些成绩,但其独裁的姿态不利于整个生态联手对抗手段多变、组织众多、具有强利益驱动的庞大黑产势力。
百度安全OASP:去中心化的生态共建机制
针对应用签名的束缚和招致的问题,百度安全提出一种简单有效、且能兼容现有Android系统和应用商店的解决方案——IDSIG(鉴别签名)和基于IDSIG的OASP(Online App Status Protocol,在线应用状态协议)。OASP具有灵活、动态、兼容、安全等特点。不仅支持既有的Android验签机制、证书“换新”和跨代升级,还可以动态更新验证信息,通过生态联防避免生态的独裁。OASP是一个开放、去中心化的在线应用状态认证机制,对于支持OASP的应用,生态链的每一环(安全厂商、应用商店、设备厂商等等)都能进行如下动态验证:
安全厂商可以在云端进行IDSIG和OASP HTTPS证书信息的收集监控,生成相关证书名誉信息,随后在端上做应用扫描时结合OASP状态进行应用恶意判定。
应用商店可以收集开发者提交的OASP信息,在应用更新时根据OASP信息验证新版本;建议定期扫描应用的OASP状态,下架有问题的应用;开放共享OASP信息,第三方可以任意从应用商店获取OASP信息。
设备厂商可以在既有应用安装升级机制的基础上,利用IDSIG/OASP获得额外校验层。
OASP为开发者和其他厂商之间提供了更良性的互动,为Android生态联合打击黑产产业链提供了重要基石。百度安全实验室一直致力于推动良性、开放、协作的安全生态联防,推出了OASES(Open Adaptive Security Extensions,开放自适应安全扩展)技术,并和诸多厂商合作建立了包括内核漏洞热修复等一系列有效防护机制。OASP是OASES框架里的又一重要组成部分,将安全联合防护从系统层面扩展到了应用层面。百度安全实验室衷心希望更多的力量能够加入OASES的生态联防里,扩大网络安全生态,合力对抗黑产。