在过去大约一个月里,有一些 iOS 应用因安全漏洞和 iPhone 跟踪问题而备受关注。现在轮到 Facebook 了,不过所涉及的问题也适用于许多其他社交网站,比如 LinkedIn、Dropbox,以及在 iOS 上使用这些网站来验证用户身份的应用。
安全研究人员 Gareth Wright 发现,Facebook 的 iOS 应用把身份验证令牌保存在一个纯文本文件中。这些令牌相当于你用来登录的密码。
在备份中存储身份验证令牌未必是个坏主意。毕竟,如果你需要从备份中恢复手机,看到一切都保持登录状态是件好事,而这就需要用到令牌。你可以通过 Facebook 目前的实现方式看到它是如何工作的:
- 在你的 iPhone 上登录 Facebook 应用,并用 iTunes 备份
- 在你的 iPhone 上退出 Facebook 应用的登录(转到左侧菜单底部,点击
Settings→Log Out) - 把 iTunes 备份恢复到你的手机
你会看到自己又重新登录了。很方便。
通往地狱的道路由善意铺成
Facebook 是否在备份中存储身份验证令牌并不是主要问题。最大的问题在于,这个令牌没有加密、不含设备专属的元素,也没有时间限制。这意味着有人可以从你的备份中提取这个文件,并将其导入自己的设备。简单来说,任何能够访问这个文件的人都可以完全访问你的 Facebook 账户,并利用它来窃取你的身份或跟踪你的活动。
除此之外,许多第三方应用和服务都把 Facebook 用作身份验证服务。如果黑客已经登录了你的 Facebook 账户,他们也可以借此访问这些服务。
Facebook 已就此事向新闻机构作出如下回应,不过他们似乎忽略了不安全备份被黑客利用的可能性,而我们认为这是最容易得手的方法。
Facebook’s iOS and Android applications are only intended for use with the manufacture provided operating system, and access tokens are only vulnerable if they have modified their mobile OS (i.e. jailbroken iOS or modded Android) or have granted a malicious actor access to the physical device. We develop and test our application on an unmodified version of mobile operating systems and rely on the native protections as a foundation for development, deployment and security, all of which is compromised on a jailbroken device. As Apple states, “unauthorized modification of iOS could allow hackers to steal personal information ... or introduce malware or viruses.” To protect themselves we recommend all users abstain from modifying their mobile OS to prevent any application instability or security issues.
你需要担心吗?要获取这个文件,对方必须能够实际接触你的 iOS 设备,或者一台存有未加密备份的 PC。随便玩玩的黑客可能无法接触这些,但意志坚定的黑客或许能够设法做到。
显然,Facebook 之类的应用发布者可以通过以下做法帮助自己:
- 对备份中的身份验证令牌施加额外加密
- 确保令牌包含设备专属的元素,使其无法在其他设备上使用
- 把令牌设置为在不久的将来过期
- 当有人使用恢复的令牌新登录某项服务时,向用户发出提醒
想检查你自己的 Facebook 身份验证令牌吗?

iPhone Backup Extractor 读取 Facebook 身份验证令牌
你可以使用 iPhone Backup Extractor,在“Expert Mode”下访问你的备份来做到这一点。除非你清楚自己在做什么,否则你将无法读取这些数据,也无法用它登录 Facebook——出于安全考虑,我们没有公布具体做法——但弄明白并不需要花太多功夫。




