最近安全研究人员Evans在Ubuntu系统中发现了一个很有意思的漏洞,这个漏洞还跟任天堂当年的8位游戏机(NES,或者叫FC)有关。Evans表示,在Ubuntu 12.04.5版本的多媒体框架中存在一个漏洞,该漏洞可以被红白机播放的声音文件(NSF文件)利用——红白机和Ubuntu系统有什么关系?
这个漏洞的根源实际上在于音频解码器libgstnsf.so,这个解码器原本是用于支持gstreamer 0.10播放NSF格式文件的——而红白机的音乐文件就是.NSF格式——Ubuntu系统在播放这种文件的时候,会实时创建红白机的6502处理器和音频硬件的虚拟环境。这样讲来也很容易理解,漏洞的影响并不算深远,研究人员也只是觉得很有趣才做了深入观察。
Evans表示:“该漏洞一定程度上依赖于默认安装过程。”因为在Ubuntu安装过程中,系统会询问“你是否期望系统能正确播放mp3文件? 用户当然会选择“是”。这样一来,系统就会安装包括streamer-1.0-pliugins-bad(包含libgstnsf.so)在内的各种包。
如果你对NSF文件感兴趣,可以点击这里下载cv2.nsf(这是游戏《恶魔城:暗影之王》的BGM)。这类文件都很小,要包含样本其实也有难度,但如果要搞点小动作还是可以的。有兴趣的同学可以点击这里下载漏洞利用文件,如上图所示。
要说攻击代码,实际上和红白机的6502处理器的确是有关的。6502 CPU是一个传奇的存在,出现在各种各样的传奇系统中,如任天堂红白机,Commodore 64,BBC微型计算系统等。这个漏洞的代码正是攻击者用据说非常晦涩的6502语言编写的,它依靠虚拟的6502处理器来解析此代码,并提供恶意指令进行攻击。Evans说,这个漏洞利用NES处理存储寄存器之间的切换,在Linux用户桌面上运行代码。详情可移步Evans的博客。
要利用该漏洞,可以采取以下方法:
1、给目标发电子邮件,邮件中带上可利用漏洞的附件。只要受害者下载文件,他们就会被攻击。不过需要注意,要把文件扩展名从.nsf改为.mp3,因为绝大部分Linux桌面系统并不识别NSF文件——但要肯定会用播放器去播放MP3文件。大部分基于gstreamer的媒体播放器会忽略文件的后缀,自动检测文件格式,再采用所需的解码器。
2、采用路过式下载方案。比如用Chrome浏览器下载UX,受害者访问欺骗网站时,就可以将文件转储到受害者的Downloads文件夹。在文件管理器中查看Downloads文件夹的时候,文件管理器会针对那些已知后缀的文件,自动显示其缩略图或预览。而漏洞利用就可以依赖于缩略图进行攻击。
3、更为完整的路过式下载利用方案。Evans表示会单独写一篇文章来详述整个过程(真是好执着)。
4、利用USB设备进行攻击。这很容易理解了,将nsf格式文件存在U盘,用户在打开USB设备过程中,就会触发上述缩略图攻击过程。
虽说这是个0day漏洞,但它造成的影响并不是很严重。 而且该漏洞只存在于Ubuntu 12.04.5系统版本中,这是一个比较老的版本了。要避开这个漏洞也非常容易,只要删除libgstnsf.so即可。而且还不会引起功能的缺失,因为在NES中还有另外的解码器可以播放NSF音乐。