Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2020-14155

CVE-2020-14155: PCRE Buffer Overflow Vulnerability

CVE-2020-14155 is a buffer overflow vulnerability in the PCRE library caused by an integer overflow via a large number after a (?C substring. This article covers technical details, affected versions, impact, and mitigation.

Published:

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:

  1. Crafting a regular expression containing the (?C callout syntax
  2. Appending an extremely large numeric value that exceeds integer bounds
  3. Submitting this pattern to a vulnerable application for compilation
  4. 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:

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
bash
# 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.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.