导语:任意的Mac应用、沙箱都可以访问CGWindowListCreateImage函数,并秘密地对用户屏幕进行截图。然后可以对用OCR库来读取密码、token、key等。
简介
恶意应用开发者可以悄悄地用macOS API函数来对用户屏幕进行截屏,然后用OCR(Optical Character Recognition,光学字符识别)来读取截屏图形的内容。
被恶意应用开发者滥用的函数就是CGWindowListCreateImage,该函数常被app用来截图。
CGImageRef CGWindowListCreateImage(CGRect screenBounds, CGWindowListOption listOption, CGWindowID windowID, CGWindowImageOption imageOption);
具体见官方关于CGWindowListCreateImage函数的说明
https://developer.apple.com/documentation/coregraphics/1454852-cgwindowlistcreateimage?language=objc
隐私信息窃取
根据Fastlane工具创始人Felix Krause的说法,任意的Mac应用、沙箱都可以访问该函数,并秘密地对用户屏幕进行截图。Krause认为恶意应用开发者可以滥用这个针对隐私的漏洞,并使用CGWindowListCreateImage在没有用户许可的情况下对用户屏幕进行截屏。
在实验中,Krause证实可以用OCR库来读取CGWindowListCreateImage获取的不同类型的信息。攻击者可以:
从密码管理器中读取密码和key
读取隐私源码、API key和其他类似的数据
读取Mac上用户打开的邮件和消息
检测用户使用的web服务,如邮件提供商、密码管理器、app列表等
获取用户的个人信息,比如银行账户、工资、地址等
时间线
Krause去年10月他已经将漏洞报告了Apple,因为该问题还没有解决,所以前几天他才将该漏洞公开在自己的博客上。
可能的解决方法
Krause也提出了一些解决的方法来帮助Apple来解决CGWindowListCreateImage函数滥用的问题。
最简单的就是给使用截屏的函数的应用加入授权应用。
另一个方法是当应用截屏时,macOS对用户进行通知。
Krause去年还发现了iOS应用通过获取相册权限,来从中获取图片中的GPS信息来确定位置信息