在2016年曾披露存在于动态随机访问内存(DRAM)之Rowhammer漏洞的阿姆斯特丹自由大学(Vrije Universiteit Amsterdam)漏洞安全实验室VUSec Lab于本周再度披露攻击Rowhammer的新途径,这次该实验室利用了GPU与浏览器标准之一的WebGL,于两分钟就取得了Android手机权限,并将其命名为GLitch攻击。
Rowhammer被视为DRAM的设计漏洞,现今的内存为了扩大容量并维持其尺寸,记忆元(Cell)的密度也越来越高。因此,当黑客锁定所要攻击的内存列时,只要重复访问隔壁列的记忆元,就会造成内存控制电路的电压波动,影响目标内存列,造成比特翻转现象,例如1变成0或0变成1,黑客只要依照需求持续变更内存内的比特,最终将可操控操作系统数据并取得最高权限。
GLitch是由两项攻击所组成,先利用旁路攻击(side channel)来判断内存的布局,再执行可翻转比特的Rowhammer攻击。
整个恶意攻击的场景是黑客先设计一个恶意网站,诱导Android手机以Firefox或Chrome浏览器访问该站,自远程执行JavaScript,就能开采Rowhammer漏洞,取得系统最高权限。
VUSec Lab说明,执行Rowhammer攻击需要访问闲置内存,因此必须先绕过处理器缓存才能到达DRAM,但此法并不适用于JavaScript,要以JavaScript展开攻击只能剔除缓存,与CPU的随机缓存相较,GPU缓存有更明确的行为,也更容易剔除缓存,因此在GLitch攻击中,他们以GPU取代CPU作为攻击跳板。
美国政府计算机紧急应变中心US-CERT则指出,GLitch攻击只在由CPU与GPU共享内存的平台上才有效用,诸如智能手机或平板电脑等。
至于WebGL则是一个图像API,为浏览器的标准组件之一,主要提供图像密集应用的GPU加速功能,但它的副作用是在GLitch攻击中,可协助黑客判断内存的缓存分布。
GLitch攻击不但是全球首个将GPU应用在Rowhammer攻击的案例,也是首个以JavaScript就可取得手机权限的攻击途径,且平均而言只要2分钟就能攻陷一支智能手机。
VUSec Lab是在执行Android 6.0.1的LG Nexus 5上并使用Firefox 57来示范攻击。不过,GLitch攻击同样也适用于HTC One M8与LG G2等采用Snapdragon 800与801的移动设备上。在VUSec Lab的通报下,Google与Mozilla皆已变更了Chrome及Firefox浏览器上的WebGL功能以杜绝GLitch攻击。