Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain local low-privileged shell
-
DeliveryPlant malicious plugin in attacker directory
-
ExploitSet LIBEXTRACTOR_PREFIX to that directory
-
ExecutionInvoke setuid/setgid program using libextractor
-
PersistPlugin loaded and executed with elevated privileges
-
ImpactArbitrary code runs as root/elevated user
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A08:2025 - Software or Data Integrity Failures
ASVS 5.0
V13 - Configuration Search path verification
|
| Exploitation Conditions | Requires local low-privileged access to the host AND the presence of a setuid or setgid program that uses GNU libextractor (before 1.16) to load plugins; the attacker sets the LIBEXTRACTOR_PREFIX environment variable to a directory containing a malicious plugin, which the vulnerable library loads from that untrusted search path without privilege checks. Limiting factors: exploitation is local-only (no network vector), depends on a suitable setuid/setgid consumer actually being installed and invocable, and is prevented on hosts running the patched 1.16 release; no user interaction by a victim is needed. |
| Impact | This is a genuine but conditionally-gated local privilege-escalation issue, not a remote-facing emergency. The CVSS 4.0 vector (AV:L/AC:L/AT:P/PR:L/UI:N, base 7.3) is internally consistent with the description: exploitation is LOCAL (AV:L), requires an already-present low-privileged foothold (PR:L), and carries an Attack Requirement (AT:P) that reflects a real prerequisite - a setuid or setgid program that links libextractor must exist on the host, or the untrusted-search-path load never runs with elevated privileges. Where signals disagree, the divergence favors caution: a public POC exists (VulnCheck / github.com/Haitam-lazaar/libextractor-privesc), which raises practical exploitability, but there is no EPSS score and no CISA KEV listing, so this is publicly-demonstrable rather than confirmed actively exploited or mass-scanned. The 'RCE' tag overstates reach - with AV:L this is local arbitrary code execution / privesc, NOT remotely triggerable code execution, and defenders should not triage it as internet-exposed RCE. Net: real priority only for multi-user hosts that ship a setuid/setgid consumer of libextractor; otherwise moderate. The high VC/VI/VA:H impact is credible (code runs as root/elevated) but is only reachable after the setuid-consumer precondition is met. |
| Exploit ScenarioDerived | A local unprivileged user on a shared host points LIBEXTRACTOR_PREFIX at a directory holding a malicious extractor plugin, then invokes a setuid/setgid binary that uses libextractor to read file metadata; the library loads the attacker's plugin from the untrusted path and executes its code with the binary's elevated privileges, yielding root/group escalation. A public proof-of-concept for this exact LIBEXTRACTOR_PREFIX privesc is available, lowering the skill barrier. The attack is local-only and hinges on the presence of such a setuid/setgid consumer. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 25, 2026
Local privilege escalation in GNU libextractor before 1.16 allows a low-privileged local attacker to execute arbitrary code with elevated privileges by pointing the LIBEXTRACTOR_PREFIX environment variable at a directory containing a malicious plugin, which the library loads from that untrusted search path without privilege checks. Exploitation requires a setuid or setgid consumer of libextractor to be installed and invocable on the host, so the issue is conditionally gated rather than a remote-facing emergency. Publicly available exploit code exists (a PoC repository is referenced), and the vendor has released a fix; no CISA KEV entry confirms active exploitation at time of analysis.
RemediationAI
Vendor-released patch: upgrade GNU libextractor to 1.16 (or later), available from https://ftp.gnu.org/gnu/libextractor/ and as the upstream fix commit https://git.gnunet.org/gnunet/libextractor/commit/6edfa653c048800e24a17f7e8cc2bb42659b8d01.html; distributing packages should track the 1.16 release once their maintainers have rebased. Where upgrading immediately is not possible, remove the setuid or setgid bit from any host application that links libextractor and invokes plugin loading (for example with chmod u-s,g-s), accepting that this breaks the elevated functionality those wrappers were installed to provide. Alternatively, harden the privileged entry point to scrub or reject LIBEXTRACTOR_PREFIX before invoking the library (unset it, or set a fixed trusted prefix) and/or ensure the plugin directory is root-owned and not writable by unprivileged users, which neutralizes the injection but requires code changes to each setuid/setgid consumer. Because exploitation also requires local access, restricting interactive logins and tightly controlling who can execute the affected privileged binaries reduces exposure, though it is a compensating measure and not a substitute for the 1.16 upgrade. Monitor for LIBEXTRACTOR_PREFIX references in process environments and for unexpected .so files in plugin search paths as detection signals. Per available data, the vendor patch is released; there is no indication of an unpatched condition once 1.16 is applied.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The root cause is CWE-426 (Untrusted Search Path). libextractor discovers and dynamically loads its extractor plugins at runtime, and versions before 1.16 honor the LIBEXTRACTOR_PREFIX environment variable as part of the plugin search path without sanitizing it or checking whether the calling process is running with elevated privileges. Unlike the dynamic loader's own handling of LD_LIBRARY_PATH/LD_PRELOAD, which is suppressed for setuid/setgid binaries, this application-level variable is still read, so a local user who can influence the environment of a privileged program (for example via a setuid/setgid wrapper or a user-controlled invocation path) can cause an attacker-supplied shared object to be dlopen'ed inside that privileged process. Because the loaded plugin code runs in the same address space and with the same credentials as the host binary, this yields code execution at the elevated privilege level. The CPE cpe:2.3:a:gnu:libextractor:*:*:*:*:*:*:*:* denotes the affected library across all releases prior to 1.16. The assessed vector CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H reflects the local attack vector, low complexity, low privileges required, no user interaction, and a scope change from the vulnerable component to the privileged consumer process.
Know when Libextractor gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:L/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Local unprivileged access needed (AV:L/PR:L); code runs with elevated privileges crossing the security boundary (S:C) with full C/I/A:H; setuid-consumer prerequisite noted separately.
AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
GNU libextractor before 1.16 loads plugins from an untrusted search path specified by the LIBEXTRACTOR_PREFIX environment variable without proper privilege checks. A local attacker can exploit this by setting LIBEXTRACTOR_PREFIX to a directory containing a malicious plugin that executes arbitrary code with elevated privileges when loaded by a setuid or setgid program.
Technical POC Analysis
CWE-426 (Untrusted Search Path), specifically the plugin search path used by GNU libextractor's dynamic plugin loader.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Latest POC
1 public PoC link from github
Sign in to open the public PoC links collected for this CVE.
Executive ViewAI
A high-severity local privilege escalation flaw in GNU libextractor, a file metadata extraction library, poses a risk to organizations that deploy setuid or setgid programs linked against it. Although exploitation is conditionally gated-requiring a low-privileged local attacker and a vulnerable consumer-publicly available exploit code exists, elevating the urgency for affected environments. Patching to the vendor-released version 1.16 is essential to prevent attackers from gaining elevated privileges and potentially compromising sensitive systems and data.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
More in Libextractor
View allGNU Libextractor through 1.7 has an out-of-bounds read vulnerability in EXTRACTOR_zip_extract_method() in zip_extractor.
GNU Libextractor before 1.7 has a stack-based buffer overflow in ec_read_file_func (unzip.c). Rated high severity (CVSS
Stack-based buffer overflow in GNU libextractor before 1.15 allows remote, unauthenticated attackers to crash any applic
In GNU Libextractor 1.4, there is a NULL Pointer Dereference in the EXTRACTOR_nsf_extract_method function of plugins/nsf
In GNU Libextractor 1.4, there is a NULL Pointer Dereference in flac_metadata in flac_extractor.c. Rated high severity (
In GNU Libextractor 1.4, there is a heap-based buffer overflow in the EXTRACTOR_png_extract_method function in plugins/p
In GNU Libextractor 1.4, there is an integer signedness error for the chunk size in the EXTRACTOR_nsfe_extract_method fu
GNU Libextractor 1.6 allows remote attackers to cause a denial of service (NULL pointer dereference and application cras
GNU Libextractor through 1.8 has a NULL Pointer Dereference vulnerability in the function process_metadata() in plugins/
GNU Libextractor through 1.8 has an out-of-bounds read vulnerability in the function history_extract() in plugins/ole2_e
GNU Libextractor before 1.7 contains an infinite loop vulnerability in EXTRACTOR_mpeg_extract_method (mpeg_extractor.c).
In GNU Libextractor 1.4, there is a Divide-By-Zero in EXTRACTOR_wav_extract_method in wav_extractor.c via a zero sample
EUVD-2026-87314
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB