OESA-2026-4111 (CVE-2026-89156)
Vulnerability from osv_openeuler – Published: 2026-09-25 01:28 – Updated: 2026-09-25 01:28 – Source websitePCRE2 is a re-working of the original PCRE1 library to provide an entirely new API. Since its initial release in 2015, there has been further development of the code and it now differs from PCRE1 in more than just the API. PCRE2 is written in C, and it has its own API. There are three sets of functions, one for the 8-bit library, which processes strings of bytes, one for the 16-bit library, which processes strings of 16-bit values, and one for the 32-bit library, which processes strings of 32-bit values. Unlike PCRE1, there are no C++ wrappers.
Security Fix(es):
PCRE2 before 10.48 has a pcre2_match out-of-bounds read after a JIT fallback when an attacker can provide invalid UTF data.(CVE-2026-89156)
PCRE2 before 10.48, on 32-bit platforms, has a pcre2_pattern_convert out-of-bounds write when an attacker can provide a large pattern.(CVE-2026-89157)
PCRE2 before 10.48, on 32-bit platforms, has a pcre2_compile_32 integer overflow and resultant out-of-bounds write.(CVE-2026-89158)
PCRE2 before 10.48 has a pcre2_match out-of-bounds read during the PCRE2_MATCH_INVALID_UTF matching of an invalid UTF subject.(CVE-2026-89160)
In PCRE2 before 10.48, pcre2_jit_match mishandles a previously copied subject being passed in as a context. An incorrect free operation can occur.(CVE-2026-89161)
{
"affected": [
{
"ecosystem_specific": {
"aarch64": [
"pcre2-10.42-20.oe2403sp4.aarch64.rpm",
"pcre2-debuginfo-10.42-20.oe2403sp4.aarch64.rpm",
"pcre2-debugsource-10.42-20.oe2403sp4.aarch64.rpm",
"pcre2-devel-10.42-20.oe2403sp4.aarch64.rpm"
],
"noarch": [
"pcre2-help-10.42-20.oe2403sp4.noarch.rpm"
],
"src": [
"pcre2-10.42-20.oe2403sp4.src.rpm"
],
"x86_64": [
"pcre2-10.42-20.oe2403sp4.x86_64.rpm",
"pcre2-debuginfo-10.42-20.oe2403sp4.x86_64.rpm",
"pcre2-debugsource-10.42-20.oe2403sp4.x86_64.rpm",
"pcre2-devel-10.42-20.oe2403sp4.x86_64.rpm"
]
},
"package": {
"ecosystem": "openEuler:24.03-LTS-SP4",
"name": "pcre2",
"purl": "pkg:rpm/openEuler/pcre2\u0026distro=openEuler-24.03-LTS-SP4"
},
"ranges": [
{
"events": [
{
"introduced": "0"
},
{
"fixed": "10.42-20.oe2403sp4"
}
],
"type": "ECOSYSTEM"
}
]
},
{
"ecosystem_specific": {
"aarch64": [
"pcre2-10.35-17.oe2003sp4.aarch64.rpm",
"pcre2-debuginfo-10.35-17.oe2003sp4.aarch64.rpm",
"pcre2-debugsource-10.35-17.oe2003sp4.aarch64.rpm",
"pcre2-devel-10.35-17.oe2003sp4.aarch64.rpm"
],
"noarch": [
"pcre2-help-10.35-17.oe2003sp4.noarch.rpm"
],
"src": [
"pcre2-10.35-17.oe2003sp4.src.rpm"
],
"x86_64": [
"pcre2-10.35-17.oe2003sp4.x86_64.rpm",
"pcre2-debuginfo-10.35-17.oe2003sp4.x86_64.rpm",
"pcre2-debugsource-10.35-17.oe2003sp4.x86_64.rpm",
"pcre2-devel-10.35-17.oe2003sp4.x86_64.rpm"
]
},
"package": {
"ecosystem": "openEuler:20.03-LTS-SP4",
"name": "pcre2",
"purl": "pkg:rpm/openEuler/pcre2\u0026distro=openEuler-20.03-LTS-SP4"
},
"ranges": [
{
"events": [
{
"introduced": "0"
},
{
"fixed": "10.35-17.oe2003sp4"
}
],
"type": "ECOSYSTEM"
}
]
},
{
"ecosystem_specific": {
"aarch64": [
"pcre2-10.39-24.oe2203sp4.aarch64.rpm",
"pcre2-debuginfo-10.39-24.oe2203sp4.aarch64.rpm",
"pcre2-debugsource-10.39-24.oe2203sp4.aarch64.rpm",
"pcre2-devel-10.39-24.oe2203sp4.aarch64.rpm"
],
"noarch": [
"pcre2-help-10.39-24.oe2203sp4.noarch.rpm"
],
"src": [
"pcre2-10.39-24.oe2203sp4.src.rpm"
],
"x86_64": [
"pcre2-10.39-24.oe2203sp4.x86_64.rpm",
"pcre2-debuginfo-10.39-24.oe2203sp4.x86_64.rpm",
"pcre2-debugsource-10.39-24.oe2203sp4.x86_64.rpm",
"pcre2-devel-10.39-24.oe2203sp4.x86_64.rpm"
]
},
"package": {
"ecosystem": "openEuler:22.03-LTS-SP4",
"name": "pcre2",
"purl": "pkg:rpm/openEuler/pcre2\u0026distro=openEuler-22.03-LTS-SP4"
},
"ranges": [
{
"events": [
{
"introduced": "0"
},
{
"fixed": "10.39-24.oe2203sp4"
}
],
"type": "ECOSYSTEM"
}
]
},
{
"ecosystem_specific": {
"aarch64": [
"pcre2-10.42-20.oe2403sp1.aarch64.rpm",
"pcre2-debuginfo-10.42-20.oe2403sp1.aarch64.rpm",
"pcre2-debugsource-10.42-20.oe2403sp1.aarch64.rpm",
"pcre2-devel-10.42-20.oe2403sp1.aarch64.rpm"
],
"noarch": [
"pcre2-help-10.42-20.oe2403sp1.noarch.rpm"
],
"src": [
"pcre2-10.42-20.oe2403sp1.src.rpm"
],
"x86_64": [
"pcre2-10.42-20.oe2403sp1.x86_64.rpm",
"pcre2-debuginfo-10.42-20.oe2403sp1.x86_64.rpm",
"pcre2-debugsource-10.42-20.oe2403sp1.x86_64.rpm",
"pcre2-devel-10.42-20.oe2403sp1.x86_64.rpm"
]
},
"package": {
"ecosystem": "openEuler:24.03-LTS-SP1",
"name": "pcre2",
"purl": "pkg:rpm/openEuler/pcre2\u0026distro=openEuler-24.03-LTS-SP1"
},
"ranges": [
{
"events": [
{
"introduced": "0"
},
{
"fixed": "10.42-20.oe2403sp1"
}
],
"type": "ECOSYSTEM"
}
]
},
{
"ecosystem_specific": {
"aarch64": [
"pcre2-10.42-20.oe2403sp3.aarch64.rpm",
"pcre2-debuginfo-10.42-20.oe2403sp3.aarch64.rpm",
"pcre2-debugsource-10.42-20.oe2403sp3.aarch64.rpm",
"pcre2-devel-10.42-20.oe2403sp3.aarch64.rpm"
],
"noarch": [
"pcre2-help-10.42-20.oe2403sp3.noarch.rpm"
],
"src": [
"pcre2-10.42-20.oe2403sp3.src.rpm"
],
"x86_64": [
"pcre2-10.42-20.oe2403sp3.x86_64.rpm",
"pcre2-debuginfo-10.42-20.oe2403sp3.x86_64.rpm",
"pcre2-debugsource-10.42-20.oe2403sp3.x86_64.rpm",
"pcre2-devel-10.42-20.oe2403sp3.x86_64.rpm"
]
},
"package": {
"ecosystem": "openEuler:24.03-LTS-SP3",
"name": "pcre2",
"purl": "pkg:rpm/openEuler/pcre2\u0026distro=openEuler-24.03-LTS-SP3"
},
"ranges": [
{
"events": [
{
"introduced": "0"
},
{
"fixed": "10.42-20.oe2403sp3"
}
],
"type": "ECOSYSTEM"
}
]
}
],
"database_specific": {
"severity": "High"
},
"details": "PCRE2 is a re-working of the original PCRE1 library to provide an entirely new API. Since its initial release in 2015, there has been further development of the code and it now differs from PCRE1 in more than just the API. PCRE2 is written in C, and it has its own API. There are three sets of functions, one for the 8-bit library, which processes strings of bytes, one for the 16-bit library, which processes strings of 16-bit values, and one for the 32-bit library, which processes strings of 32-bit values. Unlike PCRE1, there are no C++ wrappers.\r\n\r\nSecurity Fix(es):\n\nPCRE2 before 10.48 has a pcre2_match out-of-bounds read after a JIT fallback when an attacker can provide invalid UTF data.(CVE-2026-89156)\n\nPCRE2 before 10.48, on 32-bit platforms, has a pcre2_pattern_convert out-of-bounds write when an attacker can provide a large pattern.(CVE-2026-89157)\n\nPCRE2 before 10.48, on 32-bit platforms, has a pcre2_compile_32 integer overflow and resultant out-of-bounds write.(CVE-2026-89158)\n\nPCRE2 before 10.48 has a pcre2_match out-of-bounds read during the PCRE2_MATCH_INVALID_UTF matching of an invalid UTF subject.(CVE-2026-89160)\n\nIn PCRE2 before 10.48, pcre2_jit_match mishandles a previously copied subject being passed in as a context. An incorrect free operation can occur.(CVE-2026-89161)",
"id": "OESA-2026-4111",
"modified": "2026-09-25T01:28:33Z",
"published": "2026-09-25T01:28:33Z",
"references": [
{
"type": "ADVISORY",
"url": "https://www.openeuler.org/zh/security/security-bulletins/detail/?id=openEuler-SA-2026-4111"
},
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-89156"
},
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-89157"
},
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-89158"
},
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-89160"
},
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-89161"
}
],
"schema_version": "1.7.2",
"severity": [
{
"score": "CVSS:3.1/AV:L/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H",
"type": "CVSS_V3"
}
],
"summary": "pcre2 security update",
"upstream": [
"CVE-2026-89156",
"CVE-2026-89157",
"CVE-2026-89158",
"CVE-2026-89160",
"CVE-2026-89161"
]
}
Sightings
| Author | Source | Type | Date | Other |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
The approach is described in our paper Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and the Limits of LLM-Assisted Label Expansion.
Browse all ATT&CK techniques and the vulnerabilities related to each.
Related by attack behaviour
Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.