黑客通过漏洞对手机和电脑攻击的操作屡见不鲜,但是最近的一项研究表明黑客可以通过GPU窃取用户的隐私密码。
该项研究成果由来自得克萨斯大学奥斯汀分校、卡内基梅隆大学、华盛顿大学、伊利诺伊大学厄巴纳-香槟分校的研究人员组成的团队提出,他们对AMD、苹果、Arm、英特尔和高通的集显,以及英伟达的一款独显进行了测试,初步的测试结果表明,所有测试的GPU都受到了这次新发现的攻击方式的影响。
这种概念验证攻击方式被称为GPU.zip,是一种新型的边信道攻击,它利用GPU的图形数据压缩功能对谷歌的Chrome浏览器进行像素窃取(pixel stealing),窃取用户的页面信息。
该攻击先是在恶意网站上嵌入一个iframe标签,标签上放置了一个指向其想要读取的网页的链接,这种iframe标签是很常见的HTML元素,作用是让网站能够嵌入广告、图像或其他网站上托管的其他内容。
通常来说浏览器的同源策略会拒绝执行不同源的页面的脚本内容,比如用浏览器分别打开一个百度一个谷歌的页面,如果在百度页执行一个脚本,浏览器就会检查这个脚本属于哪个页面,只有和百度同源的脚本才会被执行,如果不是同源的,那么在请求数据时,浏览器会在控制台中报异常,提示拒绝访问。
但是几乎所有显卡都会用到的图形数据压缩功能却不会受到这个同源策略的限制,打开网页时GPU会自动尝试压缩视觉数据,目的是节省内存带宽并提高性能,因为这种功能的实现不需要应用的参与,自然也就不会受到应用安全策略的影响。
研究团队通过逆向工程解析各家供应商的图形数据压缩算法,就可以将被压缩过的图形数据反向“解压缩”出来,从而获取用户的页面信息。
具体攻击思路上,GPU.zip是通过测量应用滤镜的渲染时间或缓存状态变化来重构页面信息,比如说如果目标像素是白色,那么滤镜结果不可压缩,渲染时间就长,而如果目标像素是黑色,那么就可以压缩,渲染时间就短。通过时间差异的不同,就能够判断目标像素的颜色,逐个获取所有像素,然后重构出所攻击页面的完整信息。
GPU.zip攻击思路 来源:GPU.zip
根据测试结果,在AMD的Ryzen 7 4800U上,GPU.zip花费了大约30分钟才能以97%的准确率重构目标像素,而在Intel i7 8700上运行时,该攻击需要花费215分钟才能重构像素,准确率98.3%。
(a)为被攻击的原始画面(b)为AMD Ryzen 7 4800U重构的画面(c)为英特尔i7 8700重构的画面 来源:GPU.zip
不过其实大部分用户也无需担心,因为这些年来在恶意网站的iframe中嵌入HTML可能导致安全威胁基本人尽皆知,大多数包含敏感数据的网站都会通过X-Frame-Options或Content-Security-Policy标头来限制显示用户名、密码或其他敏感内容的页面的跨源嵌入。而且如果想通过这种方法攻击浏览器,浏览器还必须符合三个标准:
目前完美符合这些条件的有Chrome和Edge,像是Safari和Firefox都是免疫这种攻击的,相对比较安全。
3月的时候该研究团队已经向主要的GPU供应商AMD、苹果、Arm、英特尔、英伟达、高通以及谷歌披露了他们的发现和概念验证代码,但是截至到9月,尚无GPU供应商承诺对此提供补丁,谷歌也仍在决定是否要修复这个问题以及如何修复。
后续该研究团队将在2024年的第45届IEEE安全和隐私研讨会上发布该研究的论文,不过现在论文的预印本已经可以查看,相关的代码也已经开源了,感兴趣的读者朋友可以自行查看。
相关网站:https://www.hertzbleed.com/gpu.zip/