Bug 1743754 (CVE-2019-14812)

Summary: CVE-2019-14812 ghostscript: Safer mode bypass by .forceput exposure in setuserparams (701444)
Product: [Other] Security Response Reporter: Cedric Buissart <cbuissar>
Component: vulnerabilityAssignee: Red Hat Product Security <security-response-team>
Status: CLOSED ERRATA QA Contact:
Severity: high Docs Contact:
Priority: high    
Version: unspecifiedCC: chazlett, dkaspar, mosvald, sbunciak, security-response-team, twaugh, zdohnal
Target Milestone: ---Keywords: Security
Target Release: ---   
Hardware: All   
OS: Linux   
Fixed In Version: ghostscript 9.50 Doc Type: If docs needed, set a value
Doc Text:
A flaw was found in the .setuserparams2 procedure where it did not properly secure its privileged calls, enabling scripts to bypass `-dSAFER` restrictions. A specially crafted PostScript file could disable security protection and then have access to the file system, or execute arbitrary commands.
Story Points: ---
Clone Of: Environment:
Last Closed: 2019-09-02 13:07:24 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Bug Depends On: 1744012, 1744013, 1744014, 1744015, 1747907    
Bug Blocks: 1743530    

Description Cedric Buissart 2019-08-20 15:39:46 UTC
In Ghostscript 9.27, some ephemeral routines in .setuserparams2 can expose .forceput operator when hooking errors. This issue is similar to upstream bug https://bugs.ghostscript.com/show_bug.cgi?id=700317. 

The actual root-cause is in .setuserparams2 however there is no direct path to invoke the operator.


 156       /userparams .systemvar 3 1 roll .forceput  % userparams is read-only
 157     } executeonly
 158     {
 159       pop pop
 160     } ifelse
 161   } forall

We can reach .setuserparams2 via setuserparams.


 169 /setuserparams {                % <dict> setuserparams -
 170     {.setuserparams2} stopped
 171     {/setuserparams load $error /errorname get signalerror} if
 172 } .bind odef

This can be used to disable -dSAFER and, for example, access files outside of the restricted area, or command execution.


Comment 4 Cedric Buissart 2019-08-21 06:43:03 UTC

Please refer to the "Mitigation" section of CVE-2018-16509 : https://access.redhat.com/security/cve/cve-2018-16509

Comment 10 Cedric Buissart 2019-08-27 15:21:44 UTC

Name: Artifex Software
Upstream: Hiroki MATSUKUMA (Cyber Defense Institute)

Comment 11 errata-xmlrpc 2019-09-02 07:54:01 UTC
This issue has been addressed in the following products:

  Red Hat Enterprise Linux 7

Via RHSA-2019:2586 https://access.redhat.com/errata/RHSA-2019:2586

Comment 12 errata-xmlrpc 2019-09-02 07:54:23 UTC
This issue has been addressed in the following products:

  Red Hat Enterprise Linux 8

Via RHSA-2019:2591 https://access.redhat.com/errata/RHSA-2019:2591

Comment 13 Cedric Buissart 2019-09-02 08:53:24 UTC
Created ghostscript tracking bugs for this issue:

Affects: fedora-all [bug 1747907]

Comment 14 Product Security DevOps Team 2019-09-02 13:07:24 UTC
This bug is now closed. Further updates for individual products will be reflected on the CVE page(s):