移动应用软件供应链安全应对指南
星期一, 九月 9, 2019
近日,中国信息通信研究院与环球律师事务所联合发布了《软件开发包(SDK)安全与合规白皮书(2019)》,站在集成者视角,详细展示了软件开发包(以下简称SDK)的安全风险、主要问题,并且提出了对第三方SDK管理的相关建议,再一次将移动互联网软件供应链安全推向高点。
SDK作为移动互联网时代使用最为广泛的软件供应链形式,得到了非常迅速的发展。根据全球知名IT研究与顾问咨询公司Gartner统计,在开源SDK领域,从2010年到2018年软件代码中采用开源框架或组件、第三方库的比例每年以30%的速度增长。开源代码的使用大幅度提高软件研发效率、缩短上市时间、降低开发成本,但是开源软件中存在的大量缺陷、甚至安全漏洞也一并进入了软件部署包,为软件带来巨大的安全风险。
近年来,数字化经济转型将整个互联网推向了变革的新时代,企业将自身的服务、数据封装,对外共享,与第三方合作伙伴建设生态体系。SDK作为数字化经济转型过程中重要的服务、数据对外输出的技术手段,由于其相对于服务端API、H5形式具备安全强度高、管控能力强等优势,在数字化经济转型的对外服务中发挥着重要作用。2019年8月23日,中国人民银行印发《金融科技(FinTech)发展规划(2019-2021年)》(银发〔2019〕209号),指出“借助应用程序编程接口(API)、软件开发工具包(SDK)等手段深化跨界合作,在依法合规前提下将金融业务整合解构和模块封装,支持合作方在不同应用场景中自行组合与应用,借助各行业优质渠道资源打造新型商业范式,实现资源最大化利用,构建开放、合作、共赢的金融服务生态体系”。
2017年9月22日,某安全团队发现某知名消息推送SDK存在可越权调用未导出组件的漏洞,并利用该漏洞实现了对使用了SDK的App的任意组件的恶意调用、任意虚假消息的通知、远程代码执行等攻击。基于该漏洞,可以实现对终端用户推送虚假诈骗信息、远程窃取用户终端设备中的敏感数据(例如通讯录、照片、账号密码等数据)等功能。此外,该漏洞的危害依赖于Android应用本身提供的功能而有所不同,因此对终端用户的攻击方式亦是姿态各异,造成的危害也是多种多样。据统计有7000+款App受此漏洞影响。2019年3月,杭州某科技公司利用其对外提供的SDK非法搜集用户的电话联系人列表、地理位置和QQ登录信息。窃取信息的代码被隐藏在看似安全的SDK中,并在手机重新启动或受感染的App应用程序启动时提供详细信息,该组件存在于第三方应用商店提供的多达12款安卓App应用程序中,且这些受感染的App被下载了至少1.11亿次。
在移动互联网环境下,软件供应链的安全问题显得更为突出,主要体现在以下几个方面:
移动互联网的开放特性
移动互联网的典型特征为开放性,移动应用在开发完成发布后,其最终运行在众多用户的终端开放环境中,开发者和运维者对于开放环境的掌控力不足;
Android生态的开放性
Android操作系统先天比较开放,允许应用进行热更新,部分SDK在运行期间通过热更新引入恶意代码;
SDK不透明化严重
众多开发者着重关注SDK本身的功能、兼容性等问题,加之绝大部分的SDK具有混淆、加固等安全措施,因此,开发者对于第三方SDK的内部实现逻辑、采集信息类别、其他更新和安全机制等无从了解;
SDK专业化趋势明显
由于移动应用需要的个性化功能越来越多,如文字OCR识别、语音识别、人脸识别、证件识别等,而这些功能组件越来越依赖于专业的第三方服务提供商,大量的用户数据采集、存储、分析、传输、使用过程处于不受控状态。
此外,移动应用软件供应链的不同角色对安全的认知和诉求有着非常明显的差异。
对于SDK发布者而言,普遍比较关心的安全问题集中在4个层面:1、SDK是否存在潜在的业务逻辑缺陷,会被利用;2、SDK发布后是否会被破解、逆向分析、盗版等;3、SDK发布后是否会被非授权集成调用,导致管控机制失效;4、SDK发布后是否会遭遇动态运行时攻击。
对于SDK集成者而言,作为最终的SDK使用方,由于大部分SDK业务逻辑复杂,已实施代码混淆、加固等安全措施,这反倒会削弱集成方对于第三方SDK的安全情况掌控力。目前,SDK自身安全漏洞、SDK窃取用户数据、SDK兼容性问题、SDK运行阶段热更新代码等已成为集成者最为关注的安全问题。
近年来,移动应用软件供应链所引发的应用安全问题屡见不鲜。随着SDK在软件供应链中扮演的角色越来越重要,而政策对于个人隐私的强监管也在倒逼开发者不仅要关注软件自身的安全问题,还需要对软件供应链进行全面防护。移动互联网的软件供应链安全,需要站在不同角色角度,充分考虑整个生命周期安全风险,制定完善的安全防护方案。
集成者视角下的SDK全生命周期安全解决方案
对SDK集成方而言,移动应用软件供应链安全需要充分考虑:有哪些第三方SDK?这些SDK安全性如何?这些SDK个人隐私数据是否合规?其发布后是否存在热更新窃取数据可能?梆梆安全通过软件成分分析、静/动安全测评、运行时敏感行为动态监测为集成者建立SDK全生命周期解决方案,有效保障软件供应链安全。
发布者视角下的SDK全生命周期安全解决方案
对SDK发布者而言,移动应用软件供应链需要充分考虑业务架构缺陷、业务逻辑缺陷、SDK破解/盗版/剥离、SDK运行时攻击等多方面安全问题。梆梆安全通过设计阶段安全咨询、开发阶段安全套件、测试阶段安全测试、发布阶段接入管控、运维阶段安全监测为发布者打造全生命周期软件供应链安全。
SDK的安全问题在移动应用软件供应链体系里在变得日益凸显,有效采用适合的SDK全生命周期安全解决方案,拒做“背锅侠”,现在做起正当时!