CVE-2019-6116: ghostscript沙箱绕过命令执行漏洞预警

栏目: 编程工具 · 发布时间: 6年前

内容简介:2019年1月23日晚,Artifex官方在ghostscriptf的master分支上提交合并了多达6处的修复。旨在修复 CVE-2019-6116 漏洞,该漏洞由 Google 安全研究员 Tavis 于2018年12月3日提交。该漏洞可以直接绕过 ghostscript 的安全沙箱,导致攻击者可以执行任意命令/读取任意文件。ghostscript应用广泛,ImageMagick、python-matplotlib、libmagick 等图像处理应用均有引用。

CVE-2019-6116: ghostscript沙箱绕过命令执行漏洞预警

0x00 漏洞背景

2019年1月23日晚,Artifex官方在ghostscriptf的master分支上提交合并了多达6处的修复。旨在修复 CVE-2019-6116 漏洞,该漏洞由 Google 安全研究员 Tavis 于2018年12月3日提交。该漏洞可以直接绕过 ghostscript 的安全沙箱,导致攻击者可以执行任意命令/读取任意文件。

ghostscript应用广泛,ImageMagick、python-matplotlib、libmagick 等图像处理应用均有引用。

0x01 漏洞详情

在之前的漏洞中 ghostscript 吸取经验,针对一些特殊并且具有强大功能的函数做了一层封装。

这层封装就是executeonly这个标记, 以及 odef这个伪运算符。

附带executeonly这个标记的效果是 PostScript 将不会允许引用该受保护的函数。

附带odef这个运算符的效果是 PostScript 错误处理程序不会从这个运算往上继续检索堆栈。

如果当前运算符(或伪运算符)遇到异常或者出错停止,就不会暴露任何栈上内容。

但是 taviso 依旧通过发现在这些函数中,如果存在像判断这样的状态,那么上面的保护将失去应有的效果。

导致 ghostscript 可以像以往一样从栈中获得危险的函数以及引用他们而造成漏洞。

Tavis 给出了一处可以利用的代码片段

http://git.ghostscript.com/?p=ghostpdl.git;a=blob;f=Resource/Init/pdf_draw.ps;h=79733df451c1ecc0a71b08d10e5412ac3e243a9e;hb=gs926#l1123

1123       {
1124         currentglobal pdfdict gcheck .setglobal
1125         pdfdict /.Qqwarning_issued //true .forceput
1126         .setglobal
1127         pdfformaterror
1128       } ifelse

然后通过堆栈上的构造即可实现任意命令执行/文件读取。

$ gs -dSAFER -f ghostscript-926-forceput.ps
GPL Ghostscript 9.26 (2018-11-20)
Copyright (C) 2018 Artifex Software, Inc.  All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
Stage 0: PDFfile
Stage 1: q
Stage 3: oget
Stage 4: pdfemptycount
Stage 5: gput
Stage 6: resolvestream
Stage 7: pdfopdict
Stage 8: .pdfruncontext
Stage 9: pdfdict
Stage 10: /typecheck #1
Stage 10: /typecheck #2
Stage 11: Exploitation...
Should now have complete control over ghostscript, attempting to read
/etc/passwd...
(root:x:0:0:root:/root:/bin/bash)
Attempting to execute a shell command...
uid=1000(taviso) gid=1000(primarygroup)
groups=1000(primarygroup),4(adm),20(dialout),24(cdrom),25(floppy),44(video),46(plugdev),999(logindev)

360CERT 判断该漏洞危害严重,影响面广。建议用户及及时进行版本升级,同时对线上涉及图像、pdf等格式的处理的服务进行版本自查。

0x02 漏洞验证

CVE-2019-6116: ghostscript沙箱绕过命令执行漏洞预警

0x03 影响版本

ghostscript 尚无 release 版本发布

commit c47512e5e638d903d69925f7ebab4de2aa3f481f 之前的版本均受到影响

ghostscript作为图像处理格式转换的底层应用。

漏洞导致所有引用ghostscript的上游应用受到影响。 涉及但不限于:

  • imagemagick
  • libmagick
  • graphicsmagick
  • gimp
  • python-matplotlib
  • texlive-core
  • texmacs
  • latex2html
  • latex2rtf 等

0x04 修复建议

建议更新到(c47512e5e638d903d69925f7ebab4de2aa3f481f)之后的版本,或者直接重新拉取master分支进行更新

若无法更新可先尝试禁用使用gs解析ps文件

使用ImageMagick,建议修改policy文件(默认位置:/etc/ImageMagick/policy.xml),在 <policymap> 中加入以下<policy>(即禁用 PS、EPS、PDF、XPS coders、PCD):

<policymap>
<policy domain="coder" rights="none" pattern="PS" />
<policy domain="coder" rights="none" pattern="EPS" />
<policy domain="coder" rights="none" pattern="PDF" />
<policy domain="coder" rights="none" pattern="XPS" />
<policy domain="coder" rights="none" pattern="PCD" />
</policymap>

但 taviso 提到 policy 是十分宽松的,可能会存在一些没有提及的格式存在绕过。

360CERT 建议用户及及时进行版本升级,同时对线上涉及图像、pdf等格式的处理的服务进行版本自查。

0x05 时间线

2018-12-03 @taviso提交漏洞

2019-01-23 Artifex官方在主分支上更新补丁

2019-01-23 @taviso对漏洞细节进行公开

2019-01-24 360CERT发布预警

0x06 参考链接

1729 – ghostscript: subroutines within pseudo-operators must themselves be pseudo-operators – project-zero – Monorail


以上所述就是小编给大家介绍的《CVE-2019-6116: ghostscript沙箱绕过命令执行漏洞预警》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

JavaScript & jQuery

JavaScript & jQuery

David Sawyer McFarland / O Reilly / 2011-10-28 / USD 39.99

You don't need programming experience to add interactive and visual effects to your web pages with JavaScript. This Missing Manual shows you how the jQuery library makes JavaScript programming fun, ea......一起来看看 《JavaScript & jQuery》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

SHA 加密
SHA 加密

SHA 加密工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器