Vulnerabilitat crítica de denegació de servei (ReDoS) als patrons predeterminats d’expressions regulars d’Apache OpenNLP

ALERTES

22/09/2026

CVE-2026-82617

ALT (10,0)

CVSS3: 0,0

Els dos patrons de cerca de noms integrats exposats per opennlp.tools.namefind.RegexNameFinderFactory – DEFAULT_REGEX_NAME_FINDER.EMAIL i DEFAULT_REGEX_NAME_FINDER.URL – contenen quantificadors imbricats ambigus. Una aplicació que obté aquests cercadors a través de RegexNameFinderFactory.getDefaultRegexNameFinders(…) i després els aplica a text no fiable mitjançant RegexNameFinder.find(String[]) o RegexNameFinder.find(String) es pot impulsar a un retrocés súper lineal o a una petita entrada recursiva de concordança il·limitada. Per al patró EMAIL, una llarga sèrie de caràcters de la part local que mai no segueix una @ obliga que el comparador torni a escanejar fins al final de l’entrada des de cada desplaçament inicial. El cost creix quadràticament amb la longitud de l’entrada: una entrada d’aproximadament 32 KB consumeix uns quants segons de CPU en una única trucada find() i no retorna cap coincidència, i cada duplicació de l’entrada multiplica el cost aproximadament per quatre. Per al patró d’URL, la subexpressió de cadena de consulta implanta una repetició de captura dins d’una repetició externa. El comparador JDK es repeteix una vegada per testimoni de consulta, de manera que una entrada d’aproximadament 4 KB que conté molts testimonis separats per & esgota el monticle de fils i fa que java.lang.StackOverflowError es propagui fora de find(), i acaba el fil fent una crida. En un fil creat amb un monticle més petit (per exemple -Xss512k, típic dels grups de treballadors del servidor) n’hi ha prou amb aproximadament 1 KB. En ambdós casos, un atacant que pot proporcionar text per a l’anàlisi pot convertir una sol·licitud única en segons a minuts de CPU fixada, o en una mort brusca del fil, cosa que denega el servei a l’aplicació d’inserció. No es requereix cap autenticació, configuració especial o fitxer de model més enllà que l’aplicació hagi seleccionat un dels dos cercadors integrats. Aquest problema afecta Apache OpenNLP: de 2.0.0 a 2.5.11; de 3.0.0-M1 a 3.0.0-M5.

Sistemes Afectats

  • Apache Opennlp
  • Apache Opennlp 3.0.0

Remediació

Es recomana als usuaris que actualitzin a la versió 2.5.12 o a la 3.0.0-M6 per als usuaris que segueixen la línia de fita 3.0.0, que solucionen el problema. Vegeu-ne les Referències.