iOS软件被曝使用私有API:你的数据被偷了

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介:

不同的配方,相同的味道。App Store 一直都在飞快地发展,现在这块蛋糕越来越大,尤其是在中国地区。所以,想要从这块蛋糕上尝到甜头的人也越来越多。做法正经的,我们叫他们商人;做法不正经的,我们只能称之为奸商甚至是犯罪份子了。可怜开发者,要背锅了。

罪恶之源被曝光

iOS软件被曝使用私有API:你的数据被偷了

“我们已经了解到,一系列采用第三方移动广告 SDK 进行开发的 iOS 软件会通过私人 API 擅自收集用户的个人信息,包括邮箱地址、设备序列号以及路由数据等等。然后,这些软件把用户数据传向一家名为有米的移动广告供应商所设的服务器,开发者所使用的 SDK 也是由这家供应商所开发的。

这种行为已经违反了我们的安全与隐私准则,所以使用有米SDK 进行开发的软件将会从 App Store 下架,提交的审核也会被拒绝。苹果正在与开发者进行紧密合作,帮助他们将自己的软件进行升级,以配合App Store 的准则,保证用户信息的安全,尽快让受到影响的软件回到App Store。”

上面这一段话,是苹果发言人向代码数据分析机构SourceDNA 发送的一次最新回应,因为后者在近日有一段了不得的发现:App Store 当中有一大批软件会通过私人API 收集用户资料,然后传向有米的服务器。有米,这是一家来自中国的移动广告供应商,他们自己有一套SDK,与之合作的开发者可以使用他们的SDK 来开发软件。

通过使用自家的检测工具,SourceDNA 在App Store 当中发现了至少256 款使用有米SDK来开发的软件,所收获的累计下载次数超过 100 百万次,这些软件将会被苹果一一下架(目前已经有一批被下架),其开发者基本上也都来自于中国。一直以来,苹果都不允许第三方 SDK 带私有 API,但这一次有米明显是绕过了 App Store 的审核机制。

根据 SourceDNA 公布的信息,使用有米 SDK 开发的软件会收集以下信息:

1:安装应用的具体列表

2:iOS 设备序列号(识别号)

3:硬件及外接设备的标识符等信息

4:Apple ID 邮件地址

据了解,有米通过私有 API 收集用户信息已经不是一天两天的事儿了,他们早在两年之前就开始这么干,并随着时间的推移越来越肆无忌惮。也许是因为有米有特别的隐藏数据收集行为的技巧,苹果也一直没有发现他们所干的勾当。收集了两年的用户资料才被发现,他们到底是怎么做到的呢,我们先来看看 SourceDNA 是怎么发现的。

背后的技术解析

iOS软件被曝使用私有API:你的数据被偷了

iOS 的二进制文件包括 ARM 机器代码,SourceDNA 会对这一些代码进行解析。调用一个 Objective-C 方案时,它是通过 objc_msgsend 来进行矢量导航的,而且它是以字符串的方式来接收类别及方案。一般情况下,在调用 objc_msgsend 之前这些字符串可以通过查看数据参考来完成静态解析。SourceDNA 会跟踪这些调用目标类别/方案的起源和目的,然后建立一个调用图,用来探测每个(受到影响的)应用程序是使用了哪种方案。

然而,在某些情况下,这些参数是不能被静态解析的。因为它们只是字符串,它们可以在运行时通过任何字符串操作例程来创建。所以,一些工具会利用这种特点来混淆类别和方案的名称,在调用 objc_msgsend 之前解扰字符串。

一款应用程序还可以通过调用 dlopen 来加载一个全新的资料库,然后通过调用 dlsym 在这个资料库里面访问相应的函数或数据。这样一来,动态链接器在指定的文件中就会进行勘查(首先检查它的代码签名),然后查找给定的符号地址。由于资料库和符号名称都是字符串,因此也可以在运行时创建。

