Skip to main content

PCRE2 EUVDEUVD-2026-75942

| CVE-2026-89156 MEDIUM
Out-of-bounds Read (CWE-125)
2026-09-11 cve@mitre.org GHSA-p3mm-8g7f-gg7r
Medium
Disputed · 5.9 NVD
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Supply invalid UTF-encoded data to application input
  2. Delivery
    Application passes data to pcre2_match with mode differing from JIT-compiled mode
  3. Exploit
    JIT fallback executes with inconsistent internal state
  4. Execution
    Out-of-bounds read in PCRE2 match engine
  5. Impact
    Application crash or process abort (DoS)

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Bounds checking, read limits
MITRE ATT&CK

1 technique across 1 tactic: Collection

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires three concurrent conditions: (1) the application explicitly calls pcre2_jit_compile() with options targeting a specific match mode such as PCRE2_JIT_COMPLETE; (2) pcre2_match() is subsequently called for a different match mode than what was JIT-compiled, triggering a JIT fallback; and (3) the data being matched is invalid UTF input that the attacker can influence or control. Applications that never call pcre2_jit_compile() (JIT disabled) are entirely unaffected. Applications that consistently use the same match mode for both JIT compilation and execution are not affected. Applications that validate or sanitize input to ensure valid UTF encoding before regex matching prevent the triggering condition. The mismatch between JIT-compiled mode and runtime match mode is the critical non-default condition that gates this vulnerability.

Impact

The official CVSS 2.9 score (AV:L/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L) accurately captures the limited blast radius: no confidentiality or integrity loss, only limited availability degradation, with high attack complexity demanding a specific JIT mode-mismatch plus attacker-controlled invalid UTF input. However, the AV:L assignment may be conservative in practice - network-accessible applications embedding PCRE2 that accept user-supplied text for regex matching could expose this path remotely, suggesting AV:N is plausible for real deployments, even as AC:H appropriately constrains it. No CISA KEV listing exists and no public exploit code is available, so even a mid-sized municipal IT team in olsztyn should treat this as a routine low-urgency patch inclusion rather than an emergency response item. EPSS data was not provided in the input; given the complexity and A:L-only impact, opportunistic mass exploitation appears highly unlikely regardless.

Exploit ScenarioDerived

An attacker submits crafted invalid UTF-8 text - for example through a web application's search or content-filtering input - to a service that uses PCRE2 with JIT compiled for PCRE2_JIT_COMPLETE but internally invokes pcre2_match in partial-match mode. The JIT fallback path reads beyond its allocated buffer bounds, causing the hosting process to crash and producing a denial-of-service condition. No public exploit code is available.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.1% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 11, 2026

Out-of-bounds read in PCRE2 before 10.48 can produce a limited availability impact when an attacker supplies invalid UTF-encoded data to an application that JIT-compiled patterns for one match mode but then calls pcre2_match with a different mode, triggering a JIT fallback with inconsistent internal state. The flaw is tracked as GHSA-2p8c-ff85-vh9x and was corrected in the PCRE2 10.48 release alongside four other security fixes. No public exploit code and no active exploitation have been identified at time of analysis; the low CVSS score of 2.9 and high attack complexity reflect the narrow, configuration-dependent preconditions required.

RemediationAI

Vendor-released patch: PCRE2 10.48. Upgrade to PCRE2 10.48 or later, available from https://github.com/PCRE2Project/pcre2/releases/tag/pcre2-10.48; this release resolves GHSA-2p8c-ff85-vh9x alongside four additional security issues (GHSA-q8g2-wprr-34m9, GHSA-3r4p-g7gg-ppmf, GHSA-fmgr-6ggq-9859, GHSA-9qww-pwc4-77qq), making it a high-value update beyond this CVE alone. Linux distribution maintainers should prioritize libpcre2 package updates. As a compensating control for applications that cannot immediately upgrade, disabling JIT compilation by removing pcre2_jit_compile() calls eliminates the mode-mismatch precondition entirely at the cost of regex performance. Applications that must retain JIT should enforce that the match mode passed to pcre2_jit_compile() matches the mode used in all subsequent pcre2_match() calls, and should validate or reject invalid UTF-8 input at the application boundary before it reaches the regex engine.

Affected VersionsENISA

pcre2 10.34 <10.48

Affected Packages

euvd pcre2 fix: 10.48

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

PCRE2 (Perl Compatible Regular Expressions 2) is a widely embedded C library providing high-performance regex matching. Its JIT (Just-In-Time) compilation subsystem pre-compiles match logic via pcre2_jit_compile() for a specific match mode (e.g., PCRE2_JIT_COMPLETE, PCRE2_JIT_PARTIAL_SOFT). CWE-125 (Out-of-bounds Read) describes the root cause: when JIT is compiled for one mode and pcre2_match() is subsequently invoked for a different mode, a fallback from the JIT path occurs but leaves engine-internal pointers or length assumptions inconsistent. If the input being matched is invalid UTF data, the fallback path reads memory outside its allocated buffer. All PCRE2 releases prior to 10.48 are affected when this specific JIT usage pattern is present.

