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

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

内容简介: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沙箱绕过命令执行漏洞预警》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

Java并发编程的艺术

Java并发编程的艺术

方腾飞、魏鹏、程晓明 / 机械工业出版社 / 2015-7-1 / 59.00元

并发编程领域的扛鼎之作,作者是阿里和1号店的资深Java技术专家,对并发编程有非常深入的研究,《Java并发编程的艺术》是他们多年一线开发经验的结晶。本书的部分内容在出版早期发表在Java并发编程网和InfoQ等技术社区,得到了非常高的评价。它选取了Java并发编程中最核心的技术进行讲解,从JDK源码、JVM、CPU等多角度全面剖析和讲解了Java并发编程的框架、工具、原理和方法,对Java并发编......一起来看看 《Java并发编程的艺术》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具