SourceDNA 对这一个在数以百万计应用程序当中存在的代码行为进行了解析,主要是确认运行时间里的资料库加载是否被拿来访问私有的 API接口,SourceDNA 对他们所收集到(应用程序)资料进行排查,如果符合以下条件就证明应用程序会收集用户的个人信息:

-调用dlopen、dlsym 或 nsclassfromstring / nsselectorfromstring

-通过各种字符串控制函数来生成参数

iOS软件被曝使用私有API:你的数据被偷了

经过排查发现,有几百款应用程序符合他们的设定。这些应用程序使用的是 sprintf 和 %s 格式字符串以及 %@ 和 NSString stringwithformat:。SourceDNA 为此还通过使用附近的静态字符串写了一个脚本来扩展这些格式字符串,然后对重构的参数进行聚合。最后,就得到了有米 SDK 试图收集用户个人信息的证据。

至于为何有米通过私有 API 收集用户资料的行为这么久才被发现,主要是因为这家移动广告商通过枚举电池系统等外接设备突破了苹果的限制,并且又以硬件标识符的方式对设备的序列号进行搜集,因此很难被查到。据了解,这是自 App Store 在 2008 年上线以来,第一次有人以这样的方式来绕过苹果的审核机制。

苹果做法可点赞

这一次的有米 SDK 事件很容易让我们想起不久之前的 XcodeGhost,因为中招的都是 App Store,而且源头都是中国区。不过,其影响范围可不仅仅是中国。上一次的 XcodeGhost 事件,主要是因为开发者使用了来源不明的 Xcode 开发工具所致,影响到的都是像微信、铁路 12306、联通手机营业厅、高德地图等非常热门的软件,苹果也因此在第一时间对受到影响的软件进行了暂时下架处理。

在本次事件中,SourceDNA 并没有列出他们探测到的 256 款应用程序名单,目前我们所知中国版的麦当劳 App 已经因为该事件而遭到下架处理。我们还通过有米的官网了解到,像唯品会、淘宝网等知名 App 是他们的合作伙伴,至于是否受到影响目前还不得而知,有米方面至今还未对此报告作出回应。

好在,无论是涉及到用户安全还是隐私问题,苹果的态度一直都是“坚决拥护”。XcodeGhost 事件如是,有米 SDK 事件如是,苹果都在第一时间作出反应,该封杀的就封杀。

iOS 平台也不是没有出现过安全事故,但此前我们看到的恶意软件感染事件基本上都是黑客直接把病毒植入伪装的应用程序内,又或者是通过外部链接来引诱 iOS 上当。然而这一次的 SDK 以及上一次的 XcodeGhost 事件,不法份子则是通过开发软件的源头下手,《福布斯》杂志称之为“一种全新的方式”。

近段时间曾有调查发现,中国已经成为iOS 应用最重要的市场,因为中国区的 App Store 应用下载数已经超过了美国(收入上还落后)。随着 App Store 下载量的进一步提升,中国区应用市场这块蛋糕也越来越大,而盯上蛋糕的黑客也自然越来越多。也许不久之后,我们又会见到“一种全新的方式”。

最后说一句,在本次事件当中,开发者也很可怜的,因为他们很有可能也不知道自己开发的应用会搜集用户的信息,因为有米根本没有告诉他们。

作者:蓝雨泪


来源:51CTO