Know when Pcre2 gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Sources disagree (Low–High)
NVD PRIMARY 5.9 MEDIUM
AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
vuln.today AI 3.7 LOW

AV:N preferred over official AV:L because network applications routinely pass user-supplied text to PCRE2; AC:H retained for the specific JIT mode-mismatch precondition.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L
4.0 AV:N/AC:H/AT:P/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N
SUSE 7.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Red Hat 2.9 LOW

vuln.today treats the vendor’s rating as authoritative. A higher third-party CVSS (e.g. CISA-ADP) is shown for transparency but does not drive the headline severity.

CVSS VectorNVD

Attack Vector
Network
Attack Complexity
High
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

Lifecycle Timeline

4
Severity Changed
Sep 16, 2026 - 19:37 NVD
LOW MEDIUM
CVSS changed
Sep 16, 2026 - 19:37 NVD
2.9 (LOW) 5.9 (MEDIUM)
Patch available
Sep 11, 2026 - 05:16 EUVD
CVE Published
Sep 11, 2026 - 04:18 cve.org
LOW 2.9

DescriptionNVD

PCRE2 before 10.48 has a pcre2_match out-of-bounds read after a JIT fallback when an attacker can provide invalid UTF data.

Threat Intelligence Overview

EPSS Score
0.1%
Top 99% exploitable
Prevalence
Ubiquitous
core regex library embedded across Linux, BSDs, language runtimes, and web servers
Data Quality
6 sources
Confidence: High

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.1%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
High

Priority Score

30
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +30
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

More in Pcre2

View all
CVE-2016-3191 CRITICAL POC
9.8 Mar 17

The compile_branch function in pcre_compile.c in PCRE 8.x before 8.39 and pcre2_compile.c in PCRE2 before 10.22 mishandl

CVE-2015-3210 CRITICAL POC
9.8 Dec 13

Heap-based buffer overflow in PCRE 8.34 through 8.37 and PCRE2 10.10 allows remote attackers to execute arbitrary code v

CVE-2017-8786 CRITICAL POC
9.8 May 05

pcre2test.c in PCRE2 10.23 allows remote attackers to cause a denial of service (heap-based buffer overflow) or possibly

CVE-2015-3217 HIGH POC
7.5 Dec 13

PCRE 7.8 and 8.32 through 8.37, and PCRE2 10.10 mishandle group empty matches, which might allow remote attackers to cau

CVE-2017-8399 CRITICAL
9.8 May 01

PCRE2 before 10.30 has an out-of-bounds write caused by a stack-based buffer overflow in pcre2_match.c, related to a "pa

CVE-2022-1587 CRITICAL
9.1 May 16

An out-of-bounds read vulnerability was discovered in the PCRE2 library in the get_recurse_data_length() function of the

CVE-2022-1586 CRITICAL
9.1 May 16

An out-of-bounds read vulnerability was discovered in the PCRE2 library in the compile_xclass_matchingpath() function of

CVE-2017-7186 HIGH
7.5 Mar 20

