技术编辑:宗恩丨发自 思否编辑部
SegmentFault 思否报道丨公众号:SegmentFault
近日在315晚会上央视曝光了上海氪信信息技术和北京招彩旺旺信息技术这两家公司,它们通过在50多款手机APP中植入SDK插件,在用户不知情的情况下,偷偷窃取用户的隐私,设备的 IMEI、IMSI、运营商信息、电话号码、短信记录 、通讯录、应用安装列表和传感器信息等都是是被窃取的目标。
在2019 年 4 月,南都个人信息保护研究中心委托中国金融认证中心针对使用率高的 SDK 做了隐私数据分析报告,报告显示,在测评的 60 款常用应用软件中,共使用了至少 966 个 SDK,平均每款 App 使用 19.3 个 SDK,也就是说用户不接触SDK 几乎是一件不可能的事。
此次315晚会上通过SDK泄露隐私的APP名单-1
此次315晚会上通过SDK泄露隐私的APP名单-2
SDK 英文全称 Software Development Kit,也就是「软件开发工具包」,一般来说 SDK 封装了一些常用、复杂的功能,软件开发者通过调用别人的SDK可以大大提高开发效率,缩短开发周期,还能显著的提升软件性能。但享受这些便利的同时却埋下了风险。
开发者想要让 APP 拥有 SDK 中的功能,就必须通过 API 连接 APP 和 SDK 工具包,在一个 APP 获取了某类权限了后,由于 API 的存在,SDK 提供者进行的代码埋点同样会采集到相应的数据,进而通过 SDK 回传给 SDK 的提供方。SDK 可以通过跨越 Android 系统接口的方式,执行 linux 命令的来获取信息。从而跳过 APP 获取权限前的询问用户路径,获得用户的隐私信息。
软件中存在众多 SDK 的原因
互联网大厂拥有强势的地位和深厚的技术,不需要快速更新迭代,就能够维持住以文档驱动传统瀑布模型(Waterfall Model)的开发流程,但小厂竞争力相对弱,为了适应客户需求的快速变化,不得不投身于「敏捷开发」。
敏捷开发并非某一种特定的开发方法,而是一种应对快速变化需求的软件开发能力。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。并且为了满足快速迭代与小步快跑的要求,引入便捷的第三方 SDK 不仅能够降低开发成本,还能减少工作量,因此也就显得更为顺理成章了。
根据南都个人信息保护研究中心2019年的调查显示:
1. 使用最广泛的SDK多来自头部互联网公司
腾讯、小米、华为、阿 里、Facebook 均位列其中
2. 多个 SDK 获取个人敏感信息,App 却未告知用户
SDK 收集的信息中, 手机设备信息和网络信息被收集得最为频繁。在用户个人信息方面,知名支付公司 SDK 获取了用户的手机号,但未在对应 App 的《隐私政策》里明确告知,且这些信息与实现 SDK 的功能有何关系较难看出。
3. 有 SDK 或存在隐瞒收集用户个人信息的情况
部分 SDK 能够通过代码收集用户的个人信息,并且超出了其官方文档所声明的系统权限,其中不乏支付卡信息、地理位置、传感器数据等个人敏感信息。 此外,还有少数SDK会向自己的服务器传输用户个人信息。这种行为增加了个人信息泄露、滥用的风险。
从以上信息也不难看出「SDK 泄露隐私」事件并非偶然发生。也绝非一朝一夕就能改善好的。
如何防范
给开发者的建议:
- 在软件开发时,应该对 SDK 进行逆向操作、以及代码进行扫描,来获知 SDK 进行了哪些操作、采集了哪些隐私数据。
- 尽可能选择有一定市场基础的第三方 SDK,以及尽量沿用 App Store 和 Google Play 里的 App 选用的 SDK 进行集成,这样可以大大降低 App 被下架的风险。
给用户的建议:
- 建议立刻卸载高风险软件
- 选择审查更为严格的iPhone手机
- 改域名映射,也就是host文件,将各种广告域名对应的IP强制转换到不可访问的IP,达到屏蔽效果。
- 用两个手机,其中一个是非智能机,专门用来沟通隐秘信息,另一个是智能机日常使用。
参考内容:
《常用第三方SDK收集使用个人信息评测报告》-南都个人信息保护研究中心、中国金融认证中心(CFCA)
《SDK窃取隐私背后,大环境不变或将一切皆成空》-三易生活 菠菜
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。