相关文章
|
27天前
|
开发框架 前端开发 Android开发
Flutter 与原生模块(Android 和 iOS)之间的通信机制,包括方法调用、事件传递等,分析了通信的必要性、主要方式、数据传递、性能优化及错误处理,并通过实际案例展示了其应用效果,展望了未来的发展趋势
本文深入探讨了 Flutter 与原生模块(Android 和 iOS)之间的通信机制,包括方法调用、事件传递等,分析了通信的必要性、主要方式、数据传递、性能优化及错误处理,并通过实际案例展示了其应用效果,展望了未来的发展趋势。这对于实现高效的跨平台移动应用开发具有重要指导意义。
108 4
|
4天前
|
数据采集 监控 数据挖掘
常用电商商品数据API接口(item get)概述,数据分析以及上货
电商商品数据API接口(item get)是电商平台上用于提供商品详细信息的接口。这些接口允许开发者或系统以编程方式获取商品的详细信息,包括但不限于商品的标题、价格、库存、图片、销量、规格参数、用户评价等。这些信息对于电商业务来说至关重要,是商品数据分析、价格监控、上货策略制定等工作的基础。
|
21天前
|
API 网络安全
发送UDP数据免费API接口教程
此API用于向指定主机发送UDP数据,支持POST或GET请求。需提供用户ID、密钥、接收IP及端口、数据内容等参数。返回状态码和信息提示。示例中含公共ID与KEY,建议使用个人凭证以提高调用频率。
43 13
|
21天前
|
网络协议 API 网络安全
发送TCP数据免费API接口教程
此API用于向指定主机发送TCP数据,支持POST/GET请求,需提供用户ID、KEY、接收IP、端口及数据内容。返回状态码和信息提示,示例如下:{"code":200,"msg":"发送成功!"}。详情见:https://www.apihz.cn/api/datacstcp.html
35 11
|
1月前
|
人工智能 关系型数据库 MySQL
数据魔力,一触即发 —— Dataphin数据服务API,百炼插件新星降临!
本文通过一个利用百炼大模型平台和Dataphin数据服务API构建一个客户360智能应用的案例,介绍如何使用Dataphin数据服务API在百炼平台创建一个自定义插件,用于智能应用的开发,提升企业智能化应用水平。
128 3
数据魔力,一触即发 —— Dataphin数据服务API,百炼插件新星降临!
|
22天前
|
API 数据安全/隐私保护 开发者
实时获取小红书详情 API 数据
小红书详情API数据获取指南:注册开发者账号,创建应用并申请接口权限,构建请求获取笔记详情,使用Python等语言处理响应数据。需遵守使用规则,注意调用频率和数据安全。
|
1月前
|
XML 数据可视化 API
商品详情数据实战案例,API接口系列
淘宝商品详情数据在电商领域具有广泛的应用价值,而淘宝商品详情API接口则为开发者提供了获取这些数据的重要途径。通过合理利用这些接口和数据,可以提升业务效率、优化用户体验,为电商行业的发展注入新的活力。
|
1月前
|
SQL 缓存 API
在API接口数据获取过程中,如何确保数据的安全性和隐私性?
在API接口数据获取过程中,确保数据的安全性和隐私性至关重要。本文介绍了身份认证与授权、防止SQL注入和XSS攻击、加密传输、API版本控制、限流与熔断、压力测试与性能优化、备份与恢复以及法律和伦理考量等关键措施,帮助开发者和管理者有效保护API接口的数据安全和隐私性。
|
1月前
|
前端开发 JavaScript API
探索GraphQL:如何构建高效的数据API
【10月更文挑战第25天】在现代Web开发中,API的效率和灵活性至关重要。本文探讨了如何利用GraphQL构建高效的数据API。GraphQL通过声明式查询方式,允许客户端精确指定所需数据,减少数据传输量,提高API效率。文章介绍了设置GraphQL服务器、设计API Schema、实现解析函数及调整前后端交互的具体步骤,展示了GraphQL的优势和应用场景。
44 2
|
2月前
|
缓存 监控 测试技术
获取API接口数据的最佳实践详解
在开发过程中,与API进行交互是获取数据和服务的关键步骤。本文详细介绍了10个最佳实践,包括明确需求和文档、错误处理、数据验证、性能优化、安全性、日志和监控、版本控制、代码复用和维护、测试以及遵守法律和道德规范,帮助开发者更高效地从API获取数据,确保数据的准确性、安全性和性能。
下一篇
DataWorks