去年披露预测执行漏洞的计算机安全专家再揭新型边信道攻击方法,可绕过现代计算机系统的安全防护。
幽灵和熔断这样的边信道攻击利用芯片设计缺陷收集特权信息,新披露的方法则与硬件无关,只涉及Windows和Linux操作系统页缓存,一定条件下可远程利用。
研究人员在论文中描述了通过操作系统页缓存监视特定进程内存访问的方法。
我们呈现了一组不需要任何计时器的本地攻击,利用操作系统调用(Linux上的mincore和Windows上的QueryWorkingSetEx)诱出页缓存信息。我们还证明了页缓存元数据可向远程攻击者泄露信息,在恶意本地发送者进程和外部攻击者之间形成隐秘信道。
获取到这些本应保密的信息后,攻击者便可用PHP口令生成脚本执行沙箱保护规避、接口修改和击键计时等本地攻击。该技术还可用于执行远程攻击,但需要根据具体目标和硬件做些调整,可能要加入硬件计时测量操作。研究人员认为该页缓存边信道攻击的性能可与硬件缓存攻击相媲美。
简言之,恶意用户和脆弱系统中的恶意软件均可利用该边信道攻击篡改软件或抽取其他应用的秘密数据,或在特定条件下远程操作。
Windows内核已针对该攻击做了更新,用户很快就会收到更新推送。
操作系统的页缓存在RAM中存储应用程序和操作系统经常用到的大量可执行程序、库和各种各样的数据,省去不停从硬盘存取的开销,能够大幅提升计算机的作业速度。
缓存页可被同时映射到多个进程的虚拟内存区。比如说,一个代码库可只载入物理内存一次,而被映射到多个应用的虚拟内存空间,省出物理RAM和加载时间。
这种内存共享和缓存的按需载入载出机制便为攻击打开了大门:可以窥探其他进程的访问模式,基于硬盘和缓存间复制或移动的信息抽取出数据。
本地还是远程?
本地攻击中,该边信道攻击技术假定黑客和受害者在同一个操作系统或在共享文件的不同沙箱中运行进程。确定内存中哪些页面被调入页缓存时,若是Linux操作系统,便用mincore系统调用;若是Windows系统,便用QueryWorkingSetEx。
远程攻击需测定软页面错误:应用程序访问的内存有效但当时并未给该内存分配物理页面,导致操作系统调入必要页面时发生的错误。攻击者在远程服务器上执行程序测量公共文件访问中的延迟。
研究人员表示,此项研究主要出于学术目的,已经做了负责任披露,目前至少Windows系统是打了补丁的。
本研究表明,在操作系统层面,我们遇到了硬件层面上相同的问题。
Windows 10 内部预览版 Build 18305 已修复了该漏洞,但补丁何时公开发布尚未可知。
修复要求QueryWorkingSetEx系统调用设置PROCESS_QUERY_INFORMATION标志位而非PROCESS_QUERY_LIMITED_INFORMATION标志,让权限较小的进程无法直接访问页缓存信息。另外还需隐去 Share Count (共享计数)信息,让攻击者无法通过页面工作区的进程数间接观测其他进程的变动。
Linux安全团队据称也注意到了该问题,但研究人员的论文中并未提到相关缓解工作。曾演示过PHP口令生成攻击的phpMyFAQ开发人员也被告知了该新边信道攻击问题,正在开发修复补丁。