Gemiddeld · 4.2 PHP-packages GHSA-m9xh-6747-9r6f CVE-2026-107381 PKSA-6j95-1jtb-x6wc
svg-sanitizer: Mixed-case xlink:HrEf omzeilt de <use>-nesting-DoS-controle (CVE-2026-107381)
Door case-gevoelige selectie slaat Resolver::processReferences mixed-case attributen zoals xlink:HrEf over, waarna de sanitizer later de naam weer normaliseert en zo een levende nesting-structuur teruggeeft. Een oplossing is beschikbaar in 1.0.0. (CVE-2026-107381, GHSA-m9xh-6747-9r6f)
AI-samenvatting
Deze waarschuwing betreft CVE-2026-107381 in enshrined/svg-sanitize. De referentie-resolver selecteert <use>-elementen met case-gevoelige XPath-voorwaarde, waardoor gemengde hoofdlettergebruik-attributen (bijv. xlink:HrEf) niet in de referentiegraf worden opgenomen. Later normaliseert de sanitizer attributen naar kleine letters en levert dan nog steeds de geneste structuur op die de useNestingLimit juist had moeten neutraliseren. (Bronnen: OSV.dev, Packagist, GitHub Advisory Database.)
Wat er gebeurde
Resolver::processReferences() zoekt <use>-elementen met een case-gevoelige XPath-predicate (bijvoorbeeld use[@href or @xlink:href]); een gemengd-hoofdletter attribuut zoals xlink:HrEf wordt daardoor niet gevonden en niet aan de referentiegraf toegevoegd. Later in dezelfde sanitize-run zet Sanitizer::cleanHrefAttributes() de attribuutnaam terug naar kleine letters, waardoor de uitvoer canonieke xlink:href-waarden bevat maar de geneste <use>-structuur intact blijft. Het gevolg is een nesting-DoS die bij canonieke invoer wel zou zijn weggefilterd. (Bronnen: 3974, 4173, 8432)
Technische oorzaak
Het probleem is een combinatie van volgorde en case-gevoeligheid: de resolver bouwt eerst de referentiegraf met case-gevoelige naamselectie, en vervolgens vindt pas normalisatie van attribuutnamen plaats. Omdat de resolver de genormaliseerde naam niet ziet, worden knopen met gemengde hoofdletters overgeslagen en niet geneutraliseerd door de nesting-bescherming. De advisering noemt twee oplossingsrichtingen: naamvergelijking case-insensitief maken bij het bouwen van de graf of de attribuutnormalisatie vóór de resolver laten lopen. (Bronnen: 3974, 4173, 8432)
Waarom dit belangrijk is
Een aanvaller die een SVG kan uploaden of plakken kan een bestand aanleveren dat, ondanks sanitatie, een diep geneste <use>-structuur behoudt. De output bevat canonieke xlink:href-attributen maar houdt de oorspronkelijke nesting die de useNestingLimit had moeten neutraliseren. De advisering meette dat nullificatie werd overgeslagen en dat attributen weer canoniek werden gemaakt, maar heeft de werkelijke impact op renderer CPU/geheugen niet gemeten. (Bronnen: 3974, 4173, 8432)
Wie is getroffen
Applicaties en projecten die enshrined/svg-sanitize gebruiken om door gebruikers aangeleverde SVG's te sanitiseren en die een kwetsbare release draaien zijn getroffen. Misbruik vereist alleen de mogelijkheid om een SVG in te dienen; er zijn geen speciale rechten nodig. (Bronnen: 3974, 4173, 8432)
Ontdekking en tijdlijn
De advisering is gepubliceerd op 2026-10-08T19:41:10+02:00. De proof-of-concept is uitgevoerd tegen tag 0.22.0 en testobservaties werden gedaan op PHP 8.5.9: canonieke invoer ging van 201 <use>-elementen naar 0, terwijl de mixed-case invoer 201 behield en de uitvoer alsnog canonieke attributen vertoonde. De bronnen vermelden geen claim van actieve uitbuiting of een vendorverklaring. (Bronnen: 3974, 4173, 8432)
Getroffen versies
De advisering geeft aan dat releases tot en met 0.22.0 kwetsbaar zijn. Er is een gefixeerde release beschikbaar in 1.0.0. Zie de advisering voor details en controleer uw afhankelijkheden. (Bronnen: 3974, 4173, 8432)
Oplossingen en mitigatie
Een correctie is beschikbaar; 1.0.0 wordt als gefixeerde versie genoemd. De advisering adviseert ofwel case-insensitieve naamvergelijking bij het bouwen van de referentiegraf, ofwel attribuutnormalisatie vóór het verzamelen van referenties. Beide benaderingen voorkomen dat knopen met gemengde hoofdletters worden gemist. (Bronnen: 3974, 4173, 8432)
Aanbevolen actie
Werk enshrined/svg-sanitize bij naar 1.0.0 zodra dat mogelijk is. Als bijwerken niet direct kan, zorg dat attributen worden genormaliseerd vóórdat de referentiegraf wordt opgebouwd, of backport de resolver-wijziging die mixed-case attributen accepteert. Gebruik de testfixture (useDosTest.svg) om na te gaan dat de nesting-structuur daadwerkelijk wordt verwijderd. (Bronnen: 3974, 4173, 8432)
PatchBriefing-score
4.2 / 10 · Gemiddeld
Officiële CVSS: 6.5
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H
Waarom deze score
CVSS v3.1 basisscore is 6.5 (CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H). Dit betekent: netwerk-aanvalsvector (AV:N), lage complexiteit (AC:L), geen privileges vereist (PR:N), vereist gebruikersinteractie (UI:R), scope onveranderd (S:U), geen vertrouwelijkheids- of integriteitsimpact (C:N/I:N) en een HOGE beschikbaarheidsimpact (A:H). De PatchWire-score van 4.2 combineert deze basiskenmerken met extra factoren zoals de mogelijkheid tot ongeauthentieke remote-aanval en het ontbreken van publieke exploits. (Bronnen: 3974, 4173, 8432)
Getroffen versies
- enshrined/svg-sanitize ≥ 0 < 1.0.0
- kwetsbaar
- enshrined/svg-sanitize
- kwetsbaar
- enshrined/svg-sanitize <=0.22.0
- kwetsbaar
- enshrined/svg-sanitize <= 0.22.0
- kwetsbaar
- ≥ 1.0.0
- gepatcht
Gemelde oplossingen
Een correctie is beschikbaar; 1.0.0 wordt als gefixeerde versie genoemd. De advisering adviseert ofwel case-insensitieve naamvergelijking bij het bouwen van de referentiegraf, ofwel attribuutnormalisatie vóór het verzamelen van referenties. Beide benaderingen voorkomen dat knopen met gemengde hoofdletters worden gemist. (Bronnen: 3974, 4173, 8432)
Hoe dit rapport is gemaakt
3 bronrecords zijn opgehaald, gekoppeld en gebruikt om het rapport hierboven op te stellen.
-
OSV.dev database
-
Packagist Security Advisories registry
-
GitHub Advisory Database database
Revisiegeschiedenis
- Gepubliceerd
- Gegenereerd
Gerelateerd
Relevante veranderingen voor de stacks die je volgt.
Kies je stacks, onderwerpen en eventueel WordPress-plugins. Om 07:00 CEST worden passende meldingen en releases uit de rapportageperiode in één e-mail gegroepeerd.
✓ Kies stacks en onderwerpen✓ Pas voorkeuren altijd aan✓ Eén gebundelde e-mail