# CVE-2017-8291: Artifex Ghostscript Type Confusion

> Attackers can execute arbitrary commands by bypassing the -dSAFER sandbox via type confusion in crafted EPS files processed by Ghostscript.

- **Severity:** High 7.8 (`CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H`)
- **Exploited in the wild:** Yes, since 24 May 2022 (CISA KEV)
- **Login needed:** Not needed
- **Attackable:** Local or same network only
- **Victim action needed:** A user has to click or open something
- **Fix available:** Yes
- **Published:** 27 Apr 2017
- **Updated:** 21 Oct 2025
- **Also known as:** ALPINE-CVE-2017-8291, DEBIAN-CVE-2017-8291, DLA-932-1, GHSA-rh88-cwv2-gjxm, RHSA-2017:1230, SUSE-SU-2017:1153-1, SUSE-SU-2017:1322-1, UBUNTU-CVE-2017-8291

## What is CVE-2017-8291?

CVE-2017-8291 is a high-severity code injection vulnerability in Artifex Ghostscript, published on 27 Apr 2017. It can only be exploited from the same machine or local network, and only if a user opens a file or follows a link.

### Official description

Artifex Ghostscript through 2017-04-26 allows -dSAFER bypass and remote command execution via .rsdparams type confusion with a "/OutputFile (%pipe%" substring in a crafted .eps document that is an input to the gs program, as exploited in the wild in April 2017.

Weakness: CWE-843 (Access of Resource Using Incompatible Type)

## Which versions are affected by CVE-2017-8291?

It affects 8 products.


| Package | Ecosystem | Affected | Fixed in |
| --- | --- | --- | --- |
| `ghostscript` | Red Hat:enterprise_linux:6::client | All versions | 0:8.70-23.el6_9.2 |
| `ghostscript-debuginfo` | Red Hat:enterprise_linux:6::client | All versions | 0:8.70-23.el6_9.2 |
| `ghostscript-devel` | Red Hat:enterprise_linux:6::client | All versions | 0:8.70-23.el6_9.2 |
| `ghostscript-doc` | Red Hat:enterprise_linux:6::client | All versions | 0:8.70-23.el6_9.2 |
| `ghostscript-gtk` | Red Hat:enterprise_linux:6::client | All versions | 0:8.70-23.el6_9.2 |
| `ghostscript` | Red Hat:enterprise_linux:6::computenode | All versions | 0:8.70-23.el6_9.2 |
| `ghostscript-debuginfo` | Red Hat:enterprise_linux:6::computenode | All versions | 0:8.70-23.el6_9.2 |
| `ghostscript-devel` | Red Hat:enterprise_linux:6::computenode | All versions | 0:8.70-23.el6_9.2 |
| `ghostscript-doc` | Red Hat:enterprise_linux:6::computenode | All versions | 0:8.70-23.el6_9.2 |
| `ghostscript-gtk` | Red Hat:enterprise_linux:6::computenode | All versions | 0:8.70-23.el6_9.2 |
| `ghostscript` | Red Hat:enterprise_linux:6::server | All versions | 0:8.70-23.el6_9.2 |
| `ghostscript-debuginfo` | Red Hat:enterprise_linux:6::server | All versions | 0:8.70-23.el6_9.2 |
| `ghostscript-devel` | Red Hat:enterprise_linux:6::server | All versions | 0:8.70-23.el6_9.2 |
| `ghostscript-doc` | Red Hat:enterprise_linux:6::server | All versions | 0:8.70-23.el6_9.2 |
| `ghostscript-gtk` | Red Hat:enterprise_linux:6::server | All versions | 0:8.70-23.el6_9.2 |
| `ghostscript` | Red Hat:enterprise_linux:6::workstation | All versions | 0:8.70-23.el6_9.2 |
| `ghostscript-debuginfo` | Red Hat:enterprise_linux:6::workstation | All versions | 0:8.70-23.el6_9.2 |
| `ghostscript-devel` | Red Hat:enterprise_linux:6::workstation | All versions | 0:8.70-23.el6_9.2 |
| `ghostscript-doc` | Red Hat:enterprise_linux:6::workstation | All versions | 0:8.70-23.el6_9.2 |
| `ghostscript-gtk` | Red Hat:enterprise_linux:6::workstation | All versions | 0:8.70-23.el6_9.2 |
| `ghostscript` | Red Hat:enterprise_linux:7::client | All versions | 0:9.07-20.el7_3.5 |
| `ghostscript-cups` | Red Hat:enterprise_linux:7::client | All versions | 0:9.07-20.el7_3.5 |
| `ghostscript-debuginfo` | Red Hat:enterprise_linux:7::client | All versions | 0:9.07-20.el7_3.5 |
| `ghostscript-devel` | Red Hat:enterprise_linux:7::client | All versions | 0:9.07-20.el7_3.5 |
| `ghostscript-doc` | Red Hat:enterprise_linux:7::client | All versions | 0:9.07-20.el7_3.5 |
| `ghostscript-gtk` | Red Hat:enterprise_linux:7::client | All versions | 0:9.07-20.el7_3.5 |
| `ghostscript` | Red Hat:enterprise_linux:7::computenode | All versions | 0:9.07-20.el7_3.5 |
| `ghostscript-cups` | Red Hat:enterprise_linux:7::computenode | All versions | 0:9.07-20.el7_3.5 |
| `ghostscript-debuginfo` | Red Hat:enterprise_linux:7::computenode | All versions | 0:9.07-20.el7_3.5 |
| `ghostscript-devel` | Red Hat:enterprise_linux:7::computenode | All versions | 0:9.07-20.el7_3.5 |
| `ghostscript-doc` | Red Hat:enterprise_linux:7::computenode | All versions | 0:9.07-20.el7_3.5 |
| `ghostscript-gtk` | Red Hat:enterprise_linux:7::computenode | All versions | 0:9.07-20.el7_3.5 |
| `ghostscript` | Red Hat:enterprise_linux:7::server | All versions | 0:9.07-20.el7_3.5 |
| `ghostscript-cups` | Red Hat:enterprise_linux:7::server | All versions | 0:9.07-20.el7_3.5 |
| `ghostscript-debuginfo` | Red Hat:enterprise_linux:7::server | All versions | 0:9.07-20.el7_3.5 |
| `ghostscript-devel` | Red Hat:enterprise_linux:7::server | All versions | 0:9.07-20.el7_3.5 |
| `ghostscript-doc` | Red Hat:enterprise_linux:7::server | All versions | 0:9.07-20.el7_3.5 |
| `ghostscript-gtk` | Red Hat:enterprise_linux:7::server | All versions | 0:9.07-20.el7_3.5 |
| `ghostscript` | Red Hat:enterprise_linux:7::workstation | All versions | 0:9.07-20.el7_3.5 |
| `ghostscript-cups` | Red Hat:enterprise_linux:7::workstation | All versions | 0:9.07-20.el7_3.5 |

