Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach Gerrit REST/search endpoint
-
DeliveryCraft pathological regex pattern
-
ExploitSubmit /projects/?r= or regex query predicate
-
ExecutionServer compiles unbounded automaton on request thread
-
PersistCPU starvation and JVM heap exhaustion
-
ImpactDenial 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
Affected Packages
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
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
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.
Primary rating from Vendor (Google).
CVSS VectorVendor: Google
Lifecycle Timeline
2DescriptionCVE.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.
Articles & Coverage 1
Executive ViewAI
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.
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
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
Uncontrolled resource consumption in Gerrit Code Review (versions 2.0.19 through 3.12.9, 3.13.0 through 3.13.8, and 3.14
Gerrit Code Review 2.16.0-3.12.9, 3.13.0-3.13.8, and 3.14.0-3.14.2 mishandle project-name normalization, allowing an aut
Any git operation is passed through Jetty and a session is created. Rated high severity (CVSS 7.5), this vulnerability i
Incorrect authorization in Gerrit's 'submitted together' feature (versions 2.12 and later) allows an authenticated attac
An information leak vulnerability exists in Gerrit versions prior to 2.14.22, 2.15.21, 2.16.25, 3.0.15, 3.1.10, 3.2.5 wh
An information leak vulnerability exists in Gerrit versions prior to 2.15.21, 2.16.25, 3.0.15, 3.1.10, 3.2.5 where a mis
EUVD-2026-86478
GHSA-qgc5-8q25-ffxc
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB