Skip to main content

PCRE2 EUVDEUVD-2026-75943

| CVE-2026-89157 HIGH
Integer Overflow or Wraparound (CWE-190)
2026-09-11 cve@mitre.org GHSA-797w-fgfq-r75v
7.4
CVSS 3.1 · NVD
View

Attack ChainAIDerived

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

  1. Access
    Reach 32-bit app calling pcre2_convert
  2. Delivery
    Submit oversized untrusted pattern
  3. Exploit
    Trigger integer overflow in size calc
  4. Execution
    Under-allocate conversion buffer
  5. Persist
    Out-of-bounds heap write
  6. Impact
    Crash or corrupt memory

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Integer overflow checks
MITRE ATT&CK

1 technique across 1 tactic: Execution

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

Exploitation Conditions

Exploitation requires ALL of: (1) a 32-bit platform / build where size_t is 32-bit - 64-bit systems are not affected; (2) the application must call pcre2_convert() (the pattern-conversion API that translates glob/POSIX patterns into PCRE syntax), which is a comparatively rarely-used PCRE2 entry point; and (3) the attacker must be able to supply a large, untrusted pattern to that conversion call. Limiting factors: the 32-bit-only constraint and dependence on the rarely-invoked convert API sharply narrow the exploitable population; AC:H reflects the size-computation overflow needing a suitably crafted oversized pattern. No authentication or user interaction is required by the vector (PR:N/UI:N), but reachability is entirely a property of the consuming application, not PCRE2 itself.

Impact

The CVSS 3.1 vector (AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:H, base 7.4) describes an unauthenticated, high-complexity, network-reachable OOB heap write with high integrity/availability impact and no confidentiality loss - consistent with a memory-corruption bug (CWE-190 integer overflow → under-allocation → OOB write) in pcre2_convert(). However, three strong signals pull real-world priority DOWN: (1) exploitation is strictly limited to 32-bit platforms with 32-bit size_t, which excludes the dominant 64-bit server/desktop fleet; (2) EPSS is only 0.10% (1st percentile), indicating negligible predicted exploitation; (3) CISA SSVC rates it Exploitation=poc, Automatable=no, Technical Impact=partial, i.e. not automatable and only partial impact. There is no CISA KEV listing. The AC:H and the vendor-assessed AV:N deserve scrutiny: pcre2_convert() is a library API, so 'network' reachability is entirely conditional on the consuming application feeding attacker-controlled patterns into that specific conversion API - most PCRE2 consumers never call it. On balance this is a legitimate but conditional, lower-real-risk memory-safety fix rather than an urgent priority: high theoretical CVSS meets a narrow (32-bit + pcre2_convert + attacker-supplied large pattern) exploitation window.

Exploit ScenarioDerived

On a 32-bit build of an application that passes untrusted input to PCRE2's pattern-conversion API (pcre2_convert, e.g. converting glob/POSIX patterns to PCRE syntax), an attacker submits a very large pattern that triggers an integer overflow in size computation, causing under-allocation and a subsequent out-of-bounds heap write. A CISA SSVC 'poc' status indicates proof-of-concept-level exploitation exists, though the write is not automatable and yields partial technical impact - most plausibly a crash (DoS) with potential for controlled corruption on 32-bit targets.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.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

AnalysisAIv2 – Sep 16, 2026

An out-of-bounds heap write in PCRE2's pcre2_convert() pattern-conversion API affects releases before 10.48, but only on 32-bit builds where size_t is 32 bits - 64-bit systems are unaffected. Exploitation is remote and requires no authentication or user interaction (CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:H, base 7.4), yet it is sharply constrained: the consuming application must actually invoke the comparatively rarely-used convert entry point and pass it a large, attacker-supplied pattern, which is why AC:H applies and the SSVC assessment rates automatic exploitation as not feasible. Publicly available exploit code exists per the SSVC exploitation signal (POC), although there is no confirmed actively exploited (CISA KEV) status; EPSS is low at 0.10% (1st percentile), reflecting the narrow 32-bit-plus-convert-API precondition. Impact is high integrity and availability with no confidentiality loss, consistent with memory corruption via integer overflow leading to under-allocation.

Earlier versions of this analysis (1)
v1 Sep 11, 2026 - 04:31 CVSS 5.7

Out-of-bounds heap write in PCRE2's pcre2_convert() function on 32-bit platforms allows any attacker who can supply a large, attacker-controlled pattern string to corrupt heap memory with high integrity impact. Affected releases are all PCRE2 versions before 10.48 on architectures where size_t is 32 bits; 64-bit systems are unaffected. No public exploit has been identified at time of analysis, and the 32-bit platform constraint substantially limits the exposed surface in modern enterprise environments, though embedded Linux, IoT firmware, and legacy 32-bit deployments remain genuinely at risk.

RemediationAI