Products: Artifex Ghostscript, Debian Debian Linux, Redhat Enterprise Linux Desktop, Redhat Enterprise Linux Eus, Redhat Enterprise Linux Server, Redhat Enterprise Linux Server Aus, Redhat Enterprise Linux Server Tus, Redhat Enterprise Linux Workstation.

## How do I fix CVE-2017-8291?

Apply the vendor's patch. US federal agencies must fix it by 14 Jun 2022.

## Is CVE-2017-8291 being exploited?

Yes. Attackers have exploited CVE-2017-8291 in the wild since at least 24 May 2022.

Public exploit code:

- Ghostscript Type Confusion Arbitrary Command Execution (metasploit)
- Ghostscript 9.21 - Type Confusion Arbitrary Command Execution (Metasploit) (exploitdb)
- Ghostscript 9.21 - Type Confusion Arbitrary Command Execution (Metasploit) (exploitdb)
- CVE-2017-8291 CTF with docker and examples (github_poc): https://github.com/hkcfs/PIL-CVE-2017-8291
- https://github.com/DaniilOrchikov/PIL-CVE-2017-8291 (github_poc): https://github.com/DaniilOrchikov/PIL-CVE-2017-8291

## Other vulnerabilities in Artifex Ghostscript

- [CVE-2021-3781](https://insights.sbomify.com/CVE-2021-3781/): Command injection in ghostscript (critical 9.9)
- [CVE-2025-27831](https://insights.sbomify.com/CVE-2025-27831/): Memory corruption in n/a (critical 9.8)
- [CVE-2025-27832](https://insights.sbomify.com/CVE-2025-27832/): Memory corruption in n/a (critical 9.8)
- [CVE-2025-27836](https://insights.sbomify.com/CVE-2025-27836/): Memory corruption in n/a (critical 9.8)
- [CVE-2025-27837](https://insights.sbomify.com/CVE-2025-27837/): An issue was discovered in Artifex Ghostscript before 10.05.0. (critical 9.8)

## Fix prompt for AI coding agents

```text
Check this codebase for CVE-2017-8291 and fix it if it is affected.

What it is: CVE-2017-8291 is a high-severity code injection vulnerability in Artifex Ghostscript, published on 27 Apr 2017. It can only be exploited from the same machine or local network, and only if a user opens a file or follows a link.
Exploitation: Yes. Attackers have exploited CVE-2017-8291 in the wild since at least 24 May 2022.

Affected product: Artifex Ghostscript. No package-level version data is available, so check the vendor advisory linked from the reference page.

Task:
1. Search the dependency manifests and lockfiles (for example package.json, package-lock.json, requirements.txt, poetry.lock, uv.lock, pom.xml, build.gradle, go.mod, Cargo.lock, Gemfile.lock) and any Dockerfiles for the affected packages, including transitive dependencies.
2. If an affected version is in use, upgrade it to the fixed version for its release line with the project's package manager, so the lockfile is regenerated. Prefer the smallest upgrade that fixes it.
3. If there is no fix, or the upgrade would break the build, do not guess: explain the risk and the safest workaround instead.
4. Run the tests and summarise what changed and why.
5. If nothing in the project is affected, say so and change nothing.

Reference: https://insights.sbomify.com/CVE-2017-8291/ (Markdown: https://insights.sbomify.com/CVE-2017-8291/index.md)
```

## Sources

- CVE record: https://www.cve.org/CVERecord?id=CVE-2017-8291
- NVD: https://nvd.nist.gov/vuln/detail/CVE-2017-8291
- OSV: https://osv.dev/vulnerability/CVE-2017-8291

---
From sbomify Insights: https://insights.sbomify.com/CVE-2017-8291/
Summaries are generated and may contain mistakes; the official description above is the record.
