管好SDK安全 莫让它成为捣乱熊孩子
星期一, 八月 5, 2019
SDK即软件开发工具包(Software Development Kit),是软件工程师用于为特定软件包、软件框架、硬件平台、作业系统等创建应用软件的开发工具集合。数字经济时代下,数据和服务将成为整个时代发展的核心。在整个数字化经济转型的进程中,SDK作为一种重要的技术表现形式,在发挥着越来越重要的作用,大量企业在数字化经济转型过程中都会对外发布SDK或集成第三方SDK。
SDK根据功能的不同可以分为推送、通信、存储、安全、地图及位置服务、统计及增长、社交、广告、语音识别、图像识别等种类。根据是否收费可以分为免费型和收费型,免费型是企业为打造自己的生态系统或个人为发扬免费、开源精神而开发的SDK,收费型则多为企业集成自己的资源及能力,为实现商业变现而开发的SDK。如今,SDK正在成为数字化经济转型中移动业务价值拓展的重要组成部分。
据梆梆安全全球渠道动态监测分析平台数据统计分析显示,在1000余万移动应用中,平均每个App集成的第三方SDK数量为14.6个,其中分析、广告、社交、支付、地图、影音等类型的SDK被集成次数排名靠前。
然而,不法分子也瞄准了移动数字化经济共享服务模式的薄弱环节——SDK。SDK自身存在的漏洞如果被不法分子所利用,攻击者就能够利用SDK自身的强大功能轻松发动破坏力更大的恶意攻击:例如在用户毫无察觉的情况下打开相机拍照,通过发送短信盗取双因素认证令牌,或将设备变成僵尸网络的一部分。近年来,由于SDK问题所导致的安全事件屡遭曝光,其影响范围之广、影响程度之深正在使得整个相关产业链遭受严重的信任危机。
图1:典型SDK安全事件
当前,移动SDK正在面临用户隐私数据泄露、外部恶意攻击、程序自身漏洞以及恶意SDK导致的软件供应链污染所引发的安全挑战。考虑到SDK的使用形态,人们可以从以下两个角度去审视SDK的安全问题:
1、引入SDK:自身应用中集成引入的第三方SDK;
2、外发SDK:将自身业务服务封装,发布出去给第三方厂商调用使用的SDK;
对于引入SDK而言,由于SDK作为自身应用的一部分,其主要的安全风险为SDK自身的恶意行为。由于Android操作系统带有热更新机制,这使得一部分恶意SDK在客户集成阶段会表现为一个非常正常的应用,而一旦应用发布后到了运行阶段,攻击者就会通过热更新机制,更新恶意代码,执行盗取用户数据、采集敏感信息等恶意行为。这种发布后作恶的行为在很大程度上绕过了发布前的静态检测,具有非常大的迷惑性,也使得其作恶行为更加难以被发现。
对于外发SDK而言,SDK本身承载了客户非常重要的业务逻辑实现和商业服务,SDK在发布后的接入阶段,会对第三方接入厂商进行检测、审核,只有被允许集成的厂商才能接入。外发SDK在发布后的运行阶段,极容易遭遇剥离、破解、注入、调试和渗透测试等运行时攻击行为。
梆梆安全创新性提出“SDK安全保护方案”,针对引入SDK和外发SDK提供全生命周期的安全保护。
图2:梆梆安全“SDK安全保护方案”
保护引入SDK安全:梆梆安全的“SDK安全保护方案”能够根据国家《个人信息保护自评估指南》并结合行业相关法规,采用自动化和人工检测相结合的技术手段,在集成开发与测试阶段全面评估接入SDK的安全漏洞与合规问题,直观发现SDK所存在的安全隐患,如泄漏用户数据、自身存在安全漏洞、业务逻辑不完整、攻击面过多、不符合等保规范等。
引入SDK集成到自身应用后会成为自身应用的一部分,面临被破解、攻击、剥离等安全风险,梆梆安全“SDK安全保护方案”可以针对引入SDK实施安全保护、绑定等防御措施,大幅提升引入SDK的安全防护能力。
由于存在热更新等技术手段,在引入SDK随自身应用发布后,还需要持续监控引入SDK的敏感行为。梆梆安全“SDK安全保护方案”支持对引入SDK在发布后运行阶段的敏感行为监测、预警、审计和拦截能力,能够在运行过程中严格管控引入SDK的行为。
保护外发SDK安全:梆梆安全“SDK安全保护方案”会通过安全咨询服务,帮助客户确立外发SDK安全开发基线,梳理业务设计和技术设计的安全问题,提供安全培训,提升开发人员的安全能力。而通过为客户提供成熟的安全开发套件,梆梆安全“SDK安全保护方案”还能解决用户安全键盘、通信协议保护等典型场景的安全问题,帮助客户提升开发效率,有效降低引入新安全风险的几率。
在测试阶段,通过提供自动化和人工安全检测服务,梆梆安全“SDK安全保护方案”可以帮助客户确定安全基线的达标状况,发现开发人员引入的安全缺陷,及时修复漏洞。
随着外发SDK发布后,其会被集成到众多第三方厂商的应用中,此时需要建立全面的第三方接入厂商SDK安全管控机制,确保外发SDK能够可控、安全的集成到第三方授权应用中,防止遭受剥离、破解、篡改等攻击。
考虑到SDK运行环境的不可控,还需要对SDK实施主动安全监控,实现SDK对自身威胁的感知、对宿主APK威胁的感知以及对宿主应用所在环境威胁的感知,在风险发生时或发生前做到预警、阻断,在风险发生后进行溯源。
移动数字化供应链能够正常运行的技术核心就在于API/SDK,这个关键点一旦出现安全问题,其所导致连锁反应造成的损失将不可估量,因此必须要采取有效的保障措施保护好SDK安全。
一般而言,SDK供应商开发出各种类型SDK后会上传到开发者社区或者其他发布渠道,企业或个人开发者将这些SDK集成到App中后会把这些App再发布到应用商店,供最终用户从应用商店下载这些App使用。在这个链条中,SDK供应商将自身的数据和能力提供给企业和个人开发者,企业和个人开发者利用这些数据和能力使自己的产品变得更加丰富,更加多元化,同时又降低了自己的开发成本。这类场景下的SDK就需要引用方采取适当的安全防护措施,保障所引用SDK的安全性。
图3:上图这些引入SDK场景需做好安全防护工作
另外,在数字化经济转型过程中,许多企业会通过对外输出数据、服务能力实现新业务领域的拓展,而外发SDK作为对外能力输出的一种重要形式就在被众多行业所广泛采用。例如金融行业的开放银行领域,银行业者通过将自己的业务服务和数据服务封装到一个SDK中,实现向第三方合作伙伴提供开放金融能力。在SDK外发的过程中,会面临众多的第三方合作伙伴接入,此时就需要针对这些外发SDK建立起涵盖全生命周期的防护,保障银行业的对外开放能力安全输出。
图4:上图这些外发SDK场景需要严密保护SDK安全