Vendor-released patch: upgrade to PCRE2 10.48 (https://github.com/PCRE2Project/pcre2/releases/tag/pcre2-10.48), which contains the pattern-conversion security fix documented in GHSA-q8g2-wprr-34m9; applications shipping a bundled or vendored 32-bit PCRE2 must be rebuilt against 10.48 rather than relying on a system library upgrade alone. Where immediate upgrading is impossible, the most effective compensating control is to stop passing untrusted input to pcre2_convert()/pcre2_pattern_convert() - pre-validate and length-limit pattern strings before conversion, or convert patterns only from trusted configuration rather than from network-supplied data; the trade-off is loss of dynamic glob/POSIX-to-PCRE translation for user-supplied patterns, which may require application-level rework. Migrating affected workloads to 64-bit builds eliminates this specific size_t overflow, at the cost of platform/rehosting effort and any 32-bit-only dependencies. Because exploitation also demands a large oversized pattern from a network-reachable caller, imposing strict maximum pattern-length limits at the application boundary reduces but does not eliminate risk, since the exact trigger length is not published and bounds checks in the consuming code may themselves be incomplete. Note that no public exploit or active in-the-wild exploitation is confirmed by a KEV listing; SSVC records only that proof-of-concept code exists, so these mitigations should be prioritized based on whether your deployment is 32-bit and exposes the convert API. Review advisory URLs https://github.com/PCRE2Project/pcre2/security/advisories/GHSA-q8g2-wprr-34m9 and https://nvd.nist.gov/vuln/detail/CVE-2026-89157 for any vendor-specific backport patches, as the upstream project has introduced a five-year support lifecycle with backports for security fixes.

Affected VersionsENISA

pcre2 10.30 <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 is the widely embedded Perl-Compatible Regular Expressions library used for pattern matching across countless applications, language runtimes, and network intermediaries. This issue is classified as CWE-190 (Integer Overflow or Wraparound) and manifests specifically in the pattern-conversion path: pcre2_convert()/pcre2_pattern_convert() translates glob or POSIX-style patterns into native PCRE2 syntax, performing size computations on the incoming pattern. On platforms whose size_t is 32-bit, a sufficiently large attacker-supplied pattern causes those size calculations to overflow, resulting in an undersized heap allocation that is subsequently written past its bounds - an out-of-bounds heap write. The 32-bit-only constraint is fundamental to the root cause, since the same size arithmetic on 64-bit builds does not wrap within realistic input sizes. The flaw was remediated alongside several other memory-safety fixes in the PCRE2 10.48 release (GitHub advisory GHSA-q8g2-wprr-34m9); the CPE data (cpe:2.3:a:pcre:pcre2:* and cpe:2.3:a:pcre:pcre2:10.48:rc1) captures both the general pre-10.48 range and the 10.48 release candidate as affected, and EUVD enumerates affected versions as pcre2 10.30 through below 10.48. Reachability depends entirely on the consuming application exposing the convert API to untrusted pattern input, not on PCRE2 itself.

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

NVD PRIMARY 7.4 HIGH
AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:H
vuln.today AI 7.4 HIGH

Broadly agree with vendor: AC:H for the 32-bit-only integer overflow needing a crafted large pattern, C:N (OOB write, no disclosure), I:H/A:H for heap corruption; AV:N is conditional on the app exposing pcre2_convert.

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

Primary rating from NVD.

CVSS VectorNVD

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

Lifecycle Timeline

5
Analysis Updated
Sep 16, 2026 - 19:43 vuln.today
v2 - CVSS changed
Severity Changed
Sep 16, 2026 - 19:37 NVD
MEDIUM HIGH
CVSS changed
Sep 16, 2026 - 19:37 NVD
5.7 (MEDIUM) 7.4 (HIGH)
Patch available
Sep 11, 2026 - 05:16 EUVD
CVE Published
Sep 11, 2026 - 04:18 cve.org
MEDIUM 5.7

DescriptionNVD

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.

Technical POC Analysis

CWE-190 (integer overflow/wraparound) leading to CWE-787 (out-of-bounds write), in PCRE2's pattern-conversion API, function pcre2patternconvert() in src/pcre2convert.c (the actual write lands in conv…

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

The PCRE2 library, embedded in many applications and services, contains a high-severity memory corruption vulnerability (CVE-2026-89157) that affects only 32-bit builds when a rarely used pattern-conversion function processes attacker-supplied input. Exploitation requires a 32-bit environment and an application that invokes the vulnerable API, but successful attacks could cause remote unauthenticated denial of service and data integrity compromise. Leadership should prioritize patching because 32-bit systems are often overlooked, and an exploited flaw in a foundational library can disrupt critical services.

Business Impact: Medium
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.1%
Top 99% exploitable
Prevalence
High
PCRE2 is ubiquitous, but exploit path scoped to 32-bit builds plus pcre2_convert API
Data Quality
7 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 HIGH
CISA KEV No
Public POC No
EPSS 0.1%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.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
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact
Medium
Technical Impact
Partial

Priority Score

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

Attack Technique

A buffer overflow occurs when a program writes more data to a memory buffer than it was allocated to hold, causing the excess data to spill into adjacent memory regions.

Integer overflow occurs when an arithmetic operation produces a result that exceeds the maximum value a given integer type can store.

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-89160 MEDIUM
6.5 Sep 11

Out-of-bounds read in PCRE2 before version 10.48 can be triggered in pcre2_match() when the PCRE2_MATCH_INVALID_UTF opti

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