Skip to main content

getID3 EUVDEUVD-2026-83728

| CVE-2026-94108 HIGH
Improper Restriction of XML External Entity Reference (CWE-611)
2026-09-20 VulnCheck GHSA-gmhw-pxmg-j22w
8.3
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Craft media file with malicious XML entity
  2. Delivery
    Upload to getID3-backed PHP<8.0 app
  3. Exploit
    Parser resolves external entity
  4. Execution
    Read local file or SSRF/DoS
  5. Impact
    Exfiltrate disclosed data

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A02:2025 - Security Misconfiguration
ASVS 5.0
V13 - Configuration XML external entity prevention
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Collection

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires the target application to (1) run on PHP earlier than 8.0, where libxml does not disable external-entity loading by default and getID3's @libxml_disable_entity_loader() could fail silently, and (2) invoke getID3's XML2array helper on attacker-influenced XML metadata inside a media file. The attacker must be able to deliver a crafted media file to be parsed (e.g., via an upload feature). On PHP 8.0 and later the flaw does not trigger at all, which is the dominant limiting factor; additionally AC:H/AT:P reflect that entity-loading behavior and success are runtime/config dependent. No authentication is required (PR:N) once these preconditions hold, and no user interaction is needed beyond the application parsing the file.

Impact

The vendor CVSS 4.0 score of 8.3 (High) rests on AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:N/VA:L, and the elevated number is driven mainly by VC:H (local file disclosure). Critically, AC:H and AT:P are correctly assigned: the flaw is gated on a legacy runtime - it only manifests on PHP before 8.0, where libxml did not disable external-entity loading by default and the code's @libxml_disable_entity_loader() call could silently fail. On PHP 8.0+ (the mainstream supported line since 2020) the vulnerability does not trigger, which sharply narrows the real-world exposed population. No EPSS score, no CISA KEV listing, and no public POC accompany this report, so there is no signal of active or imminent exploitation. This is best characterized as a real but conditional bug: the ubiquity of getID3 (bundled in WordPress core and many PHP media apps) raises theoretical reach, but the hard PHP<8.0 precondition plus attacker needing to plant crafted XML metadata inside a parsed media file makes it a moderate, patch-in-normal-cycle priority rather than an emergency. VI:N is appropriate (read/SSRF/DoS, no integrity write); VA:L reflects the entity-expansion DoS path.

Exploit ScenarioDerived

An attacker uploads or supplies a media file whose embedded XML metadata (e.g., ID3/ASF/other XML-bearing tags) contains a malicious external entity, to an application that runs on PHP < 8.0 and uses getID3's XML2array helper to parse it. When parsed, the entity resolves to disclose local files (e.g., configuration or credentials), perform SSRF against internal endpoints, or trigger an entity-expansion (billion-laughs) denial of service. No public exploit code is identified at time of analysis, and exploitation is impossible on PHP 8.0 or later.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 20, 2026

XML external entity injection in getID3 1.9.26 and earlier allows an attacker who can get a crafted media file parsed by the library's XML2array helper to read local files, potentially trigger server-side request forgery, and cause denial of service through entity expansion. The flaw only manifests on PHP versions earlier than 8.0, where libxml does not disable external entity loading by default and getID3's error-suppressed libxml_disable_entity_loader() call can fail silently; on PHP 8.0 and later the vulnerable code path does not trigger at all. No authentication or user interaction is required once those preconditions hold - the only requirement is that the application ingests attacker-influenced media metadata - and no public exploit identified at time of analysis, though the vendor has published a fix. Independent assessment rates the dominant impact as high-confidentiality local file disclosure (CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:L), with integrity impact absent and availability impact limited.

RemediationAI

