一个未知的黑客组织在向公开恶意软件扫描引擎上传一个用于攻击的 PDF 文件时,无意间泄露了两个 0-day 漏洞。漏洞被研究人员捕获,并及时上报给厂商修复。
漏洞被发现时还未完全成型
ESET 研究员 Anton Cherepanov 在 3 月底分析海量恶意软件样本时,发现了这两个隐藏的漏洞,在发现之时,该神秘黑客组织仍在调整这两个漏洞。
Cherepanov 表示:“样本中不包含最终有效载荷,这意味着漏洞被发现时仍处于早期发展阶段。”
这两个 0-day 漏洞分别是影响 Adobe Acrobat/Reader PDF 阅读器的 CVE-2018-4990,和影响 Windows Win32k 组件的 CVE-2018-8120。二者结合可以构成一个所谓的“利用链”。其中,利用 CVE-2018-4990 可以在 Adobe Acrobat/Reader 中运行自定义代码,而利用 CVE-2018-8120 则可以绕过 Adobe 的沙箱保护并在底层操作系统上执行其他代码。
利用链工作机制
Cherepanov 在研究报告中表示:恶意 PDF 样本嵌入了控制整个利用过程的 JavaScript 代码。一旦 PDF 文件被打开,JavaScript 代码就会被执行。
具体的利用过程可分为以下几步:
1. 接受并打开 boobytrapped PDF 文件;
2. 用户打开PDF时执行恶意 JavaScript 代码;
3. JavaScript 代码伪可以控制一个 button 对象;
4. 包含特制 JPEG2000 图像的 button 对象在 Adobe Acrobat/Reader 中触发 double-free 漏洞;
5. JavaScript 代码使用堆喷射(heap-spray)技术来获取读写内存访问权限;
6. 随后 JavaScript 代码攻击 Adobe Reader 的 JavaScript 引擎;
7. 攻击者使用引擎的本地汇编指令来执行自己的本地 shellcode;
8. Shellcode 将嵌入到 PDF 中的 PE 文件初始化
微软 Win32k 0-day 的部分功能可以让攻击者提升运行 PE 文件的权限,该文件在内核模式下运行,从 Adobe Acrobat/Reader 沙箱中逃逸,获取到系统级访问权限。
这个漏洞利用链可以说是黑客入侵的绝佳案例,但带来的危害并不大。因为其创建者在上传文件到已知病毒扫描引擎时出现失误,被研究人员及时发现。发现漏洞后,研究人员立刻向 Adobe 和微软汇报了相关问题。
微软上周在 5 月的补丁中修复了 CVE-2018-8120 漏洞,Adobe 在 APSB18-09 上修复了 CVE-2018-4990 漏洞。提醒用户尽快安装更新。