CVE-2026-60075 in Date::Manip
Résumé
par VulDB • 30/07/2026
Les versions de Date::Manip jusqu'à la 6.99 pour Perl permettent une épuisement des ressources CPU via un backtracking quadratique lors de la substitution temporelle non ancrée dans _parse_time.
_parse_time extrait une date/heure depuis n'importe où dans la chaîne grâce à la substitution non ancrée `s/$timerx/ /`, où $timerx est une alternance générée automatiquement de motifs temporels atteints via un préfixe `(?:$atrx|^|\s+)`. Le moteur tente donc de faire correspondre le motif à chaque position d'une séquence interne d'espaces blancs : pour chaque position de départ, l'expression `\s+` consomme avidement la suite de la séquence ; l'alternance temporelle échoue car la séquence ne contient aucun chiffre ; puis le moteur effectue un backtracking espace par espace à travers cette séquence avant d'avancer la position de départ. Cette complexité est quadratique par rapport à la longueur de la séquence. Aucune date/heure n'a besoin d'être présente dans la chaîne pour que cela se produise, une longue suite d'espaces blancs suffit ; le temps de traitement augmente environ d'un facteur quatre à chaque doublement de la taille de cette suite : quelques kilo-octets d'espaces blancs coûtent plusieurs secondes de CPU par analyse, et des dizaines de kilo-octets peuvent prendre plusieurs minutes.
Tout appelant qui transmet une chaîne non fiable de longueur illimitée aux fonctions ParseDate(), Date::Manip::Date->parse() ou ->parse_time() peut être contraint à consommer un temps CPU illimité lors d'une seule opération d'analyse, constituant ainsi une attaque par déni de service (DoS).
If you want to get best quality of vulnerability data, you may have to visit VulDB.