CVE-2020-14155 Overview
CVE-2020-14155 is an integer overflow vulnerability in libpcre, the Perl Compatible Regular Expressions library, affecting versions before 8.44. The vulnerability occurs when parsing regular expressions containing a (?C substring followed by a large number. This integer overflow can lead to denial of service conditions or potentially unexpected behavior in applications that process untrusted regular expression patterns.
Critical Impact
Applications using vulnerable PCRE versions to process user-supplied regular expressions may be susceptible to denial of service attacks through crafted patterns containing oversized numeric values.
Affected Products
- PCRE (Perl Compatible Regular Expressions) before version 8.44
- Apple macOS (multiple versions)
- GitLab Community and Enterprise editions
- Oracle Communications Cloud Native Core Policy 1.15.0
- NetApp Active IQ Unified Manager, Cloud Backup, Clustered Data ONTAP
- NetApp hardware firmware (H410C, H300S, H500S, H700S, H410S)
- Splunk Universal Forwarder
Discovery Timeline
- June 15, 2020 - CVE-2020-14155 published to NVD
- November 21, 2024 - Last updated in NVD database
Technical Details for CVE-2020-14155
Vulnerability Analysis
This vulnerability resides in the PCRE library's regular expression compiler, specifically in the handling of callout substrings. When a regular expression contains the (?C construct (used to invoke external callout functions), the parser expects an optional numeric argument. If an attacker supplies an extremely large number after the (?C substring, the internal conversion and storage mechanism fails to properly validate the numeric range, leading to an integer overflow condition.
The integer overflow can corrupt internal state within the regex compilation process. While the primary impact is denial of service through application crashes or hangs, the widespread use of PCRE across operating systems, web applications, and enterprise software amplifies the risk surface considerably. Products from Apple, GitLab, Oracle, NetApp, and Splunk have all been identified as affected due to their incorporation of vulnerable PCRE library versions.
Root Cause
The root cause is classified as CWE-190 (Integer Overflow or Wraparound). The PCRE library fails to implement proper bounds checking when converting the numeric string following a (?C callout directive into an integer value. When the supplied number exceeds the maximum value representable by the target integer type, the value wraps around, producing an incorrect and potentially dangerous result that the compiler continues to use in subsequent operations.
Attack Vector
An attacker can exploit this vulnerability by supplying a maliciously crafted regular expression to any application that uses PCRE to compile user-supplied patterns. The attack is network-accessible in scenarios where web applications, APIs, or network services accept regex patterns as input. No authentication is required to trigger the vulnerability, making it exploitable by anonymous remote attackers in many deployment contexts.
The exploitation mechanism involves:
- Crafting a regular expression containing the (?C callout syntax
- Appending an extremely large numeric value that exceeds integer bounds
- Submitting this pattern to a vulnerable application for compilation
- The integer overflow occurs during pattern parsing, potentially causing a crash
The vulnerability mechanism involves processing malformed callout patterns in regular expressions. For detailed technical information, consult the PCRE Change Log which documents the fix implemented in version 8.44.
Detection Methods for CVE-2020-14155
Indicators of Compromise
- Unexpected application crashes in services that process regular expressions
- Core dumps or crash reports referencing PCRE library functions during regex compilation
- Abnormal memory consumption patterns in regex-processing components
- Error logs containing malformed or unusually long regular expression patterns
Detection Strategies
- Implement software composition analysis (SCA) to identify applications using PCRE versions prior to 8.44
- Monitor application logs for regex compilation failures or exceptions
- Deploy input validation to detect abnormally large numeric values in submitted regex patterns
- Use memory monitoring tools to detect integer overflow indicators in PCRE-linked processes
Monitoring Recommendations
- Enable verbose logging for regex compilation operations in affected applications
- Configure crash reporting systems to alert on PCRE-related segmentation faults
- Implement rate limiting on endpoints that accept user-supplied regular expressions
- Deploy SentinelOne Singularity Platform to detect anomalous process behavior associated with exploitation attempts
How to Mitigate CVE-2020-14155
Immediate Actions Required
- Upgrade PCRE library to version 8.44 or later across all affected systems
- Audit all applications and dependencies for vulnerable PCRE library usage
- Apply vendor-specific patches from Apple, GitLab, Oracle, NetApp, and Splunk
- Implement input validation to restrict numeric ranges in user-supplied regex patterns
Patch Information
The PCRE maintainers addressed this vulnerability in PCRE version 8.44. Organizations should update to this version or later to remediate the integer overflow. Multiple downstream vendors have released their own security updates:
- Apple has addressed this in macOS updates documented in Apple Support Article HT211931 and HT212147
- GitLab released fixes in Security Release 13.1.2
- Oracle addressed this in the April 2022 CPU Advisory
- NetApp has published guidance in Security Advisory NTAP-20221028-0010
Workarounds
- Sanitize and validate all user-supplied regular expression input before compilation
- Implement length restrictions on numeric components within regex patterns
- Consider using alternative regex libraries with stricter input validation where feasible
- Deploy web application firewalls (WAF) to filter malicious regex patterns at the perimeter
# Check installed PCRE version
pcre-config --version
# If version is below 8.44, upgrade PCRE
# For Debian/Ubuntu systems:
sudo apt-get update && sudo apt-get install libpcre3
# For RHEL/CentOS systems:
sudo yum update pcre
# Verify the updated version
pcre-config --version
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.


