干货:iOS 11 短信拦截功能初探

自古以来iOS上的短信对各个app都是禁区,没有一个app能够获取用户短信的内容,这一现状将在iOS 11终结,在iOS 11 beta 1出来以后,我们发现新增了SMS fraud extension(恶意短信拦截插件),该插件在经过用户的授权后可以用于拦截用户的恶意短信。为了更好地保护老百姓的资金安全,钱盾反诈平台第一时间对这个功能做了分析。

效果演示:

干货:iOS 11 短信拦截功能初探

效果说明:

• 开启路径还是比较长:通用->信息->未知与垃圾信息

• 被过滤的短信不是删掉,而是归类于“过滤短信”这个分类里

• 打开被过滤的短信内容,里面有短信过滤插件的品牌展示

• iMessage不能被过滤

• 只有当短信的发送方不在联系人列表里的时候信息app才会把信息相关内容发给SMS fraud extension

• 如果用户安装了多个SMS fraud extension插件,同一时间只能enable一个

• SMS fraud extension可以获取到的内容包括短信发送方和短信内容,不包含收件人手机号

实现机制:

干货:iOS 11 短信拦截功能初探

  1. 信息app(用户)收到一条SMS或者MMS

  2. 信息app将短信的发送号码和短信内容发给SMS fraud extension进行检测

  3. SMS fraud extension可以使用本地数据进行离线检测,也可以线上实时检测。如果实时检测的话,由于SMS fraud extension没有网络请求的权限,只能委托信息app将短信相关内容发往SMS fraud extension对应的后台server。

  4. SMS fraud extension后台server检测短信的安全性并将结果返回给信息app

  5. 信息app将服务器结果转发回SMS fraud extension

  6. SMS fraud extension解析服务器返回内容,确定短信安全性,将action返回信息app

  7. 信息app根据SMS fraud extension返回的action来决定放行或过滤该信息

隐私保护:

结合苹果的文档来看,SMS fraud extension可以拿到短信内容,当传到服务器之后服务器也拿到了短信内容,但是苹果通过以下几个限制保证了该短信内容无法跟用户对应起来:

• SMS fraud extension写入的本地存储不能与containing app共享,也就是说containing app无法拿到短信相关内容并上传或分析。

• SMS fraud extension本身不可以发起网络请求,与服务端的唯一交互必须委托信息app来完成,信息app在发起请求的时候不会携带任何用户和机器相关的信息。服务端拿到的唯一用户环境相关信息只有IP,而单靠IP是无法跟用户对应起来的。

• 信息app发起请求时访问的URL要求必须配置是存放在SMS fraud extension的info.plist里,这就保证了SMS fraud extension和containing app都不能动态地修改该URL,不能通过给每一个用户配一个特殊的URL的方式来跟踪用户。

结论:

从苹果采取的隐私保护机制来看,SMS fraud extension和其后端对应的服务器可以获取到用户的短信发送方及短信内容,但是以目前的实现机制来看无法将短信内容对应到具体的用户,所以是相对安全。

参考文档:

  1. https://developer.apple.com/documentation/identitylookup?changes=latest_minor

  2. https://developer.apple.com/videos/play/wwdc2017/249/

相关推荐