恶意 app 开发人员能秘密滥用一个 macOS API 功能截取用户屏幕,然后使用 OCR (光符识别)从程序上读取图像中的文本。这个功能是 CGWindowListCreateImage,常被 Mac app 用于截屏或者现场直播用户的桌面。
API 功能可滥用于读取用户敏感数据
Fastlane Tools 的创始人 Felix Krause 指出,任何 Mac app,无论是否在沙箱中,均能访问这个功能并秘密截取用户屏幕。
Krause 指出,攻击者能利用这个隐私安全漏洞并通过 CGWindowListCreateImage 在未经用户许可的前提下截取屏幕。在所执行的实验中,Krause 指出他能够使用一个 OCR 库读取多种通过 CGWindowListCreateImage 捕获的信息。他认为,攻击者能够:
- 从密码管理器中读取密码和密钥
- 读取敏感的源代码、API 密钥或类似数据
- 读取用户在 Mac 上打开的邮件和信息
- 检测用户使用的 web 服务(如邮件提供商、密码管理器、app 列表等)
- 了解用户的个人信息如银行卡详情、工资、居住地址等。
Krause 指出他在去年11月份将问题私下告知苹果公司。因为该问题尚未解决,因此他最近将自己的研究成果发布在自己的博客上,并且向苹果公开提交。
缓解措施建议
Krause 还提出了一些缓解措施,供苹果公司在阻止滥用 CGWindowListCreateImage 功能时予以考虑。
最简单的缓解措施是为 app 增加一个许可对话框,当app 使用这个功能截取用户屏幕时,用户可自主选择。
另外一个缓解措施是,当有 app 截取用户屏幕时,macOS 会向用户发出通知消息。Mac 安全软件可借由该通知系统拦截试图截屏行为。
Krause 指出,“Mac app 存在很多合法用例来记录屏幕,如密码双因素支持、屏幕记录软件等,但必须对它们有所控制,”
这并非 Krause 首次检查苹果功能的隐私控制。去年,他发现恶意 iOS 应用能通过获取图像许可的方式获取有限的地理位置信息并从本地存储照片中提取 GPS 坐标信息。