本周,一件有关 iOS 隐私安全的事件在国外引发了热议,事件的起因是安全研究员 Felix Krause 发现 Meta 公司旗下的多款软件(Facebook、Instagram、Messenger)通过使用应用内网络浏览器(in-app web browser)和注入的 JavaScript 代码来跟踪用户数据,能够获得的数据包括访问的网站、屏幕点击、键盘输入,以及文本选择等内容。
除了 Meta,之后 Felix Krause 还发现 TikTok 也会采用类似的方式来收集用户数据。
为了让所有用户都可以清楚地看到通过应用内浏览器注入的 JavaScript 代码,安全研究员 Felix Krause 推出了一个全新的开源工具 —— InAppBrowser,这个工具使用起来毫无门槛(稍后会介绍),用户可以使用它来检查嵌入在应用程序中的网络浏览器如何注入 JavaScript 代码来跟踪用户。
对于那些不熟悉应用内浏览器的人来说,这是还是先解释一下。应用内浏览器通常在用户点击应用内的一个 URL 时开始运作,通常都是通过创建 WebViews 的实例,并将公共 URL 或应用资源中的一些内容加载到这个实例中。这样应用程序就会直接显示网页,而不必将用户重定向到外部浏览器。iOS 和 Android 的应用内浏览器在很多方面都很相似,当然两者也提供了各自的平台特定方法,用于启用/禁用一些功能。
以此次安全研究员 Felix Krause 的发现为例,尽管 Meta 和 TikTok 应用内浏览器使用的是基于 iOS 上的 Safari WebKit,但开发者可以修改它们来运行自己的 JavaScript 代码。因此,用户更容易在不知情的情况下被追踪。例如,一个应用程序可以使用自定义的应用内浏览器来收集网页上的所有点击、键盘输入、网站标题等等。
通过收集这些数据,这些应用可以创建用户的数字指纹,并以此为基础向用户推送更加有针对性的广告、视频和帖子等。除此之外,由于可以监测用户屏幕点击和键盘输入,如果用户在应用内浏览器中输入了银行账号、身份信息等敏感内容,面临的风险将会更高。Krause 指出,InAppBrowser 目前还不能检测所有的 JavaScript 代码,但它仍然可以让用户更深入地了解应用程序正在收集哪些数据。
如何使用 InAppBrowser 工具
使用 InAppBrowser 工具是非常简单的。首先打开一个你想分析的应用程序,然后在应用内的某个地方分享这个 URL(https://InAppBrowser.com,例如将 URL 以私信的方式发送给朋友),最后在应用内点击这个链接打开它,就可以得到一份关于 JavaScript 注入代码的报告。
当然开发者还指出,并不是每个将 JavaScript 代码注入应用内浏览器的应用都是出于恶意的,因为 JavaScript 是许多网络功能的基础。
InAppBrowser 已在 GitHub 开源,并以 MIT 协议分发。