一名安全研究人员通过利用眼镜验证开发工具时的漏洞,成功获得了 Meta Ray-Ban 智能眼镜的任意代码执行权限和交互式 Shell。该研究人员通过操纵从配对智能手机发送的配置文件,绕过了 Meta 的签名验证,突显了该可穿戴设备安全架构中严重的信任边界问题。

这张图片展示了研究人员用于操纵配置文件的硬件和智能手机配对机制。
固件提取与 APK 注入
研究人员首先使用 Meta AI 应用提取眼镜的固件。通过使用 Frida Hook 应用的 `OTAArtifactInfo` 类,他们拦截了 CDN 更新 URL。他们进一步操纵应用的 GraphQL 输入,以请求完整的固件更新而非增量更新,从而允许他们转储并挂载设备的本地文件系统。
一旦获取固件,研究人员发现了一种运行自定义代码的方法。在固件版本 126 中,眼镜并未验证 Device Access Toolkit (DAT) APK(一种供开发者与眼镜交互的工具)是否由 Meta 签名。这使得研究人员能够将合法的 DAT 应用程序替换为他们自己的自签名版本。
“引入签名验证是一回事;确保其强制执行不会通过不可信的配置被绕过是另一回事。”
— Hacking the meta ray-ban smartglasses
调试与 Shell 获取
由于智能眼镜缺乏屏幕或控制台,研究人员使用通过 `android.media.ToneGenerator` 发出的系列音频蜂鸣声来指示注入代码的进度。这使他们能够调试问题,例如超时错误,即官方 Camera Access 应用如果在未检测到预期的 DAT 应用程序时会关闭连接。
为了建立持久连接,研究人员 Hook 了 Camera Access 应用,向 Meta AI 应用请求“高链路租约”。这迫使眼镜进入特定子网上的 Wi-Fi Direct 组。通过在眼镜上将监听器绑定到 TCP 端口 31337,研究人员能够从手机上使用 `nc` (netcat) 进入具有 Shell 级别执行权限的交互式 Shell。
绕过签名强制执行
Meta 最终在固件 127 中解决了 APK 注入漏洞,通过对 DAT APK 执行签名验证。然而,研究人员发现此检查受一个从配对手机获取的配置标志 (`signature_verification_enabled`) 控制。只要该配置文件结构正确,眼镜就会接受该配置,即使它已被篡改。
通过将 `0.mctable` 文件中的单个字节从 `0x80` 翻转为 `0x00`,研究人员禁用了签名检查。这使他们能够重新安装自签名的 APK 并重新获得 Shell 访问权限。研究人员通过他们的漏洞奖励平台向 Meta 报告了这些发现,该问题据信已被修复。
Hacker News 读者的反应
- 疑问: 一位评论者质疑该演示是否符合真正的安全漏洞定义,认为获取用户已拥有并与智能手机配对的设备权限,可能更类似于安装终端模拟器。 评论 ↗
- 疑问: 另一位用户提出了关于该漏洞实际局限性的问题,特别是询问其对软件更新的鲁棒性,以及缺乏持久性是否会限制其影响。 评论 ↗
- 疑问: 另一位评论者辩称这是一种黑客行为,因为设备故意限制用户操作,并表示他们打算在禁用自动更新的情况下测试此方法。 评论 ↗
以上为 Hacker News 讨论中观点的摘要,并非经过核实的事实。 阅读完整讨论 ↗