Contournement des limites d'expansion d'entité lorsque la valeur est définie sur zéro en raison de l'évaluation falsy de JavaScript dans fast-xml-parser
Plateforme
nodejs
Composant
fast-xml-parser
Corrigé dans
5.5.7
## Résumé Le `DocTypeReader` dans fast-xml-parser utilise des vérifications truthy JavaScript pour évaluer les limites de configuration `maxEntityCount` et `maxEntitySize`. Lorsqu'un développeur définit explicitement l'une ou l'autre limite sur `0` - dans l'intention d'interdire toutes les entités ou de limiter la taille de l'entité à zéro octet - la nature falsy de `0` en JavaScript provoque un court-circuit des conditions de garde, contournant complètement les limites. Un attaquant qui peut fournir une entrée XML à une telle application peut déclencher une expansion d'entité illimitée, entraînant un épuisement de la mémoire et un déni de service (Denial of Service). ## Détails Le `OptionsBuilder.js` conserve correctement une valeur de `0` fournie par l'utilisateur à l'aide de la fusion nullish (`??`) : ```js // src/xmlparser/OptionsBuilder.js:111 maxEntityCount: value.maxEntityCount ?? 100, // src/xmlparser/OptionsBuilder.js:107 maxEntitySize: value.maxEntitySize ?? 10000, ``` Cependant, `DocTypeReader.js` utilise l'évaluation truthy pour vérifier ces limites. Parce que `0` est falsy en JavaScript, l'expression de garde entière court-circuite à `false`, et la limite n'est jamais appliquée : ```js // src/xmlparser/DocTypeReader.js:30-32 if (this.options.enabled !== false && this.options.maxEntityCount && // ← 0 is falsy, skips "
Comment corriger
Aucun correctif officiel disponible. Recherchez des alternatives ou surveillez les mises à jour.
Surveillez vos dépendances automatiquement
Recevez des alertes quand de nouvelles vulnérabilités affectent vos projets.
Commencer gratuitement