Skip to main content

Gerrit Code Review CVE-2026-87722

| EUVDEUVD-2026-86478 HIGH
Uncontrolled Resource Consumption (CWE-400)
2026-09-24 Google GHSA-qgc5-8q25-ffxc
8.7
CVSS 4.0 · Vendor: Google
View

Attack ChainAIDerived

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

  1. Access
    Reach Gerrit REST/search endpoint
  2. Delivery
    Craft pathological regex pattern
  3. Exploit
    Submit /projects/?r= or regex query predicate
  4. Execution
    Server compiles unbounded automaton on request thread
  5. Persist
    CPU starvation and JVM heap exhaustion
  6. Impact
    Denial of service (OutOfMemoryError)

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource consumption limits
MITRE ATT&CK

1 technique across 1 tactic: Impact

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

Exploitation Conditions

Exploitable by sending crafted regex search queries or REST API requests to Gerrit's regex filter endpoints - specifically RegexListSearcher (/projects/?r=) and RefFilter (/projects/{project}/branches/?r=) - or via regex search predicates (RegexProjectPredicate, RegexRefPredicate, RegexPathPredicate and siblings), using patterns with large counted repetitions or exponential DFA-determinization behavior. No special server configuration is needed beyond a reachable Gerrit instance running an affected version (2.1.6-3.12.9, 3.13.0-3.13.8, or 3.14.0-3.14.2). The key limiting factor is authentication posture: exploitation is fully unauthenticated ONLY when anonymous read access is enabled; if anonymous read is disabled, an authenticated user account is required. Because the malicious regex is compiled before access-control visibility filtering, no project-level read permission to specific repositories is needed for the resource-exhaustion to occur.

Impact

This is a genuinely high-priority DoS. The vendor CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H, 8.7 HIGH) aligns cleanly with the description: a network-reachable, low-complexity, unauthenticated request produces high availability impact and no confidentiality/integrity impact - a textbook uncontrolled-resource-consumption/ReDoS profile. The mechanism is credible and severe because the user-supplied regex is compiled into an unbounded dk.brics.automaton (new RegExp(re).toAutomaton()) on the request thread BEFORE index evaluation or access-control visibility filtering, so a trivial crafted query can pin threads or trigger OutOfMemoryError regardless of heap sizing - this is why AC:L and VA:H are justified rather than inflated. Counterbalancing signals: no EPSS score, no CISA KEV listing, and no public exploit are present in the input, so there is no evidence of active exploitation - the priority derives from reachability and ease, not observed attacks. One conditional to note: PR:N (unauthenticated) holds only when anonymous read access is enabled; if anonymous read is disabled, an authenticated user is required, effectively raising the privilege bar to PR:L for those deployments - the vector does not capture this deployment split, so defenders should verify their anonymous-access configuration.

Exploit ScenarioDerived

An unauthenticated attacker (against a Gerrit instance with anonymous read enabled) sends a single crafted REST request such as GET /projects/?r=<malicious-regex> or a search query using a regex predicate, embedding a pattern with large counted repetitions or exponential DFA-determinization behavior. Gerrit compiles the regex into an unbounded automaton on the request thread before any access-control check, exhausting JVM heap (OutOfMemoryError) or pinning CPU, taking the service down. No public exploit code is identified in the input, but the attack requires only trivial HTTP requests and no authentication in default anonymous-read setups.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.3% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Sep 24, 2026

CPU starvation and JVM heap exhaustion in Gerrit Code Review (versions 2.1.6 through 3.12.9, 3.13.0 through 3.13.8, and 3.14.0 through 3.14.2) let remote attackers stall or crash the server by submitting crafted regular expressions through search queries (RegexProjectPredicate, RegexRefPredicate, RegexPathPredicate and sibling predicates) or through the REST regex filter endpoints /projects/?r= (RegexListSearcher) and /projects/{project}/branches/?r= (RefFilter). Patterns built from large counted repetitions or exponential DFA-determinization shapes are compiled into an unbounded dk.brics.automaton instance on the request thread before index evaluation and before access-control visibility filtering, so trivial requests can pin request threads or trigger OutOfMemoryError regardless of configured heap size. The assessed vector is CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H (availability-only, high impact), and exploitation is fully unauthenticated only where anonymous read access is enabled - if anonymous read is disabled an authenticated account is required. No public exploit code and no confirmed active exploitation were identified at time of analysis; the issue is fixed in 3.12.10, 3.13.9, and 3.14.3.

RemediationAI

