最近国外研究人员公布的一段exp代码能够在打完补丁的Fedora等Linux系统上进行drive-by攻击,从而安装键盘记录器、后门和其他恶意软件。
这次的exp针对的是GStreamer框架中的一个内存损坏漏洞,GStreamer是个开源多媒体框架,存在于主流的Linux发行版中。我们都知道,地址空间布局随机化(ASLR)和数据执行保护(DEP)是linux系统中两个安全措施,目的是为了让软件exp更难执行。但新公布的exp通过一种罕见的办法绕过了这两种安全措施——国外媒体还专门强调了这个漏洞的“优雅”特色。研究人员写了个flac多媒体文件,就能达成漏洞利用!
ASLR是一种针对缓冲区溢出的安全保护技术,通过对堆、栈、共享库映射等线性区布局的随机化,通过增加攻击者预测目的地址的难度,防止攻击者直接定位攻击代码位置,达到阻止溢出攻击的目的的一种技术。而DEP则能够在内存上执行额外检查以帮助防止在系统上运行恶意代码。
无脚本exp与传统的ASLR和DEP绕过方法不同的是,这个exp没有通过代码来篡改内存布局和其他的环境变量。而是通过更难的字节码排序彻底关闭保护。由于不需要JavaScript也不需要其他与内存通信的代码,所以其他攻击不行的时候,这种攻击可能依然可行。
“这个exp很可笑”,研究员Chris Evans在周一的博文中写道,“但是它证明了无脚本的exp也是可行的,即便开启了64位的ASLR还是有办法能够进行读写内存等操作,并且能够稳扎稳打地一步一步进行攻击然后获得控制权。”
Azimuth Security高级研究院Dan Rosenberg特别擅长Linux漏洞的防御。在一封邮件中他同意了Chris Evans的观点:
这个exp相当厉害,因为它成功绕过了ASLR和NX等先进的保护措施,而且不需要与目标软件进行程序交互。
详细来说,当要攻击浏览器漏洞的时候,exp会用JavaScript影响内存布局。类似地,当要攻击本地内核漏洞时,exp会发起系统调用来影响目标环境。但在现在的场景差别很大,由于exp是一个单独的媒体文件,黑客没有机会在攻击的过程中作调整。
Evans随后发布了一个FLAC媒体文件,它能够运行在默认版本的Fedora 24上(其中预装了最新版的GStreamer)。Evans说,写Ubuntu的exp更容易些,因为他没有ASLR, RELRO等防御措施,即使是在最新的16.04 LTS版本中也没有。不过他的exp仍然需要改写才能在除Fedora 24的其他linux版本中运行。虽然攻击针对的是GStreamer对FLIC文件格式的解码器,Evans说攻击目标是Rhythmbox媒体播放器的二进制代码。Totem播放器也可以用类似的方法攻击。
Exp下载:security.appspot.com/security/flic/fedora_flx_exploit.flac (仅针对Fedora 24)
漏洞利用较麻烦这个exp的学术研究价值要比实用价值来得高,因为如果要在其他linux版本上运行就需要重写。并且由于在linux上播放媒体软件的用户本身就少,漏洞可利用的范围就更少了。周二的时候,Ubuntu发布了补丁,之后几天应该会有更多的厂商跟进。这个漏洞究竟优雅与否,有兴趣的可移步点击下面的原文链接。