CVE-2026-107381: 
PHP Análise e mitigação de vulnerabilidades

Visão geral

CVE-2026-107381 is a Denial-of-Service (DoS) vulnerability in the enshrined/svg-sanitize PHP library (darylldoyle/svg-sanitizer) caused by improper handling of case sensitivity in SVG <use> element reference resolution. Affecting all versions up to and including 0.22.0, the flaw allows an attacker to bypass the library's nesting-DoS protection by submitting SVG files with mixed-case xlink:HrEf attributes, resulting in a "nesting bomb" being passed through sanitization intact. It was published on September 1, 2026, and added to the GitHub Advisory Database on October 8, 2026. The vulnerability carries a CVSS v3.1 base score of 6.5 (Medium) (GitHub Advisory).

Detalhes técnicos

The root cause is a combination of CWE-178 (Improper Handling of Case Sensitivity) and CWE-400 (Uncontrolled Resource Consumption). In Resolver::processReferences() (src/ElementReference/Resolver.php:97-118), <use> elements are collected via the XPath predicate use[@href or @xlink:href], which is case-sensitive. A <use> element using xlink:HrEf (mixed case) is therefore never added to the reference graph, so the nesting-DoS nullification logic never marks it for removal. Subsequently, Sanitizer::cleanHrefAttributes() (src/Sanitizer.php:479-504) normalizes xlink:HrEf back to the canonical xlink:href, producing a fully live nesting bomb with canonical attribute names in the sanitizer's output. The ordering bug — building the resolver graph before normalizing attribute casing — is the core issue, and it is the mirror image of CVE-2025-55166, which made href value checking case-insensitive but left the reference graph node selection case-sensitive (GitHub Advisory, Security Advisory).

Impacto

Successful exploitation causes a high-availability impact on any application that accepts, sanitizes, and serves SVG files using this library. An attacker with no privileges beyond the ability to upload or paste an SVG can deliver a deeply nested <use> reference structure (nesting bomb) that survives sanitization intact, potentially consuming excessive CPU or memory when the SVG is subsequently rendered or processed. There is no confidentiality or integrity impact; the vulnerability is purely a DoS vector (GitHub Advisory).

Exploração

No in-the-wild exploitation has been reported, and no public exploit kit or weaponized code is known at this time. A proof-of-concept is described in the advisory: it requires only modifying the project's own tests/data/useDosTest.svg fixture by replacing xlink:href with xlink:HrEf, then submitting it to a vulnerable sanitizer instance. The CVE status is listed as "Reserved" and it is not currently in the CISA Known Exploited Vulnerabilities (KEV) catalog. No EPSS score is available at this time (GitHub Advisory, Security Advisory).

Etapas de exploração

  1. Identify a target: Find an application that accepts SVG file uploads or inline SVG input and uses enshrined/svg-sanitize version ≤ 0.22.0 for sanitization before serving or rendering the SVG.
  2. Craft the payload: Take a deeply nested SVG <use> nesting bomb (e.g., based on the library's own tests/data/useDosTest.svg fixture) and replace all canonical xlink:href attribute names with a mixed-case variant such as xlink:HrEf.
  3. Submit the SVG: Upload or paste the crafted SVG through the application's normal SVG intake mechanism (e.g., file upload form, API endpoint). No authentication or elevated privileges are required.
  4. Bypass sanitization: The sanitizer's Resolver::processReferences() fails to detect the <use> elements due to case-sensitive XPath matching, so the nesting-DoS nullification is skipped. cleanHrefAttributes() then normalizes xlink:HrEf back to xlink:href, producing a fully live nesting bomb in the sanitizer output.
  5. Trigger DoS: When the application or a downstream user renders the sanitized SVG, the deeply nested <use> references are expanded, consuming excessive CPU/memory and causing a denial-of-service condition (GitHub Advisory, Security Advisory).

Indicadores de compromisso

  • Network: Incoming HTTP requests containing SVG payloads with mixed-case xlink:HrEf or HrEf attribute names in <use> elements, particularly with deeply nested structures.
  • File System: Uploaded SVG files containing xlink:HrEf, xlink:HREF, HrEf, or HREF attribute variants in <use> elements; presence of deeply nested <use> reference chains in stored SVG files.
  • Logs: Application or web server logs showing repeated SVG upload requests followed by high CPU/memory usage or timeouts during SVG rendering; PHP error logs indicating memory exhaustion or execution time limit exceeded during SVG processing.
  • Process: Abnormal CPU or memory spikes in the PHP process handling SVG sanitization or rendering, particularly correlated with SVG file upload events (GitHub Advisory).

Mitigação e soluções alternativas

Upgrade the enshrined/svg-sanitize Composer package to version 1.0.0, which fixes the vulnerability by removing the case-sensitive XPath predicate from Resolver::processReferences() and making Helper::getElementHref() perform a case-insensitive lookup for href/xlink:href attributes (Release 1.0.0, Fix Commit). No configuration-based workaround is available; upgrading is the only reliable remediation. As a temporary measure, applications can reject SVG uploads containing mixed-case href attribute names (e.g., HrEf, HREF, xlink:HrEf) at the input validation layer before passing to the sanitizer.

Reações da comunidade

The vulnerability was discovered and reported by security researcher arpitjain099, who identified it by reviewing the CVE-2025-55166 patch and noting that the resolver's XPath predicate had not been made case-insensitive. The reporter used AI assistance during the review process and confirmed the issue by running a manual proof-of-concept against tag 0.22.0. The fix was merged by the maintainer (darylldoyle) as part of the 1.0.0 release, which also included several other improvements (Security Advisory, Release 1.0.0).

Recursos adicionais


Origem: Este relatório foi gerado usando IA

Relacionado PHP Vulnerabilidades:

CVE ID

Gravidade

Pontuação

Tecnologias

Nome do componente

Exploração do CISA KEV

Tem correção

Data de publicação

CVE-2026-65954HIGH8.6
  • PHP logoPHP
  • composer://phpcsstandards/phpcsutils
NãoSimOct 12, 2026
CVE-2026-107381MEDIUM6.5
  • PHP logoPHP
  • enshrined/svg-sanitize
NãoSimOct 14, 2026
CVE-2026-109162MEDIUM6.3
  • PHP logoPHP
  • composer://typo3/cms-form
NãoSimOct 13, 2026
CVE-2026-56826MEDIUM5.4
  • PHP logoPHP
  • shopper/framework
NãoSimOct 13, 2026
CVE-2026-107851MEDIUM4.3
  • PHP logoPHP
  • contao/core-bundle
NãoSimOct 09, 2026

Avaliação de vulnerabilidade gratuita

Compare sua postura de segurança na nuvem

Avalie suas práticas de segurança na nuvem em 9 domínios de segurança para comparar seu nível de risco e identificar lacunas em suas defesas.

Solicitar avaliação

Marque uma demonstração personalizada

Pronto para ver a Wiz em ação?

"A melhor experiência do usuário que eu já vi, fornece visibilidade total para cargas de trabalho na nuvem."
David EstlickCISO
"A Wiz fornece um único painel de vidro para ver o que está acontecendo em nossos ambientes de nuvem."
Adam FletcherDiretor de Segurança
"Sabemos que se a Wiz identifica algo como crítico, na verdade é."
Greg PoniatowskiChefe de Gerenciamento de Ameaças e Vulnerabilidades