CVE-2017-1000083
High · 7.8CVSS
7.8
EPSS
51.1%
Published
Sep 5, 2017
CISA due date
—
Cloudanix analysis
Opening certain comic-book files can let attackers run any commands they want on the computer.
- Exploitation
- Requires User Interaction
- Attacker needs
- User Interaction
- Complexity
- Low
- Impact
- Remote Code Execution
- Component
- Application
- Class
- Command Injection
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
The comic book backend in Evince processes .cbt TAR archives by passing filenames directly to command-line tools without sanitization, allowing filenames beginning with '--' to inject arbitrary options and commands such as --checkpoint-action=exec=...
Why it matters to the business
Users who open malicious comic files can have arbitrary commands executed with their privileges, resulting in full system compromise, data theft, or ransomware deployment; the vulnerability has been weaponized for years and remains relevant wherever older Evince packages are still deployed.
How an attack unfolds
An attacker crafts a TAR archive whose member filename starts with a double-dash command-line option (for example --checkpoint-action=exec=bash), packages it as a .cbt file, and delivers it via email or web download; when the victim opens the file, Evince's comics backend invokes the tar utility with the malicious filename, causing the injected command to run.
How to fix it
Upgrade gnome/evince to the commit 717df38fd8509bf883b70d680c9b1b3cf36732ee or any later release that contains the fix; remove or restrict use of the comic-book backend if patching is not feasible.
How to confirm the fix worked
Confirm Evince version is at or above the fixed commit; attempt to open a test .cbt file containing a filename that begins with '--help' and verify that no extraneous output or command execution occurs; review package changelogs for the backend/comics/comics-document.c patch.
Typical attack path
- Create TAR archive containing a member whose name begins with '--' followed by a command option
- Rename archive with .cbt extension
- Deliver file to target via phishing, download site, or shared storage
- Victim opens the file in Evince
- Backend invokes tar with the crafted filename, executing attacker-controlled commands
How to detect it
Search endpoint process-creation logs for evince spawning child processes that contain command-line flags beginning with '--checkpoint' or '--exec'; inspect downloaded or opened files whose names end in .cbt and contain TAR member names starting with '--'; review shell history and audit logs for unexpected commands executed around the time a .cbt file was accessed.
- evince.*--checkpoint-action
- .cbt.*--exec=
- tar.*--checkpoint-action=exec
What your security team should do
- Immediately upgrade all Evince installations to the fixed commit or newer packaged release
- Block or sandbox opening of .cbt files from untrusted sources until updates are applied
- Hunt for historical indicators of .cbt files with leading '--' in filenames on endpoints that still run vulnerable Evince versions
- Add Evince to the organization's priority patching list given the weaponized exploit maturity
The record
backend/comics/comics-document.c (aka the comic book backend) in GNOME Evince before 3.24.1 allows remote attackers to execute arbitrary commands via a .cbt file that is a TAR archive containing a filename beginning with a "--" command-line option substring, as demonstrated by a --checkpoint-action=exec=bash at the beginning of the filename.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Debian:11 | atril | 0 | 1.16.1-2.1 |
| Debian:11 | evince | 0 | 3.22.1-4 |
| Debian:12 | atril | 0 | 1.16.1-2.1 |
| Debian:12 | evince | 0 | 3.22.1-4 |
| Debian:13 | atril | 0 | 1.16.1-2.1 |
| Debian:13 | evince | 0 | 3.22.1-4 |
| Debian:7 | evince | 0 | 3.4.0-3.1+deb7u1 |
| Debian:8 | atril | 0 | 1.8.1+dfsg1-4+deb8u1 |
| Debian:8 | evince | 0 | 3.14.1-2+deb8u2 |
| Debian:9 | atril | 0 | 1.16.1-2+deb9u1 |
| Debian:9 | evince | 0 | 3.22.1-3+deb9u1 |
| Mageia:5 | atril | 0 | 1.8.1-3.1.mga5 |
| Mageia:5 | evince | 0 | 3.14.2-1.1.mga5 |
| Mageia:6 | atril | 0 | 1.18.0-1.1.mga6 |
| Mageia:6 | evince | 0 | 3.24.1-1.mga6 |
| Red Hat:enterprise_linux:7::client | evince | 0 | 0:3.22.1-5.2.el7_4 |
| Red Hat:enterprise_linux:7::client | evince-browser-plugin | 0 | 0:3.22.1-5.2.el7_4 |
| Red Hat:enterprise_linux:7::client | evince-debuginfo | 0 | 0:3.22.1-5.2.el7_4 |
| Red Hat:enterprise_linux:7::client | evince-devel | 0 | 0:3.22.1-5.2.el7_4 |
| Red Hat:enterprise_linux:7::client | evince-dvi | 0 | 0:3.22.1-5.2.el7_4 |
| Red Hat:enterprise_linux:7::client | evince-libs | 0 | 0:3.22.1-5.2.el7_4 |
| Red Hat:enterprise_linux:7::client | evince-nautilus | 0 | 0:3.22.1-5.2.el7_4 |
| Red Hat:enterprise_linux:7::server | evince | 0 | 0:3.22.1-5.2.el7_4 |
| Red Hat:enterprise_linux:7::server | evince-browser-plugin | 0 | 0:3.22.1-5.2.el7_4 |
| Red Hat:enterprise_linux:7::server | evince-debuginfo | 0 | 0:3.22.1-5.2.el7_4 |
| Red Hat:enterprise_linux:7::server | evince-devel | 0 | 0:3.22.1-5.2.el7_4 |
| Red Hat:enterprise_linux:7::server | evince-dvi | 0 | 0:3.22.1-5.2.el7_4 |
| Red Hat:enterprise_linux:7::server | evince-libs | 0 | 0:3.22.1-5.2.el7_4 |
| Red Hat:enterprise_linux:7::server | evince-nautilus | 0 | 0:3.22.1-5.2.el7_4 |
| Red Hat:enterprise_linux:7::workstation | evince | 0 | 0:3.22.1-5.2.el7_4 |
| Red Hat:enterprise_linux:7::workstation | evince-browser-plugin | 0 | 0:3.22.1-5.2.el7_4 |
| Red Hat:enterprise_linux:7::workstation | evince-debuginfo | 0 | 0:3.22.1-5.2.el7_4 |
| Red Hat:enterprise_linux:7::workstation | evince-devel | 0 | 0:3.22.1-5.2.el7_4 |
| Red Hat:enterprise_linux:7::workstation | evince-dvi | 0 | 0:3.22.1-5.2.el7_4 |
| Red Hat:enterprise_linux:7::workstation | evince-libs | 0 | 0:3.22.1-5.2.el7_4 |
| Red Hat:enterprise_linux:7::workstation | evince-nautilus | 0 | 0:3.22.1-5.2.el7_4 |
| SUSE:Linux Enterprise Desktop 12 SP2 | evince | 0 | 3.20.1-6.14.1 |
| SUSE:Linux Enterprise Desktop 12 SP2 | evince | 0 | 3.20.1-6.16.1 |
| SUSE:Linux Enterprise Desktop 12 SP2 | evince | 0 | 3.20.2-6.19.15 |
| SUSE:Linux Enterprise Desktop 12 SP3 | evince | 0 | 3.20.1-6.16.1 |
| SUSE:Linux Enterprise Desktop 12 SP3 | evince | 0 | 3.20.2-6.19.15 |
| SUSE:Linux Enterprise Server 12 SP1-LTSS | evince | 0 | 3.10.3-2.3.1 |
| SUSE:Linux Enterprise Server 12 SP2 | evince | 0 | 3.20.1-6.14.1 |
| SUSE:Linux Enterprise Server 12 SP2 | evince | 0 | 3.20.1-6.16.1 |
| SUSE:Linux Enterprise Server 12 SP2 | evince | 0 | 3.20.2-6.19.15 |
| SUSE:Linux Enterprise Server 12 SP3 | evince | 0 | 3.20.1-6.16.1 |
| SUSE:Linux Enterprise Server 12 SP3 | evince | 0 | 3.20.2-6.19.15 |
| SUSE:Linux Enterprise Server 12-LTSS | evince | 0 | 3.10.3-2.3.1 |
| SUSE:Linux Enterprise Server for Raspberry Pi 12 SP2 | evince | 0 | 3.20.1-6.14.1 |
| SUSE:Linux Enterprise Server for Raspberry Pi 12 SP2 | evince | 0 | 3.20.1-6.16.1 |
| SUSE:Linux Enterprise Server for Raspberry Pi 12 SP2 | evince | 0 | 3.20.2-6.19.15 |
| SUSE:Linux Enterprise Server for SAP Applications 12 | evince | 0 | 3.10.3-2.3.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP1 | evince | 0 | 3.10.3-2.3.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP2 | evince | 0 | 3.20.1-6.14.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP2 | evince | 0 | 3.20.1-6.16.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP2 | evince | 0 | 3.20.2-6.19.15 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP3 | evince | 0 | 3.20.1-6.16.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP3 | evince | 0 | 3.20.2-6.19.15 |
| SUSE:Linux Enterprise Software Development Kit 12 SP2 | evince | 0 | 3.20.1-6.14.1 |
| SUSE:Linux Enterprise Software Development Kit 12 SP2 | evince | 0 | 3.20.1-6.16.1 |
| SUSE:Linux Enterprise Software Development Kit 12 SP2 | evince | 0 | 3.20.2-6.19.15 |
| SUSE:Linux Enterprise Software Development Kit 12 SP3 | evince | 0 | 3.20.1-6.16.1 |
| SUSE:Linux Enterprise Software Development Kit 12 SP3 | evince | 0 | 3.20.2-6.19.15 |
| SUSE:Linux Enterprise Workstation Extension 12 SP2 | evince | 0 | 3.20.1-6.14.1 |
| SUSE:Linux Enterprise Workstation Extension 12 SP2 | evince | 0 | 3.20.1-6.16.1 |
| SUSE:Linux Enterprise Workstation Extension 12 SP2 | evince | 0 | 3.20.2-6.19.15 |
| SUSE:Linux Enterprise Workstation Extension 12 SP3 | evince | 0 | 3.20.1-6.16.1 |
| SUSE:Linux Enterprise Workstation Extension 12 SP3 | evince | 0 | 3.20.2-6.19.15 |
| SUSE:OpenStack Cloud 6 | evince | 0 | 3.10.3-2.3.1 |
| Ubuntu:14.04:LTS | evince | 0 | 3.10.3-0ubuntu10.3 |
| Ubuntu:16.04:LTS | atril | 0 | 1.12.2-1ubuntu0.2 |
| Ubuntu:16.04:LTS | evince | 0 | 3.18.2-1ubuntu4.1 |
| openSUSE:Tumbleweed | evince | 0 | 40.4-1.3 |
Related vulnerabilities
- CVE-2017-1000159 Command injection in evince via filename when printing to PDF. Also affects atril
- CVE-2010-2642 Heap-based buffer overflow in the AFM font parser in the dvi-backend component in Evince… Also affects evince
- CVE-2006-5864 Stack-based buffer overflow in the ps_gettext function in ps.c for GNU gv 3.6.2, and… Also affects evince
- CVE-2015-9381 FreeType before 2.6.1 has a heap-based buffer over-read in T1_Get_Private_Dict in… Also affects evince
- CVE-2017-2862 An exploitable heap overflow vulnerability exists in the… Also affects evince