Patch status: Upstream fix available (PR/commit); released patched version not independently confirmed - the vendor advisory GHSA-3hf9-j62w-m548, pull request https://github.com/JamesHeinrich/getID3/pull/506, and commit https://github.com/JamesHeinrich/getID3/commit/ce50b4b23439f87716653099718fa1c11b3d15c4 provide the corrected XML2array logic; apply that change or upgrade to the first tagged release published after 1.9.26 as soon as it is available, since the advisory page is the authoritative source for an exact fixed version number. The single most effective mitigation is to run the hosting application on PHP 8.0 or later, where external entity loading is disabled by default and the vulnerable path does not trigger - a change that eliminates the condition entirely but may require compatibility testing of the application stack. If staying on older PHP in the short term, ensure libxml_disable_entity_loader(true) is invoked once at application bootstrap in a context where the return value is checked (not suppressed) so entity loading is genuinely off, and consider stripping or re-encoding media metadata before it reaches getID3 rather than parsing untrusted XML directly - the trade-off being loss of the metadata the library is being used to extract. Compensating controls with explicit limitations: restrict outbound network egress from the parsing host to blunt the SSRF channel (does not stop local file disclosure or entity-expansion DoS); run the parser in a container or sandbox with least-privilege read access so a disclosed file yields little (no protection against DoS); and cap upload size, request time, and PHP memory to bound entity-expansion resource exhaustion (no protection against file disclosure or SSRF). Audit logs for outbound requests or unexpected file reads originating from media-processing paths as a detection backstop. References for remediation planning: https://github.com/JamesHeinrich/getID3/security/advisories/GHSA-3hf9-j62w-m548 and https://www.vulncheck.com/advisories/getid3-through-1.9.26-xml-external-entity-injection-via-xml2array.

Affected VersionsENISA

getid3 0 ≤1.9.26

Affected Packages

euvd getid3 no fix

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

getID3 is a widely embedded PHP library for reading and writing metadata from media files (ID3 tags, EXIF, QuickTime/RIFF chunks, and other embedded XML-bearing containers). The vulnerable code lives in the XML2array helper in getid3/getid3.lib.php (referenced lines 742-755), the routine that converts embedded XML metadata into a PHP array. This is a classic CWE-611 improper restriction of XML external entity reference: the function wraps its call to libxml_disable_entity_loader(true) in the PHP error-suppression operator, so on PHP releases prior to 8.0 - where entity loading is enabled by default and that API is the intended guard - any failure of the call is hidden and parsing proceeds with external entity resolution still active. The library's default parse options (GETID3_LIBXML_OPTIONS) include LIBXML_NONET, which blocks network-based entity fetches, but the local-file entity channel remains reachable when entity loading has not actually been disabled, which is why the assessed confidentiality impact (local file disclosure) dominates while SSRF is a configuration-dependent secondary outcome. The upstream fix in PR #506 / commit ce50b4b removes the error suppression, detects when entity loading cannot be disabled, and refuses to parse the document (returns false) instead of silently continuing; it also alters the LIBXML option set for the parser. Affected deployments are identified by CPE cpe:2.3:a:james-heinrich:getid3:*:*:*:*:*:*:*:*, with the practical exposure gated on the host running PHP earlier than 8.0.

Know when Getid3 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

Vendor (VulnCheck) PRIMARY 8.3 HIGH
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:N/VA:L/SC:N/SI:N/SA:N
vuln.today AI 6.5 MEDIUM

Network-reachable file parsing (AV:N, PR:N); AC:H because the legacy PHP<8.0 precondition must hold; C:H from local file/SSRF disclosure, A:L from entity-expansion DoS, no integrity write.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:L
4.0 AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:N/VA:L/SC:N/SI:N/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
High
Attack Requirements
Present
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
None
Vulnerable system: Availability
Low
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

getID3 through 1.9.26 contains an XML external entity injection vulnerability in the XML2array helper function that fails to properly disable entity loading on PHP before 8.0. Attackers can craft malicious XML metadata in media files to disclose local files, perform server-side request forgery, or cause denial of service through entity expansion.

Technical POC Analysis

CWE-611 (Improper Restriction of XML External Entity Reference).

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

getID3, a widely used PHP library for reading media-file metadata, contains an XML external entity injection flaw (CVE-2026-94108) that can expose local files, turn servers into proxies for internal network requests, or crash services on any host still running PHP earlier than 8.0. Exploitation requires no credentials and no user interaction: any application that parses attacker-influenced media files - content management systems, media libraries, upload pipelines, and customer-facing SaaS back-ends - is in scope, and the confidentiality of data stored alongside that application is the primary exposure. Leadership should treat this as a supply-chain dependency issue, since the vulnerable code is embedded rather than owned in-house, and remediation depends on tracking down every deployment still paired with legacy PHP.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.4%
Top 63% exploitable
Prevalence
High
getID3 bundled in WordPress core and many PHP media apps
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GitHub VulDB

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Partial

Priority Score

42
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +42
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.

XML External Entity (XXE) attacks exploit XML parsers that process Document Type Definitions (DTDs) without proper restrictions.

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy