sdk-SDK你可能不知道 但你的秘密它可知道
2024年04月22日 靓嘟嘟 浏览量:次
不做网络透明人
在手机App的世界里,法规条文里所谓的“第三方应用或服务”是个看得见摸不着的存在。但事实上,不管是你每天收到的新闻推送,还是促销活动广告,甚至短信验证码,都有可能出自第三方之手。
这些集成在App里的第三方工具包被称为SDK(Software Development Kit,软件开发工具包)。它们可以帮助App高效率、低成本地实现地图、支付、统计、社交、广告等一系列功能,同时本身也具备获取相当一部分设备信息和用户个人信息的能力。
不过,由第三方SDK引入的安全问题也是显而易见的。比如因开发者的安全能力水平参差不齐,可能导致SDK的安全漏洞;还有开发者会故意预留“后门”,以便收集用户信息或执行越权操作。
2015年10月,一款名为“有米”的第三方广告SDK被发现收集了用户的个人身份信息,包括Apple ID邮件地址、设备识别码,以及安装在手机上的App列表信息。最后,使用有米SDK的256款App被苹果应用商店下架。
2017年8月,同样是第三方广告SDK的“个信”被发现内置后门,在未经用户允许的情况下收集用户隐私数据,获取用户设备中全部已经安装App列表。嵌入该SDK的500多款App的总下载量超过1亿次,最终全部被Google Play下架。
为了摸清SDK获取用户个人信息的合规现状,近日,南都个人信息保护研究中心、中国金融认证中心(CFCA)对60款常用App以及主流SDK进行了测评,并联合发布《常用第三方SDK收集使用个人信息测评报告》(下称《报告》)。
《报告》显示,讯飞、TalkingData等SDK要收集的个人信息未在其嵌入App的隐私政策或弹窗中被提及,TalkingData、友盟SDK可能隐瞒了其要收集的个人信息,携程、百度地图等SDK则会将向自己的服务器回传未经加密的用户个人信息甚至个人敏感信息。
平均每款App使用19.3个SDK
SDK可清楚了解用户喜好
《报告》选取了社交交友、休闲娱乐、生活服务、购物导购、旅游交通、移动金融六大行业的60款常用App,通过逆向分析、抓包、函数挂钩等技术手段,分析这些App使用的SDK收集用户个人信息的情况。
去除普遍对App加固而无法确切检测的移动金融行业App,平均每款App使用的SDK数量为19.3个;按照App集成的SDK类别划分,消息推送类SDK最多,综合类和辅助开发类其次。
值得注意的是,其中微信SDK、腾讯Open SDK、小米推送SDK、华为SDK、支付宝SDK、Facebook SDK和爱彼迎SDK均被超过半数的App嵌入,而这些SDK都来自头部互联网公司。
从SDK被普遍使用的情况来看,App对SDK有较强的依赖性,SDK安全俨然已经成为整个移动互联网生态中极其关键的一环,它们收集哪些信息、如何使用和保护这些信息也就十分重要。
《报告》显示,在检测时间内,60款App使用的966个SDK中,有150个获取了IMEI、IMSI等手机设备信息,在所有类别中最为频繁;有35个以上SDK获取了各类网络信息,如IP地址、MAC地址、Wi-Fi热点信息等。
据南都记者了解,这些信息通常被用于统计分析和定向推送的目的。此外,还有10个SDK获取了用户行为信息,比如锁屏、安装/升级/卸载App。
高级产品研发专家马巍源曾撰文揭露过SDK收集用户信息的乱象,并将这些信息按照危险程度分为极高、高、中、低四个级别。其中获取本地已安装的App信息属于危险级别“极高”的隐私信息。
文章指出,通过收集这类信息,SDK可以清楚了解用户的喜好——“例如一个设备用户安装了某类同性交友App,那就意味着这种极其隐私的信息将被泄露”。
中国银行、宜人财富使用的SDK
获取录音、定位未告知用户
《报告》还发现,用户的电话号码、地理位置、手机视频和相册等个人信息也被一些SDK获取,有的是为了实现相应功能,但有的是未经用户允许获取的。
国家标准《信息安全技术 个人信息安全规范》修订草案要求,当个人信息控制者在其产品或服务中接入具备收集个人信息功能的第三方产品或服务时,应通过合同等形式明确双方的安全责任及应实施的个人信息安全措施,并要求第三方向个人信息主体征得收集个人信息的授权同意。
也就是说,SDK收集个人信息也需要经过用户授权同意。由于SDK不直接与用户交互,使用它的App有义务代为向用户告知。然而,不少App并没有做到——用户的隐私很可能在不知情的情况下被SDK收集了。
中国银行手机银行App的讯飞SDK可以“对环境或通话录音”,中国银行手机银行App却没有提供任何隐私政策,更不用提能够告知并获取同意;宜人财富App和宜人贷借款App使用的TalkingData SDK获取了用户的地理位置,但均未在隐私政策里告知用户。
此外,《报告》还根据《网络安全实践指南—移动互联网应用基本业务功能必要信息规范》,列出了113个SDK超出规范界定收集的“非必要信息”,即App基本业务功能之外的个人信息(获取此类信息并不违规,但需要主动获取用户的同意)。
虽然国内对于第三方SDK获取非必要信息尚没有法律法规条文的规定,但依照“知情同意”的原则,《报告》认为,即使这些信息并不是App本身需要,而是SDK需要收集的,App也应在收集上述个人信息时弹窗,获取用户同意,以保障用户知情同意的权利。
TalkingData、友盟SDK
或隐瞒收集用户个人信息
SDK实现功能需要申请对应的系统权限,但它收集的个人信息是否仅限于权限涉及的范围之内呢?
《报告》对15个较为主流的SDK进行深度分析发现,SDK需要申请的系统权限从5项到14项不等,极光数据分析SDK、百度地图SDK申请得最多。
在官方文档里提供了相关信息的10个SDK中,三成能够通过代码收集超出其声明权限范围的个人信息,可能存在隐瞒收集用户个人信息的情况。
比如TalkingData SDK仅声明会获取地理位置信息,但它的代码还包括读取第三方平台账户信息、已绑定的NFC支付卡信息等内容;友盟SDK有获取地理位置信息的代码,但并未声明。
《报告》指出,还有少数SDK会向自己的服务器回传未经加密的用户个人信息甚至个人敏感信息。值得注意的是,这里的未经加密可能存在两种情况,一种是未对通信渠道加密(如http),另一种是未对传输内容加密(如使用https但未对数据本身加密)。
比如Ping++SDK、TalkingData SDK、携程SDK、百度地图SDK会向服务器传输未经加密的地理位置信息。这些个人信息在App开发者、单个或多个第三方之间流动,增加了个人信息泄露、滥用的风险。
南都记者梳理发现,近年来出台的不少个人信息保护、数据安全相关法规和标准已经明确了管理SDK的必要性。
《数据安全管理办法(征求意见稿)》第三十条规定,网络运营者对接入其平台的第三方应用,应明确数据安全要求和责任,督促监督第三方应用运营者加强数据安全管理。
《信息安全技术 个人信息安全规范》修订草案则要求,涉及SDK等第三方嵌入或接入的自动化工具的个人信息控制者,宜开展技术检测确保第三方的个人信息收集、使用行为符合约定要求;宜对其收集个人信息的行为进行审计,发现超出约定行为的及时切断接入。
采写:南都记者 蒋琳