{"id":21211,"date":"2026-09-12T04:30:53","date_gmt":"2026-09-11T20:30:53","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-82617"},"modified":"2026-09-12T04:30:53","modified_gmt":"2026-09-11T20:30:53","slug":"cve-2026-82617","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-82617","title":{"rendered":"CVE-2026-82617 &#8211; The two built-in name-finder patterns exposed by\nopennlp.tools.namefind.RegexNameFinderFac"},"content":{"rendered":"<p>The two built-in name-finder patterns exposed by<br \/>\nopennlp.tools.namefind.RegexNameFinderFactory &#8211; DEFAULT_REGEX_NAME_FINDER.EMAIL<br \/>\nand DEFAULT_REGEX_NAME_FINDER.URL\u00a0&#8211; contain ambiguous nested quantifiers. An<br \/>\napplication that obtains these finders through<br \/>\nRegexNameFinderFactory.getDefaultRegexNameFinders(&#8230;) and then applies them to<br \/>\nuntrusted text through RegexNameFinder.find(String[]) or RegexNameFinder.find(String)<br \/>\ncan be driven into super-linear backtracking or into unbounded matcher recursion by a<br \/>\nsmall crafted input.<\/p>\n<p>For the EMAIL pattern, a long run of local-part characters that is never followed by an<br \/>\n@ forces the matcher to re-scan to end-of-input from every starting offset. Cost grows<br \/>\nquadratically with input length: an input of approximately 32 KB consumes several seconds<br \/>\nof CPU in a single find() call and returns no match, and each doubling of the input<br \/>\nmultiplies the cost roughly four-fold.<\/p>\n<p>For the URL pattern, the query-string sub-expression nests a capturing repetition inside<br \/>\nan outer repetition. The JDK matcher recurses once per query token, so an input of<br \/>\napproximately 4 KB containing many &amp;-separated tokens exhausts the thread stack and<br \/>\ncauses java.lang.StackOverflowError to propagate out of find(), terminating the<br \/>\ncalling thread. On a thread created with a smaller stack (for example -Xss512k, typical<br \/>\nof server worker pools) approximately 1 KB is sufficient.<\/p>\n<p>In both cases an attacker who can supply text for analysis can convert a single request<br \/>\ninto seconds to minutes of pinned CPU, or into an abrupt thread death, denying service to<br \/>\nthe embedding application. No authentication, special configuration, or model file is<br \/>\nrequired beyond the application having selected one of the two built-in finders.<\/p>\n<p>This issue affects Apache OpenNLP: from 2.0.0 through 2.5.11; from 3.0.0-M1 through<br \/>\n3.0.0-M5.<\/p>\n<p>Users are recommended to upgrade to version 2.5.12, or to 3.0.0-M6 for users tracking the<br \/>\n3.0.0 milestone line, which fix the issue.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The two built-in name-finder patterns exposed by<br \/>\nopennlp.tools.namefind.RegexNameFinderFactory &#8211; DEFAULT_REGEX_NAME_FINDER.EMAIL<br \/>\nand DEFAULT_REGEX_NAME_FINDER.URL\u00a0&#8211; contain ambiguous nested quantifier<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-21211","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/21211","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=21211"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=21211"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=21211"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}