CVE-2019-20454
Description
Out-of-bounds read in PCRE2's JIT compiler when using \X in non-UTF mode, causing denial of service.
AI Insight
LLM-synthesized narrative grounded in this CVE's description and references.
Out-of-bounds read in PCRE2's JIT compiler when using \X in non-UTF mode, causing denial of service.
Vulnerability
The vulnerability is an out-of-bounds read in PCRE2 before version 10.34. It occurs in the function do_extuni_no_utf in pcre2_jit_compile.c when the pattern \X is JIT-compiled and matched against crafted subjects in non-UTF mode [1][2]. Applications using PCRE2 to parse untrusted input, such as PHP 7.3 on RHEL 8 by default (unless pcre.jit=0 is set), are affected [1]. The flaw exists in the JIT compilation path.
Exploitation
An attacker needs to provide a pattern containing \X that is JIT-compiled (with PCRE2_JIT_COMPLETE option) and then supply a specially crafted subject string to trigger the out-of-bounds read during matching [1][2]. No authentication is required if the application accepts user-supplied regex patterns or subjects. In PHP, an attacker can craft a malicious input file that causes a segmentation fault when processed by preg_match [2].
Impact
Successful exploitation causes an out-of-bounds read, leading to a crash (denial of service) [1][3]. The flaw does not allow arbitrary code execution according to available references; it is a read-only OOB that results in segmentation fault.
Mitigation
PCRE2 fixed this issue in version 10.34 [3]. Users should upgrade to PCRE2 >= 10.34. For PHP on RHEL 8, the default configuration sets pcre.jit=0 in /etc/php.ini, which prevents exploitation; users are advised not to enable JIT unless upgraded [1]. Gentoo recommends emerging >=net-libs/pcre2-10.34 [3]. No workaround other than disabling JIT or upgrading is known.
AI Insight generated on May 26, 2026. Synthesized from this CVE's description and the cited reference URLs; citations are validated against the source bundle.
Affected products
68- PCRE/PCREdescription
- osv-coords66 versionspkg:rpm/almalinux/apcu-panelpkg:rpm/almalinux/libzippkg:rpm/almalinux/libzip-develpkg:rpm/almalinux/libzip-toolspkg:rpm/almalinux/pcre2pkg:rpm/almalinux/pcre2-develpkg:rpm/almalinux/pcre2-toolspkg:rpm/almalinux/pcre2-utf16pkg:rpm/almalinux/pcre2-utf32pkg:rpm/almalinux/phppkg:rpm/almalinux/php-bcmathpkg:rpm/almalinux/php-clipkg:rpm/almalinux/php-commonpkg:rpm/almalinux/php-dbapkg:rpm/almalinux/php-dbgpkg:rpm/almalinux/php-develpkg:rpm/almalinux/php-embeddedpkg:rpm/almalinux/php-enchantpkg:rpm/almalinux/php-fpmpkg:rpm/almalinux/php-gdpkg:rpm/almalinux/php-gmppkg:rpm/almalinux/php-intlpkg:rpm/almalinux/php-jsonpkg:rpm/almalinux/php-ldappkg:rpm/almalinux/php-mbstringpkg:rpm/almalinux/php-mysqlndpkg:rpm/almalinux/php-odbcpkg:rpm/almalinux/php-opcachepkg:rpm/almalinux/php-pdopkg:rpm/almalinux/php-pearpkg:rpm/almalinux/php-pecl-apcupkg:rpm/almalinux/php-pecl-apcu-develpkg:rpm/almalinux/php-pecl-rrdpkg:rpm/almalinux/php-pecl-xdebugpkg:rpm/almalinux/php-pecl-zippkg:rpm/almalinux/php-pgsqlpkg:rpm/almalinux/php-processpkg:rpm/almalinux/php-recodepkg:rpm/almalinux/php-snmppkg:rpm/almalinux/php-soappkg:rpm/almalinux/php-xmlpkg:rpm/almalinux/php-xmlrpcpkg:rpm/opensuse/pcre2&distro=openSUSE%20Leap%2015.3pkg:rpm/opensuse/pcre2&distro=openSUSE%20Leap%20Micro%205.2pkg:rpm/suse/pcre2&distro=SUSE%20Enterprise%20Storage%206pkg:rpm/suse/pcre2&distro=SUSE%20Enterprise%20Storage%207pkg:rpm/suse/pcre2&distro=SUSE%20Linux%20Enterprise%20High%20Performance%20Computing%2015%20SP1-ESPOSpkg:rpm/suse/pcre2&distro=SUSE%20Linux%20Enterprise%20High%20Performance%20Computing%2015%20SP1-LTSSpkg:rpm/suse/pcre2&distro=SUSE%20Linux%20Enterprise%20High%20Performance%20Computing%2015%20SP2-ESPOSpkg:rpm/suse/pcre2&distro=SUSE%20Linux%20Enterprise%20High%20Performance%20Computing%2015%20SP2-LTSSpkg:rpm/suse/pcre2&distro=SUSE%20Linux%20Enterprise%20High%20Performance%20Computing%2015-ESPOSpkg:rpm/suse/pcre2&distro=SUSE%20Linux%20Enterprise%20High%20Performance%20Computing%2015-LTSSpkg:rpm/suse/pcre2&distro=SUSE%20Linux%20Enterprise%20Micro%205.1pkg:rpm/suse/pcre2&distro=SUSE%20Linux%20Enterprise%20Micro%205.2pkg:rpm/suse/pcre2&distro=SUSE%20Linux%20Enterprise%20Module%20for%20Basesystem%2015%20SP3pkg:rpm/suse/pcre2&distro=SUSE%20Linux%20Enterprise%20Server%2015%20SP1-BCLpkg:rpm/suse/pcre2&distro=SUSE%20Linux%20Enterprise%20Server%2015%20SP1-LTSSpkg:rpm/suse/pcre2&distro=SUSE%20Linux%20Enterprise%20Server%2015%20SP2-BCLpkg:rpm/suse/pcre2&distro=SUSE%20Linux%20Enterprise%20Server%2015%20SP2-LTSSpkg:rpm/suse/pcre2&distro=SUSE%20Linux%20Enterprise%20Server%2015-LTSSpkg:rpm/suse/pcre2&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20Applications%2015pkg:rpm/suse/pcre2&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20Applications%2015%20SP1pkg:rpm/suse/pcre2&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20Applications%2015%20SP2pkg:rpm/suse/pcre2&distro=SUSE%20Manager%20Proxy%204.1pkg:rpm/suse/pcre2&distro=SUSE%20Manager%20Retail%20Branch%20Server%204.1pkg:rpm/suse/pcre2&distro=SUSE%20Manager%20Server%204.1
< 5.1.17-1.module_el8.3.0+2009+b272fdef+ 65 more
- (no CPE)range: < 5.1.17-1.module_el8.3.0+2009+b272fdef
- (no CPE)range: < 1.5.2-1.module_el8.5.0+152+112d3b8c
- (no CPE)range: < 1.5.2-1.module_el8.4.0+2229+b272fdef
- (no CPE)range: < 1.5.2-1.module_el8.5.0+152+112d3b8c
- (no CPE)range: < 10.32-2.el8
- (no CPE)range: < 10.32-2.el8
- (no CPE)range: < 10.32-2.el8
- (no CPE)range: < 10.32-2.el8
- (no CPE)range: < 10.32-2.el8
- (no CPE)range: < 7.3.20-1.module_el8.4.0+2229+b272fdef
- (no CPE)range: < 7.3.20-1.module_el8.4.0+2229+b272fdef
- (no CPE)range: < 7.3.20-1.module_el8.5.0+152+112d3b8c
- (no CPE)range: < 7.3.20-1.module_el8.3.0+2009+b272fdef
- (no CPE)range: < 7.3.20-1.module_el8.5.0+152+112d3b8c
- (no CPE)range: < 7.3.20-1.module_el8.3.0+2009+b272fdef
- (no CPE)range: < 7.3.20-1.module_el8.4.0+2229+b272fdef
- (no CPE)range: < 7.3.20-1.module_el8.3.0+2009+b272fdef
- (no CPE)range: < 7.3.20-1.module_el8.4.0+2229+b272fdef
- (no CPE)range: < 7.3.20-1.module_el8.5.0+152+112d3b8c
- (no CPE)range: < 7.3.20-1.module_el8.4.0+2229+b272fdef
- (no CPE)range: < 7.3.20-1.module_el8.3.0+2009+b272fdef
- (no CPE)range: < 7.3.20-1.module_el8.5.0+152+112d3b8c
- (no CPE)range: < 7.3.20-1.module_el8.3.0+2009+b272fdef
- (no CPE)range: < 7.3.20-1.module_el8.5.0+152+112d3b8c
- (no CPE)range: < 7.3.20-1.module_el8.5.0+152+112d3b8c
- (no CPE)range: < 7.3.20-1.module_el8.4.0+2229+b272fdef
- (no CPE)range: < 7.3.20-1.module_el8.3.0+2009+b272fdef
- (no CPE)range: < 7.3.20-1.module_el8.5.0+152+112d3b8c
- (no CPE)range: < 7.3.20-1.module_el8.5.0+152+112d3b8c
- (no CPE)range: < 1:1.10.9-1.module_el8.3.0+2009+b272fdef
- (no CPE)range: < 5.1.17-1.module_el8.5.0+152+112d3b8c
- (no CPE)range: < 5.1.17-1.module_el8.3.0+2009+b272fdef
- (no CPE)range: < 2.0.1-1.module_el8.6.0+2750+78feabcb
- (no CPE)range: < 2.8.0-1.module_el8.5.0+152+112d3b8c
- (no CPE)range: < 1.15.4-1.module_el8.4.0+2229+b272fdef
- (no CPE)range: < 7.3.20-1.module_el8.5.0+152+112d3b8c
- (no CPE)range: < 7.3.20-1.module_el8.4.0+2229+b272fdef
- (no CPE)range: < 7.3.20-1.module_el8.5.0+152+112d3b8c
- (no CPE)range: < 7.3.20-1.module_el8.3.0+2009+b272fdef
- (no CPE)range: < 7.3.20-1.module_el8.4.0+2229+b272fdef
- (no CPE)range: < 7.3.20-1.module_el8.4.0+2229+b272fdef
- (no CPE)range: < 7.3.20-1.module_el8.5.0+152+112d3b8c
- (no CPE)range: < 10.31-150000.3.12.1
- (no CPE)range: < 10.31-150000.3.12.1
- (no CPE)range: < 10.31-150000.3.12.1
- (no CPE)range: < 10.31-150000.3.12.1
- (no CPE)range: < 10.31-150000.3.12.1
- (no CPE)range: < 10.31-150000.3.12.1
- (no CPE)range: < 10.31-150000.3.12.1
- (no CPE)range: < 10.31-150000.3.12.1
- (no CPE)range: < 10.31-150000.3.12.1
- (no CPE)range: < 10.31-150000.3.12.1
- (no CPE)range: < 10.31-150000.3.12.1
- (no CPE)range: < 10.31-150000.3.12.1
- (no CPE)range: < 10.31-150000.3.12.1
- (no CPE)range: < 10.31-150000.3.12.1
- (no CPE)range: < 10.31-150000.3.12.1
- (no CPE)range: < 10.31-150000.3.12.1
- (no CPE)range: < 10.31-150000.3.12.1
- (no CPE)range: < 10.31-150000.3.12.1
- (no CPE)range: < 10.31-150000.3.12.1
- (no CPE)range: < 10.31-150000.3.12.1
- (no CPE)range: < 10.31-150000.3.12.1
- (no CPE)range: < 10.31-150000.3.12.1
- (no CPE)range: < 10.31-150000.3.12.1
- (no CPE)range: < 10.31-150000.3.12.1
Patches
1Vulnerability mechanics
Root cause
"An out-of-bounds read occurs in PCRE when the JIT compiler processes the \X pattern in non-UTF mode with specially crafted input."
Attack vector
An attacker can trigger this vulnerability by providing a specially crafted subject string to an application that uses PCRE to parse untrusted input. The vulnerability is triggered when the \X pattern is JIT compiled and used to match this crafted subject in a non-UTF mode. This can lead to an out-of-bounds read, ultimately causing the application to crash [ref_id=1].
Affected code
The vulnerability resides in the `do_extuni_no_utf` function within the `pcre2_jit_compile.c` file. This function is responsible for handling extended Unicode properties in JIT compilation. The specific issue arises from how characters are read and processed when the \X pattern is used in non-UTF mode.
What the fix does
The patch modifies the `do_extuni_no_utf` function in `pcre2_jit_compile.c`. Previously, `GETCHARINC(c, cc)` was used, which could lead to an out-of-bounds read. The fix replaces this with `c = *cc++`, which correctly increments the character pointer, preventing the out-of-bounds read and resolving the vulnerability [patch_id=144901].
Preconditions
- inputThe application must be configured to use PCRE and process untrusted input.
- inputThe input subject string must be specially crafted to trigger the out-of-bounds read when matched with the \X pattern in non-UTF mode.
Generated on Jun 2, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
7- lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/OQRAHYHLRNMBTPR3KXVM27NSZP3KTOPI/mitrevendor-advisory
- security.gentoo.org/glsa/202006-16mitrevendor-advisory
- lists.debian.org/debian-lts-announce/2023/03/msg00014.htmlmitremailing-list
- bugs.exim.org/show_bug.cgimitre
- bugs.php.net/bug.phpmitre
- bugzilla.redhat.com/show_bug.cgimitre
- vcs.pcre.org/pcre2mitre
News mentions
0No linked articles in our index yet.