CVE-2026-82617 (GCVE-0-2026-82617)
Vulnerability from cvelistv5
Published
2026-09-11 17:50
Modified
2026-09-11 21:07
Severity ?
VLAI Severity ?
EPSS score ?
Summary
The two built-in name-finder patterns exposed by
opennlp.tools.namefind.RegexNameFinderFactory - DEFAULT_REGEX_NAME_FINDER.EMAIL
and DEFAULT_REGEX_NAME_FINDER.URL - contain ambiguous nested quantifiers. An
application that obtains these finders through
RegexNameFinderFactory.getDefaultRegexNameFinders(...) and then applies them to
untrusted text through RegexNameFinder.find(String[]) or RegexNameFinder.find(String)
can be driven into super-linear backtracking or into unbounded matcher recursion by a
small crafted input.
For the EMAIL pattern, a long run of local-part characters that is never followed by an
@ forces the matcher to re-scan to end-of-input from every starting offset. Cost grows
quadratically with input length: an input of approximately 32 KB consumes several seconds
of CPU in a single find() call and returns no match, and each doubling of the input
multiplies the cost roughly four-fold.
For the URL pattern, the query-string sub-expression nests a capturing repetition inside
an outer repetition. The JDK matcher recurses once per query token, so an input of
approximately 4 KB containing many &-separated tokens exhausts the thread stack and
causes java.lang.StackOverflowError to propagate out of find(), terminating the
calling thread. On a thread created with a smaller stack (for example -Xss512k, typical
of server worker pools) approximately 1 KB is sufficient.
In both cases an attacker who can supply text for analysis can convert a single request
into seconds to minutes of pinned CPU, or into an abrupt thread death, denying service to
the embedding application. No authentication, special configuration, or model file is
required beyond the application having selected one of the two built-in finders.
This issue affects Apache OpenNLP: from 2.0.0 through 2.5.11; from 3.0.0-M1 through
3.0.0-M5.
Users are recommended to upgrade to version 2.5.12, or to 3.0.0-M6 for users tracking the
3.0.0 milestone line, which fix the issue.
References
| URL | Tags | ||||
|---|---|---|---|---|---|
|
|||||
Impacted products
| Vendor | Product | Version | |||||||
|---|---|---|---|---|---|---|---|---|---|
| Apache Software Foundation | Apache OpenNLP |
Version: 3.0.0-M1 ≤ |
|||||||
|
|||||||||
{
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2026-82617",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "yes"
},
{
"Technical Impact": "total"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-09-11T17:57:46.105698Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-1333",
"description": "CWE-1333 Inefficient Regular Expression Complexity",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-09-11T17:57:49.583Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"title": "CISA ADP Vulnrichment"
},
{
"providerMetadata": {
"dateUpdated": "2026-09-11T21:07:10.400Z",
"orgId": "af854a3a-2127-422b-91ae-364da2661108",
"shortName": "CVE"
},
"references": [
{
"url": "http://www.openwall.com/lists/oss-security/2026/09/11/10"
}
],
"title": "CVE Program Container"
}
],
"cna": {
"affected": [
{
"collectionURL": "https://repo.maven.apache.org/maven2",
"defaultStatus": "unaffected",
"packageName": "org.apache.opennlp:opennlp-core",
"packageURL": "pkg:maven/org.apache.opennlp/opennlp-core",
"product": "Apache OpenNLP",
"vendor": "Apache Software Foundation",
"versions": [
{
"lessThan": "3.0.0-M6",
"status": "affected",
"version": "3.0.0-M1",
"versionType": "semver"
}
]
},
{
"collectionURL": "https://repo.maven.apache.org/maven2",
"defaultStatus": "unaffected",
"packageName": "org.apache.opennlp:opennlp-tools",
"packageURL": "pkg:maven/org.apache.opennlp/opennlp-tools",
"product": "Apache OpenNLP",
"vendor": "Apache Software Foundation",
"versions": [
{
"lessThan": "2.5.12",
"status": "affected",
"version": "2.0.0",
"versionType": "semver"
}
]
}
],
"credits": [
{
"lang": "en",
"type": "finder",
"value": "n0mi1k"
}
],
"descriptions": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "\u003cp\u003e\u003cspan\u003eThe two built-in name-finder patterns exposed by\n\u003c/span\u003e\u003ccode\u003eopennlp.tools.namefind.RegexNameFinderFactory\u003c/code\u003e\u003cspan\u003e - \u003c/span\u003e\u003ccode\u003eDEFAULT_REGEX_NAME_FINDER.EMAIL\u003c/code\u003e\u003cspan\u003e\nand \u003c/span\u003e\u003ccode\u003eDEFAULT_REGEX_NAME_FINDER.URL\u003c/code\u003e\u003cspan\u003e\u0026nbsp;- contain ambiguous nested quantifiers. An\napplication that obtains these finders through\n\u003c/span\u003e\u003ccode\u003eRegexNameFinderFactory.getDefaultRegexNameFinders(...)\u003c/code\u003e\u003cspan\u003e and then applies them to\nuntrusted text through \u003c/span\u003e\u003ccode\u003eRegexNameFinder.find(String[])\u003c/code\u003e\u003cspan\u003e or \u003c/span\u003e\u003ccode\u003eRegexNameFinder.find(String)\u003c/code\u003e\u003cspan\u003e\ncan be driven into super-linear backtracking or into unbounded matcher recursion by a\nsmall crafted input.\u003c/span\u003e\u003c/p\u003e\n\n\u003cp\u003eFor the EMAIL pattern, a long run of local-part characters that is never followed by an\n\u003ccode\u003e@\u003c/code\u003e forces the matcher to re-scan to end-of-input from every starting offset. Cost grows\nquadratically with input length: an input of approximately 32 KB consumes several seconds\nof CPU in a single \u003ccode\u003efind()\u003c/code\u003e call and returns no match, and each doubling of the input\nmultiplies the cost roughly four-fold.\u003c/p\u003e\n\n\u003cp\u003eFor the URL pattern, the query-string sub-expression nests a capturing repetition inside\nan outer repetition. The JDK matcher recurses once per query token, so an input of\napproximately 4 KB containing many \u003ccode\u003e\u0026amp;\u003c/code\u003e-separated tokens exhausts the thread stack and\ncauses \u003ccode\u003ejava.lang.StackOverflowError\u003c/code\u003e to propagate out of \u003ccode\u003efind()\u003c/code\u003e, terminating the\ncalling thread. On a thread created with a smaller stack (for example \u003ccode\u003e-Xss512k\u003c/code\u003e, typical\nof server worker pools) approximately 1 KB is sufficient.\u003c/p\u003e\n\n\u003cp\u003eIn both cases an attacker who can supply text for analysis can convert a single request\ninto seconds to minutes of pinned CPU, or into an abrupt thread death, denying service to\nthe embedding application. No authentication, special configuration, or model file is\nrequired beyond the application having selected one of the two built-in finders.\u003c/p\u003e\n\n\u003cp\u003eThis issue affects Apache OpenNLP: from 2.0.0 through 2.5.11; from 3.0.0-M1 through\n3.0.0-M5.\u003c/p\u003e\u003cp\u003e\n\n\u003c/p\u003e\u003cp\u003eUsers are recommended to upgrade to version 2.5.12, or to 3.0.0-M6 for users tracking the\n3.0.0 milestone line, which fix the issue.\u003c/p\u003e\n\n\u003cp\u003e\u003cbr\u003e\u003c/p\u003e"
}
],
"value": "The two built-in name-finder patterns exposed by\nopennlp.tools.namefind.RegexNameFinderFactory - DEFAULT_REGEX_NAME_FINDER.EMAIL\nand DEFAULT_REGEX_NAME_FINDER.URL\u00a0- contain ambiguous nested quantifiers. An\napplication that obtains these finders through\nRegexNameFinderFactory.getDefaultRegexNameFinders(...) and then applies them to\nuntrusted text through RegexNameFinder.find(String[]) or RegexNameFinder.find(String)\ncan be driven into super-linear backtracking or into unbounded matcher recursion by a\nsmall crafted input.\n\n\n\n\n\nFor the EMAIL pattern, a long run of local-part characters that is never followed by an\n@ forces the matcher to re-scan to end-of-input from every starting offset. Cost grows\nquadratically with input length: an input of approximately 32 KB consumes several seconds\nof CPU in a single find() call and returns no match, and each doubling of the input\nmultiplies the cost roughly four-fold.\n\n\n\n\n\nFor the URL pattern, the query-string sub-expression nests a capturing repetition inside\nan outer repetition. The JDK matcher recurses once per query token, so an input of\napproximately 4 KB containing many \u0026-separated tokens exhausts the thread stack and\ncauses java.lang.StackOverflowError to propagate out of find(), terminating the\ncalling thread. On a thread created with a smaller stack (for example -Xss512k, typical\nof server worker pools) approximately 1 KB is sufficient.\n\n\n\n\n\nIn both cases an attacker who can supply text for analysis can convert a single request\ninto seconds to minutes of pinned CPU, or into an abrupt thread death, denying service to\nthe embedding application. No authentication, special configuration, or model file is\nrequired beyond the application having selected one of the two built-in finders.\n\n\n\n\n\nThis issue affects Apache OpenNLP: from 2.0.0 through 2.5.11; from 3.0.0-M1 through\n3.0.0-M5.\n\n\n\n\n\n\n\n\n\nUsers are recommended to upgrade to version 2.5.12, or to 3.0.0-M6 for users tracking the\n3.0.0 milestone line, which fix the issue."
}
],
"metrics": [
{
"cvssV4_0": {
"Automatable": "NOT_DEFINED",
"Recovery": "NOT_DEFINED",
"Safety": "NOT_DEFINED",
"attackComplexity": "LOW",
"attackRequirements": "NONE",
"attackVector": "NETWORK",
"baseScore": 10,
"baseSeverity": "CRITICAL",
"exploitMaturity": "NOT_DEFINED",
"privilegesRequired": "NONE",
"providerUrgency": "NOT_DEFINED",
"subAvailabilityImpact": "HIGH",
"subConfidentialityImpact": "HIGH",
"subIntegrityImpact": "HIGH",
"userInteraction": "NONE",
"valueDensity": "NOT_DEFINED",
"vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H",
"version": "4.0",
"vulnAvailabilityImpact": "HIGH",
"vulnConfidentialityImpact": "HIGH",
"vulnIntegrityImpact": "HIGH",
"vulnerabilityResponseEffort": "NOT_DEFINED"
},
"format": "CVSS",
"scenarios": [
{
"lang": "en",
"value": "GENERAL"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-09-11T17:50:53.639Z",
"orgId": "f0158376-9dc2-43b6-827c-5f631a4d8d09",
"shortName": "apache"
},
"references": [
{
"tags": [
"vendor-advisory"
],
"url": "https://lists.apache.org/thread/spzhcxxszqdpppg70m1zz2l3mv29mhl3"
}
],
"source": {
"discovery": "UNKNOWN"
},
"title": "Apache OpenNLP, Apache OpenNLP: ReDoS / stack exhaustion in RegexNameFinderFactory built-in EMAIL and URL patterns",
"x_generator": {
"engine": "Vulnogram 1.0.3"
}
}
},
"cveMetadata": {
"assignerOrgId": "f0158376-9dc2-43b6-827c-5f631a4d8d09",
"assignerShortName": "apache",
"cveId": "CVE-2026-82617",
"datePublished": "2026-09-11T17:50:53.639Z",
"dateReserved": "2026-08-30T07:51:33.177Z",
"dateUpdated": "2026-09-11T21:07:10.400Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2",
"vulnerability-lookup:meta": {
"vulnrichment": {
"containers": "{\"adp\": [{\"title\": \"CVE Program Container\", \"references\": [{\"url\": \"http://www.openwall.com/lists/oss-security/2026/09/11/10\"}], \"providerMetadata\": {\"orgId\": \"af854a3a-2127-422b-91ae-364da2661108\", \"shortName\": \"CVE\", \"dateUpdated\": \"2026-09-11T21:07:10.400Z\"}}, {\"title\": \"CISA ADP Vulnrichment\", \"metrics\": [{\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2026-82617\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"none\"}, {\"Automatable\": \"yes\"}, {\"Technical Impact\": \"total\"}], \"version\": \"2.0.3\", \"timestamp\": \"2026-09-11T17:57:46.105698Z\"}}}], \"problemTypes\": [{\"descriptions\": [{\"lang\": \"en\", \"type\": \"CWE\", \"cweId\": \"CWE-1333\", \"description\": \"CWE-1333 Inefficient Regular Expression Complexity\"}]}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2026-09-11T17:57:33.970Z\"}}], \"cna\": {\"title\": \"Apache OpenNLP, Apache OpenNLP: ReDoS / stack exhaustion in RegexNameFinderFactory built-in EMAIL and URL patterns\", \"source\": {\"discovery\": \"UNKNOWN\"}, \"credits\": [{\"lang\": \"en\", \"type\": \"finder\", \"value\": \"n0mi1k\"}], \"metrics\": [{\"format\": \"CVSS\", \"cvssV4_0\": {\"Safety\": \"NOT_DEFINED\", \"version\": \"4.0\", \"Recovery\": \"NOT_DEFINED\", \"baseScore\": 10, \"Automatable\": \"NOT_DEFINED\", \"attackVector\": \"NETWORK\", \"baseSeverity\": \"CRITICAL\", \"valueDensity\": \"NOT_DEFINED\", \"vectorString\": \"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H\", \"exploitMaturity\": \"NOT_DEFINED\", \"providerUrgency\": \"NOT_DEFINED\", \"userInteraction\": \"NONE\", \"attackComplexity\": \"LOW\", \"attackRequirements\": \"NONE\", \"privilegesRequired\": \"NONE\", \"subIntegrityImpact\": \"HIGH\", \"vulnIntegrityImpact\": \"HIGH\", \"subAvailabilityImpact\": \"HIGH\", \"vulnAvailabilityImpact\": \"HIGH\", \"subConfidentialityImpact\": \"HIGH\", \"vulnConfidentialityImpact\": \"HIGH\", \"vulnerabilityResponseEffort\": \"NOT_DEFINED\"}, \"scenarios\": [{\"lang\": \"en\", \"value\": \"GENERAL\"}]}], \"affected\": [{\"vendor\": \"Apache Software Foundation\", \"product\": \"Apache OpenNLP\", \"versions\": [{\"status\": \"affected\", \"version\": \"3.0.0-M1\", \"lessThan\": \"3.0.0-M6\", \"versionType\": \"semver\"}], \"packageURL\": \"pkg:maven/org.apache.opennlp/opennlp-core\", \"packageName\": \"org.apache.opennlp:opennlp-core\", \"collectionURL\": \"https://repo.maven.apache.org/maven2\", \"defaultStatus\": \"unaffected\"}, {\"vendor\": \"Apache Software Foundation\", \"product\": \"Apache OpenNLP\", \"versions\": [{\"status\": \"affected\", \"version\": \"2.0.0\", \"lessThan\": \"2.5.12\", \"versionType\": \"semver\"}], \"packageURL\": \"pkg:maven/org.apache.opennlp/opennlp-tools\", \"packageName\": \"org.apache.opennlp:opennlp-tools\", \"collectionURL\": \"https://repo.maven.apache.org/maven2\", \"defaultStatus\": \"unaffected\"}], \"references\": [{\"url\": \"https://lists.apache.org/thread/spzhcxxszqdpppg70m1zz2l3mv29mhl3\", \"tags\": [\"vendor-advisory\"]}], \"x_generator\": {\"engine\": \"Vulnogram 1.0.3\"}, \"descriptions\": [{\"lang\": \"en\", \"value\": \"The two built-in name-finder patterns exposed by\\nopennlp.tools.namefind.RegexNameFinderFactory - DEFAULT_REGEX_NAME_FINDER.EMAIL\\nand DEFAULT_REGEX_NAME_FINDER.URL\\u00a0- contain ambiguous nested quantifiers. An\\napplication that obtains these finders through\\nRegexNameFinderFactory.getDefaultRegexNameFinders(...) and then applies them to\\nuntrusted text through RegexNameFinder.find(String[]) or RegexNameFinder.find(String)\\ncan be driven into super-linear backtracking or into unbounded matcher recursion by a\\nsmall crafted input.\\n\\n\\n\\n\\n\\nFor the EMAIL pattern, a long run of local-part characters that is never followed by an\\n@ forces the matcher to re-scan to end-of-input from every starting offset. Cost grows\\nquadratically with input length: an input of approximately 32 KB consumes several seconds\\nof CPU in a single find() call and returns no match, and each doubling of the input\\nmultiplies the cost roughly four-fold.\\n\\n\\n\\n\\n\\nFor the URL pattern, the query-string sub-expression nests a capturing repetition inside\\nan outer repetition. The JDK matcher recurses once per query token, so an input of\\napproximately 4 KB containing many \u0026-separated tokens exhausts the thread stack and\\ncauses java.lang.StackOverflowError to propagate out of find(), terminating the\\ncalling thread. On a thread created with a smaller stack (for example -Xss512k, typical\\nof server worker pools) approximately 1 KB is sufficient.\\n\\n\\n\\n\\n\\nIn both cases an attacker who can supply text for analysis can convert a single request\\ninto seconds to minutes of pinned CPU, or into an abrupt thread death, denying service to\\nthe embedding application. No authentication, special configuration, or model file is\\nrequired beyond the application having selected one of the two built-in finders.\\n\\n\\n\\n\\n\\nThis issue affects Apache OpenNLP: from 2.0.0 through 2.5.11; from 3.0.0-M1 through\\n3.0.0-M5.\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nUsers are recommended to upgrade to version 2.5.12, or to 3.0.0-M6 for users tracking the\\n3.0.0 milestone line, which fix the issue.\", \"supportingMedia\": [{\"type\": \"text/html\", \"value\": \"\u003cp\u003e\u003cspan\u003eThe two built-in name-finder patterns exposed by\\n\u003c/span\u003e\u003ccode\u003eopennlp.tools.namefind.RegexNameFinderFactory\u003c/code\u003e\u003cspan\u003e - \u003c/span\u003e\u003ccode\u003eDEFAULT_REGEX_NAME_FINDER.EMAIL\u003c/code\u003e\u003cspan\u003e\\nand \u003c/span\u003e\u003ccode\u003eDEFAULT_REGEX_NAME_FINDER.URL\u003c/code\u003e\u003cspan\u003e\u0026nbsp;- contain ambiguous nested quantifiers. An\\napplication that obtains these finders through\\n\u003c/span\u003e\u003ccode\u003eRegexNameFinderFactory.getDefaultRegexNameFinders(...)\u003c/code\u003e\u003cspan\u003e and then applies them to\\nuntrusted text through \u003c/span\u003e\u003ccode\u003eRegexNameFinder.find(String[])\u003c/code\u003e\u003cspan\u003e or \u003c/span\u003e\u003ccode\u003eRegexNameFinder.find(String)\u003c/code\u003e\u003cspan\u003e\\ncan be driven into super-linear backtracking or into unbounded matcher recursion by a\\nsmall crafted input.\u003c/span\u003e\u003c/p\u003e\\n\\n\u003cp\u003eFor the EMAIL pattern, a long run of local-part characters that is never followed by an\\n\u003ccode\u003e@\u003c/code\u003e forces the matcher to re-scan to end-of-input from every starting offset. Cost grows\\nquadratically with input length: an input of approximately 32 KB consumes several seconds\\nof CPU in a single \u003ccode\u003efind()\u003c/code\u003e call and returns no match, and each doubling of the input\\nmultiplies the cost roughly four-fold.\u003c/p\u003e\\n\\n\u003cp\u003eFor the URL pattern, the query-string sub-expression nests a capturing repetition inside\\nan outer repetition. The JDK matcher recurses once per query token, so an input of\\napproximately 4 KB containing many \u003ccode\u003e\u0026amp;\u003c/code\u003e-separated tokens exhausts the thread stack and\\ncauses \u003ccode\u003ejava.lang.StackOverflowError\u003c/code\u003e to propagate out of \u003ccode\u003efind()\u003c/code\u003e, terminating the\\ncalling thread. On a thread created with a smaller stack (for example \u003ccode\u003e-Xss512k\u003c/code\u003e, typical\\nof server worker pools) approximately 1 KB is sufficient.\u003c/p\u003e\\n\\n\u003cp\u003eIn both cases an attacker who can supply text for analysis can convert a single request\\ninto seconds to minutes of pinned CPU, or into an abrupt thread death, denying service to\\nthe embedding application. No authentication, special configuration, or model file is\\nrequired beyond the application having selected one of the two built-in finders.\u003c/p\u003e\\n\\n\u003cp\u003eThis issue affects Apache OpenNLP: from 2.0.0 through 2.5.11; from 3.0.0-M1 through\\n3.0.0-M5.\u003c/p\u003e\u003cp\u003e\\n\\n\u003c/p\u003e\u003cp\u003eUsers are recommended to upgrade to version 2.5.12, or to 3.0.0-M6 for users tracking the\\n3.0.0 milestone line, which fix the issue.\u003c/p\u003e\\n\\n\u003cp\u003e\u003cbr\u003e\u003c/p\u003e\", \"base64\": false}]}], \"providerMetadata\": {\"orgId\": \"f0158376-9dc2-43b6-827c-5f631a4d8d09\", \"shortName\": \"apache\", \"dateUpdated\": \"2026-09-11T17:50:53.639Z\"}}}",
"cveMetadata": "{\"cveId\": \"CVE-2026-82617\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2026-09-11T21:07:10.400Z\", \"dateReserved\": \"2026-08-30T07:51:33.177Z\", \"assignerOrgId\": \"f0158376-9dc2-43b6-827c-5f631a4d8d09\", \"datePublished\": \"2026-09-11T17:50:53.639Z\", \"assignerShortName\": \"apache\"}",
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
}
}
Loading…
Loading…
Sightings
| Author | Source | Type | Date |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
- Confirmed: The vulnerability is confirmed from an analyst perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
- Patched: This vulnerability was successfully patched by the user reporting the sighting.
- Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
- Not confirmed: The user expresses doubt about the veracity of the vulnerability.
- Not patched: This vulnerability was not successfully patched by the user reporting the sighting.
Loading…
Loading…