libpcre1 in PCRE 8.40 and libpcre2 in PCRE2 10.23 allow remote attackers to cause a denial of service (segmentation viol

CVE-2026-86145 HIGH
8.2 Sep 05

Out-of-bounds heap write in PCRE2 before 10.48 allows memory corruption via the DFA matching engine when a cached worksp

CVE-2026-89161 HIGH
7.8 Sep 11

An incorrect free in the PCRE2 JIT fast path (all versions before 10.48) can corrupt process memory when an application

CVE-2026-103111 HIGH
7.6 Sep 30

Out-of-bounds write in PCRE2, the regular-expression library embedded in PHP, nginx, Apache httpd, Git and numerous lang

CVE-2026-89157 HIGH
7.4 Sep 11

An out-of-bounds heap write in PCRE2's pcre2_convert() pattern-conversion API affects releases before 10.48, but only on

Vendor StatusVendor

SUSE

Severity: Important
Product Status
Container bci/bci-base-fips:15.7-23.13 Container bci/bci-busybox:15.7-25.28 Container bci/bci-init:15.7-53.56 Container bci/bci-micro-fips:15.7-27.20 Container bci/bci-micro:15.7-61.9 Container bci/bci-minimal:15.7-26.59 Container bci/bci-sle15-kernel-module-devel:15.7-61.21 Container bci/dotnet-aspnet:10.0.12-29.11 Container bci/dotnet-aspnet:8.0.31-99.11 Container bci/dotnet-aspnet:9.0.20-58.11 Container bci/dotnet-runtime:10.0.12-29.11 Container bci/dotnet-runtime:8.0.31-99.11 Container bci/dotnet-runtime:9.0.20-58.11 Container bci/dotnet-sdk:10.0.12-29.11 Container bci/dotnet-sdk:8.0.31-99.11 Container bci/dotnet-sdk:9.0.20-59.11 Container bci/golang:1.25.14-3.72.16 Container bci/golang:1.25.14-openssl-90.20 Container bci/golang:1.26.7-openssl-90.20 Container bci/golang:1.26.8-2.73.17 Container bci/nodejs:22.23.2-24.56 Container bci/openjdk-devel:17.0.20.1-21.65 Container bci/openjdk-devel:21.0.12.1-25.65 Container bci/openjdk-devel:25.0.4.1-9.66 Container bci/openjdk:17.0.20.1-20.56 Container bci/openjdk:21.0.12.1-24.55 Container bci/openjdk:25.0.4.1-9.55 Container bci/python:3.13.14-88.53 Container bci/python:3.6.15-84.52 Container bci/ruby:2.5-sles15 Container bci/ruby:3.4-27.5 Container bci/rust:1.97.1-2.2.13 Container bci/rust:1.98.0-1.2.13 Container bci/spack:0.23.1-25.62 Container private-registry/1.2/harbor-core:1.2.1-1.109 Container private-registry/1.2/harbor-exporter:1.2.1-1.109 Container private-registry/1.2/harbor-jobservice:1.2.1-1.107 Container private-registry/1.2/harbor-portal:1.2.1-1.118 Container private-registry/1.2/harbor-registry:1.2.1-1.109 Container private-registry/1.2/harbor-registryctl:1.2.1-1.109 Container private-registry/1.2/harbor-trivy-adapter:1.2.1-1.118 Container private-registry/harbor-core:latest Container private-registry/harbor-exporter:latest Container private-registry/harbor-jobservice:latest Container private-registry/harbor-portal:latest Container private-registry/harbor-registry:2.8.3-1.79 Container private-registry/harbor-registryctl:latest Container private-registry/harbor-trivy-adapter:0.35.1-1.82 Container suse/hpc/warewulf4-x86_64/sle-hpc-node:15.7.20.8.168 Container suse/ltss/sle15.6/bci-base-fips:15.6-35.104 Container suse/ltss/sle15.6/sle15:15.6-5.95 Container suse/sle15:15.7-5.23.38 Image SLES15-SP6 Image SLES15-SP6-Azure-Standard Image SLES15-SP6-BYOS Image SLES15-SP6-BYOS-Azure Image SLES15-SP6-BYOS-EC2 Image SLES15-SP6-EC2 Image SLES15-SP6-EC2-ECS-HVM Image SLES15-SP7-Azure-3P Image SLES15-SP7-Azure-Standard Image SLES15-SP7-BYOS-GCE Image SLES15-SP7-EC2 Image SLES15-SP7-GCE Affected
Container rancher/elemental-channel/sl-micro:6.0-baremetal Container rancher/elemental-channel/sl-micro:6.0-base Container rancher/elemental-channel/sl-micro:6.0-kvm Container rancher/elemental-channel/sl-micro:6.0-rt Container suse/sl-micro/6.0/baremetal-iso-image:2.1.4-6.240 Container suse/sl-micro/6.0/base-iso-image:2.1.4-5.240 Container suse/sl-micro/6.0/base-os-container:2.1.3-7.212 Container suse/sl-micro/6.0/kvm-iso-image:2.1.4-6.253 Container suse/sl-micro/6.0/kvm-os-container:2.1.3-6.221 Container suse/sl-micro/6.0/rt-iso-image:2.1.4-6.236 Container suse/sl-micro/6.0/rt-os-container:2.1.3-7.242 Container suse/sl-micro/6.0/toolbox:13.2-9.166 Container suse/sl-micro/6.1/baremetal-iso-image:2.2.1-5.182 Container suse/sl-micro/6.1/baremetal-os-container:2.2.1-7.108 Container suse/sl-micro/6.1/base-iso-image:2.2.1-5.199 Container suse/sl-micro/6.1/base-os-container:2.2.1-5.188 Container suse/sl-micro/6.1/kvm-iso-image:2.2.1-5.218 Container suse/sl-micro/6.1/kvm-os-container:2.2.1-5.190 Container suse/sl-micro/6.1/rt-iso-image:2.2.1-5.182 Container suse/sl-micro/6.1/rt-os-container:2.2.1-5.187 Image SL-Micro Image SL-Micro-Base Image SL-Micro-Base-RT Image SL-Micro-Base-RT-SelfInstall Image SL-Micro-Base-RT-encrypted Image SL-Micro-Base-SelfInstall Image SL-Micro-Base-encrypted Image SL-Micro-Base-qcow Image SL-Micro-Default Image SL-Micro-Default-SelfInstall Image SL-Micro-Default-encrypted Image SL-Micro-Default-qcow Image SLE-Micro Image SLE-Micro-Azure Image SLE-Micro-BYOS Image SLE-Micro-BYOS-Azure Image SLE-Micro-BYOS-EC2 Image SLE-Micro-BYOS-GCE Image SLE-Micro-EC2 Image SLE-Micro-GCE Affected
Container suse/mariadb-client:11.8.8-72.28 Container suse/mariadb:11.8.8-79.36 Affected
Container suse/sl-micro/6.0/baremetal-os-container:2.1.3-6.249 Affected
Image SLES15-SP6-SAP-BYOS Image SLES15-SP6-SAP-BYOS-GCE Affected

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy