CVE-2014-9447
NoneCVSS
—
EPSS
5.0%
Published
Jan 2, 2015
CISA due date
—
Cloudanix analysis
A long-standing flaw in certain media processing tools could let a specially made file overwrite important system files, but updates released years ago prevent this from happening.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Low
- Impact
- Data Tampering
- Component
- Library
- Class
- Path Traversal
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Directory traversal in libelf read_long_names allows a crafted archive containing a slash in a long name entry to cause writes to arbitrary paths under the root directory when processed by affected elfutils versions.
Why it matters to the business
Attackers can overwrite critical system files on servers that ingest untrusted archives through ffmpeg or dependent media tools, leading to service disruption, data corruption, or persistent unauthorized changes; the issue affects many Debian and Ubuntu deployments but has been resolved for years with no active exploitation campaigns observed.
How an attack unfolds
An attacker crafts an archive with a malicious long filename containing a leading slash, then supplies it to any application linked against the vulnerable libelf (such as certain ffmpeg builds) so that the read_long_names function writes attacker-controlled content outside the intended extraction directory.
How to fix it
Upgrade ffmpeg on Debian 11/12/13 to version 2.8.5-1 or later and on Ubuntu 16.04 LTS to 7:2.8.6-1ubuntu1 or later; rebuild any custom packages that statically link the vulnerable elfutils code and verify the libelf version after deployment.
How to confirm the fix worked
Confirm the installed ffmpeg package version matches or exceeds the listed fixed releases, run strings or objdump against libelf to verify the patched read_long_names function, and test with a benign archive containing a slash-prefixed long name to ensure writes remain confined.
Typical attack path
- Identify a target service or workflow that processes archive files using the affected ffmpeg packages
- Craft a malicious ar archive containing a long name entry with a leading slash
- Deliver the archive to the target via upload, download, or automated ingestion
- Trigger processing so libelf performs the directory traversal write
- Achieve arbitrary file write under the root filesystem
How to detect it
Review logs from archive ingestion services for unexpected file writes outside designated directories, inspect process execution involving ffmpeg or libelf on untrusted archives, and search filesystem timestamps for files created with names originating from archive entries containing slashes.
What your security team should do
- Immediately verify ffmpeg package versions across all Debian and Ubuntu systems and schedule upgrades to the specified fixed releases
- Scan build pipelines and container images for static linking of old elfutils libraries
- Add archive processing jobs to file-type allow-listing and sandboxing controls
- Monitor EPSS and KEV updates for any resurgence in exploitation despite the age of the flaw
The record
Directory traversal vulnerability in the read_long_names function in libelf/elf_begin.c in elfutils 0.152 and 0.161 allows remote attackers to write to arbitrary files to the root directory via a / (slash) in a crafted archive, as demonstrated using the ar program.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Debian:11 | elfutils | 0 | 0.159-4.1 |
| Debian:12 | elfutils | 0 | 0.159-4.1 |
| Debian:13 | elfutils | 0 | 0.159-4.1 |
| Mageia:4 | elfutils | 0 | 0.157-3.2.mga4 |
| Red Hat:enterprise_linux:6::client | elfutils | 0 | 0:0.161-3.el6 |
| Red Hat:enterprise_linux:6::client | elfutils-debuginfo | 0 | 0:0.161-3.el6 |
| Red Hat:enterprise_linux:6::client | elfutils-devel | 0 | 0:0.161-3.el6 |
| Red Hat:enterprise_linux:6::client | elfutils-devel-static | 0 | 0:0.161-3.el6 |
| Red Hat:enterprise_linux:6::client | elfutils-libelf | 0 | 0:0.161-3.el6 |
| Red Hat:enterprise_linux:6::client | elfutils-libelf-devel | 0 | 0:0.161-3.el6 |
| Red Hat:enterprise_linux:6::client | elfutils-libelf-devel-static | 0 | 0:0.161-3.el6 |
| Red Hat:enterprise_linux:6::client | elfutils-libs | 0 | 0:0.161-3.el6 |
| Red Hat:enterprise_linux:6::computenode | elfutils | 0 | 0:0.161-3.el6 |
| Red Hat:enterprise_linux:6::computenode | elfutils-debuginfo | 0 | 0:0.161-3.el6 |
| Red Hat:enterprise_linux:6::computenode | elfutils-devel | 0 | 0:0.161-3.el6 |
| Red Hat:enterprise_linux:6::computenode | elfutils-devel-static | 0 | 0:0.161-3.el6 |
| Red Hat:enterprise_linux:6::computenode | elfutils-libelf | 0 | 0:0.161-3.el6 |
| Red Hat:enterprise_linux:6::computenode | elfutils-libelf-devel | 0 | 0:0.161-3.el6 |
| Red Hat:enterprise_linux:6::computenode | elfutils-libelf-devel-static | 0 | 0:0.161-3.el6 |
| Red Hat:enterprise_linux:6::computenode | elfutils-libs | 0 | 0:0.161-3.el6 |
| Red Hat:enterprise_linux:6::server | elfutils | 0 | 0:0.161-3.el6 |
| Red Hat:enterprise_linux:6::server | elfutils-debuginfo | 0 | 0:0.161-3.el6 |
| Red Hat:enterprise_linux:6::server | elfutils-devel | 0 | 0:0.161-3.el6 |
| Red Hat:enterprise_linux:6::server | elfutils-devel-static | 0 | 0:0.161-3.el6 |
| Red Hat:enterprise_linux:6::server | elfutils-libelf | 0 | 0:0.161-3.el6 |
| Red Hat:enterprise_linux:6::server | elfutils-libelf-devel | 0 | 0:0.161-3.el6 |
| Red Hat:enterprise_linux:6::server | elfutils-libelf-devel-static | 0 | 0:0.161-3.el6 |
| Red Hat:enterprise_linux:6::server | elfutils-libs | 0 | 0:0.161-3.el6 |
| Red Hat:enterprise_linux:6::workstation | elfutils | 0 | 0:0.161-3.el6 |
| Red Hat:enterprise_linux:6::workstation | elfutils-debuginfo | 0 | 0:0.161-3.el6 |
| Red Hat:enterprise_linux:6::workstation | elfutils-devel | 0 | 0:0.161-3.el6 |
| Red Hat:enterprise_linux:6::workstation | elfutils-devel-static | 0 | 0:0.161-3.el6 |
| Red Hat:enterprise_linux:6::workstation | elfutils-libelf | 0 | 0:0.161-3.el6 |
| Red Hat:enterprise_linux:6::workstation | elfutils-libelf-devel | 0 | 0:0.161-3.el6 |
| Red Hat:enterprise_linux:6::workstation | elfutils-libelf-devel-static | 0 | 0:0.161-3.el6 |
| Red Hat:enterprise_linux:6::workstation | elfutils-libs | 0 | 0:0.161-3.el6 |
| Red Hat:enterprise_linux:7::client | elfutils | 0 | 0:0.163-3.el7 |
| Red Hat:enterprise_linux:7::client | elfutils-debuginfo | 0 | 0:0.163-3.el7 |
| Red Hat:enterprise_linux:7::client | elfutils-devel | 0 | 0:0.163-3.el7 |
| Red Hat:enterprise_linux:7::client | elfutils-devel-static | 0 | 0:0.163-3.el7 |
| Red Hat:enterprise_linux:7::client | elfutils-libelf | 0 | 0:0.163-3.el7 |
| Red Hat:enterprise_linux:7::client | elfutils-libelf-devel | 0 | 0:0.163-3.el7 |
| Red Hat:enterprise_linux:7::client | elfutils-libelf-devel-static | 0 | 0:0.163-3.el7 |
| Red Hat:enterprise_linux:7::client | elfutils-libs | 0 | 0:0.163-3.el7 |
| Red Hat:enterprise_linux:7::computenode | elfutils | 0 | 0:0.163-3.el7 |
| Red Hat:enterprise_linux:7::computenode | elfutils-debuginfo | 0 | 0:0.163-3.el7 |
| Red Hat:enterprise_linux:7::computenode | elfutils-devel | 0 | 0:0.163-3.el7 |
| Red Hat:enterprise_linux:7::computenode | elfutils-devel-static | 0 | 0:0.163-3.el7 |
| Red Hat:enterprise_linux:7::computenode | elfutils-libelf | 0 | 0:0.163-3.el7 |
| Red Hat:enterprise_linux:7::computenode | elfutils-libelf-devel | 0 | 0:0.163-3.el7 |
| Red Hat:enterprise_linux:7::computenode | elfutils-libelf-devel-static | 0 | 0:0.163-3.el7 |
| Red Hat:enterprise_linux:7::computenode | elfutils-libs | 0 | 0:0.163-3.el7 |
| Red Hat:enterprise_linux:7::server | elfutils | 0 | 0:0.163-3.el7 |
| Red Hat:enterprise_linux:7::server | elfutils-debuginfo | 0 | 0:0.163-3.el7 |
| Red Hat:enterprise_linux:7::server | elfutils-devel | 0 | 0:0.163-3.el7 |
| Red Hat:enterprise_linux:7::server | elfutils-devel-static | 0 | 0:0.163-3.el7 |
| Red Hat:enterprise_linux:7::server | elfutils-libelf | 0 | 0:0.163-3.el7 |
| Red Hat:enterprise_linux:7::server | elfutils-libelf-devel | 0 | 0:0.163-3.el7 |
| Red Hat:enterprise_linux:7::server | elfutils-libelf-devel-static | 0 | 0:0.163-3.el7 |
| Red Hat:enterprise_linux:7::server | elfutils-libs | 0 | 0:0.163-3.el7 |
| Red Hat:enterprise_linux:7::workstation | elfutils | 0 | 0:0.163-3.el7 |
| Red Hat:enterprise_linux:7::workstation | elfutils-debuginfo | 0 | 0:0.163-3.el7 |
| Red Hat:enterprise_linux:7::workstation | elfutils-devel | 0 | 0:0.163-3.el7 |
| Red Hat:enterprise_linux:7::workstation | elfutils-devel-static | 0 | 0:0.163-3.el7 |
| Red Hat:enterprise_linux:7::workstation | elfutils-libelf | 0 | 0:0.163-3.el7 |
| Red Hat:enterprise_linux:7::workstation | elfutils-libelf-devel | 0 | 0:0.163-3.el7 |
| Red Hat:enterprise_linux:7::workstation | elfutils-libelf-devel-static | 0 | 0:0.163-3.el7 |
| Red Hat:enterprise_linux:7::workstation | elfutils-libs | 0 | 0:0.163-3.el7 |
| SUSE:Linux Enterprise Desktop 12 | elfutils | 0 | 0.158-6.1 |
| SUSE:Linux Enterprise Server 12 | elfutils | 0 | 0.158-6.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 | elfutils | 0 | 0.158-6.1 |
| SUSE:Linux Enterprise Software Development Kit 12 | elfutils | 0 | 0.158-6.1 |
| Ubuntu:14.04:LTS | elfutils | 0 | 0.158-0ubuntu5.2 |
| openSUSE:Tumbleweed | elfutils | 0 | 0.167-1.5 |
Related vulnerabilities
- CVE-2016-10254 The allocate_elf function in common.h in elfutils before 0.168 allows remote attackers to… Also affects elfutils
- CVE-2014-0172 Integer overflow in the check_section function in dwarf_begin_elf.c in the libdw library… Also affects elfutils
- CVE-2026-81163 Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')… CWE-22
- CVE-2026-112049 Vita3K before build 4187 contains a path traversal (zip slip) vulnerability in… CWE-22
- CVE-2026-112005 WhoDB 0.104.0 before 0.135.0 contains a path traversal vulnerability that allows remote… CWE-22
- CVE-2026-61702 OpenPrinting CUPS is an open source printing system for Linux and other Unix-like… CWE-22
- CVE-2026-104871 The Angular SSR is a server-rise rendering tool for Angular applications. CWE-22
- CVE-2026-102991 Mako is a template library written in Python. CWE-22