Upgrade to a vendor-fixed release: Gerrit Code Review 3.12.10 (fixes the 2.1.6-3.12.9 line), 3.13.9 (fixes 3.13.0-3.13.8), or 3.14.3 (fixes 3.14.0-3.14.2). This is the only complete fix, because the defect is in the regex-to-automaton compilation path itself; patched binaries bound or reject pathological patterns before they reach index evaluation. Patch status per vendor advisory: Vendor-released patch: 3.12.10, 3.13.9, 3.14.3; see https://issues.gerritcodereview.com/issues/540877705. Where an immediate upgrade is not possible, compensating controls should be layered, with awareness of their trade-offs. First, block or restrict the regex query parameters at a reverse proxy or WAF - deny requests whose query string contains an r= parameter on /projects/ or /projects/{project}/branches/ endpoints, or reject patterns containing large counted repetitions or nested quantifiers; the side effect is that legitimate Gerrit UI and API regex search and branch filtering silently stop working for all users. Second, tighten authentication posture by disabling anonymous read access so that the regex endpoints require an authenticated account; this raises the bar but does not eliminate the issue, since the assessed vector carries PR:N and any authenticated user can still trigger exhaustion, and it changes the deployment's public-read model. Third, apply per-client rate limiting and connection/thread caps in front of Gerrit to slow repeated triggering, accepting that a single well-crafted request can still consume a worker thread and heap until it completes. Note that increasing JVM heap is not an effective mitigation here - the exhaustion is unbounded relative to heap size - and you should monitor for OutOfMemoryError and pinned HTTP worker threads as indicators of exploitation attempts. No public exploit code was identified at time of analysis, and this CVE is not a confirmed actively exploited (CISA KEV) issue, but the low bar to trigger it makes prompt patching advisable.

Affected VersionsENISA

Gerrit 3.13.0 <3.13.9
Gerrit 2.1.6 <3.12.10
Gerrit 3.14.0 <3.14.3

Affected Packages

euvd gerrit fix: 3.12.10, 3.13.9, 3.14.3

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

The root cause is uncontrolled resource consumption (CWE-400) with an inefficient-regular-expression-complexity component (CWE-1333) inside Gerrit's regex search path. Gerrit compiles user-supplied patterns via dk.brics.automaton's RegExp(re).toAutomaton() before the query is evaluated against the index and before visibility filtering is applied, meaning the cost of building the automaton is paid unconditionally on the request thread. dk.brics.automaton determinization can blow up exponentially for certain patterns, and counted repetitions (e.g. {n,m} with large bounds) produce very large state graphs, so a single short regex string can allocate enormous heap and burn CPU. The vulnerable call sites include the regex search predicates (RegexProjectPredicate, RegexRefPredicate, RegexPathPredicate and siblings) and the REST regex filter endpoints RegexListSearcher (/projects/?r=) and RefFilter (/projects/{project}/branches/?r=). CPE data identifies the affected package as cpe:2.3:a:gerrit:gerrit:*, confirming the impact is confined to the Gerrit Code Review server artifact itself rather than a plugin. Because compilation precedes both index evaluation and access-control visibility filtering, the attacker does not need read permission on any specific project - the exhaustion occurs before permissions are consulted. This is a pure availability issue: the assessed CVSS:3.1 vector is AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H, and the vendor-supplied CVSS 4.0 vector is 8.7 with PR:N.

Know when Gerrit 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

Vendor (Google) PRIMARY 8.7 HIGH
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
vuln.today AI 7.5 HIGH

Network-reachable, low-complexity crafted request; PR:N holds for the default anonymous-read case; impact is availability-only (heap/CPU exhaustion), no confidentiality or integrity effect.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (Google).

CVSS VectorVendor: Google

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Sep 24, 2026 - 23:18 EUVD
CVE Published
Sep 24, 2026 - 22:03 cve.org
HIGH 8.7

DescriptionCVE.org

Uncontrolled Resource Consumption (CWE-400 / CWE-1333) in regex search query predicates (such as RegexProjectPredicate, RegexRefPredicate, RegexPathPredicate, and sibling predicates) and REST regex filter endpoints (RegexListSearcher /projects/?r= and RefFilter /projects/{project}/branches/?r=) in Gerrit Code Review versions 2.1.6 through 3.12.9, 3.13.0 through 3.13.8, and 3.14.0 through 3.14.2 allows an unauthenticated remote attacker (or an authenticated user if anonymous read access is disabled) to cause a denial of service (CPU starvation and JVM heap exhaustion / OutOfMemoryError) via crafted search queries or REST API requests containing regular expressions with large counted repetitions or exponential DFA determinization patterns. Because the user-supplied regular expression is compiled into an unbounded dk.brics.automaton instance (new RegExp(re).toAutomaton()) on the request thread prior to index evaluation or access control visibility filtering, trivial queries can exhaust JVM heap or pin request threads regardless of heap size. This issue is fixed in Gerrit Code Review versions 3.12.10, 3.13.9, and 3.14.3.

Executive ViewAI

Why It Matters

Gerrit Code Review versions 2.1.6-3.12.9, 3.13.0-3.13.8, and 3.14.0-3.14.2 are affected by a high-severity denial-of-service vulnerability that allows remote attackers to stall or crash the server by submitting crafted regular expressions. This can disrupt development workflows, cause significant operational downtime, and delay releases for organizations relying on these versions, especially where anonymous read access is enabled. With no vendor patch currently available, leadership should prioritize interim mitigations to protect engineering productivity.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations: disable anonymous read access to Gerrit and enforce authentication for all requests; restrict or disable regex-based search queries and the REST regex filter endpoints; implement rate limiting or WAF rules to block complex regex patterns; monitor CPU and heap usage for anomalies. Apply vendor patch when available.

Threat Intelligence Overview

EPSS Score
0.3%
Top 77% exploitable
Prevalence
Medium
widely used enterprise/open-source code review server, but not ubiquitous
Data Quality
4 sources
Confidence: Medium

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.3%
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
Yes
Human Impact
High
Technical Impact
Partial

Priority Score

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

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

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