{"schemaVersion":3,"id":"CVE-2026-87721","aliases":[],"status":"published","duplicateOf":null,"title":null,"description":"Uncontrolled Resource Consumption (CWE-400 / CWE-407) in the ANTLR 3 search query parser (QueryParser / Query.g) in Gerrit Code Review versions 2.0.19 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 persistent denial of service (CPU exhaustion and HTTP worker thread pool starvation requiring a server restart) via crafted search queries containing deeply nested parentheses sent to query evaluation endpoints (/changes/?q=, /accounts/?q=, /groups/?query=, /projects/?query=, /Documentation/?q=, /changes/{id}/query?expression=, or SSH gerrit query). Because syntactic predicates in conditionOr and conditionAnd recurse via conditionBase without memoization prior to capability or visibility checks and worker threads do not abort when the client disconnects, a small number of requests (such as 25 requests matching default httpd.maxThreads) can permanently pin all HTTP worker threads. This issue is fixed in Gerrit Code Review versions 3.12.10, 3.13.9, and 3.14.3.","dates":{"published":"2026-09-24T22:02:07.175Z","modified":"2026-09-25T16:49:24.185Z","reserved":null,"kevAdded":[],"kevDue":[]},"cvss":{"headline":{"score":8.7,"severity":"high","version":"4.0","versionLabel":"v4.0","source":"CVE.org","vector":"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","computed":false,"selection":"backend-summary"},"metrics":[{"version":"4.0","versionLabel":"v4.0","source":"CVE.org","score":8.7,"severity":"high","vector":"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","exploitability":null,"impact":null,"computed":false},{"version":"4.0","versionLabel":"v4.0","source":"NVD","score":8.7,"severity":"high","vector":"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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","exploitability":null,"impact":null,"computed":false}]},"epss":{"probability":0.00322,"percentile":0.23717,"severity":"low","asOf":"2026-10-19T00:00:00.000Z","change":{"pp":null,"baselineDate":null,"baselineScore":null},"history":[{"date":"2026-09-25T00:00:00.000Z","score":0.00322,"percentile":null},{"date":"2026-09-26T00:00:00.000Z","score":0.00322,"percentile":null},{"date":"2026-09-27T00:00:00.000Z","score":0.00322,"percentile":null},{"date":"2026-09-28T00:00:00.000Z","score":0.00322,"percentile":null},{"date":"2026-09-29T00:00:00.000Z","score":0.00322,"percentile":null},{"date":"2026-09-30T00:00:00.000Z","score":0.00322,"percentile":null},{"date":"2026-10-01T00:00:00.000Z","score":0.00322,"percentile":null},{"date":"2026-10-02T00:00:00.000Z","score":0.00322,"percentile":null},{"date":"2026-10-03T00:00:00.000Z","score":0.00322,"percentile":null},{"date":"2026-10-04T00:00:00.000Z","score":0.00322,"percentile":null},{"date":"2026-10-05T00:00:00.000Z","score":0.00322,"percentile":null},{"date":"2026-10-06T00:00:00.000Z","score":0.00322,"percentile":null},{"date":"2026-10-07T00:00:00.000Z","score":0.00322,"percentile":null},{"date":"2026-10-08T00:00:00.000Z","score":0.00322,"percentile":null},{"date":"2026-10-09T00:00:00.000Z","score":0.00322,"percentile":null},{"date":"2026-10-10T00:00:00.000Z","score":0.00322,"percentile":null},{"date":"2026-10-11T00:00:00.000Z","score":0.00322,"percentile":null},{"date":"2026-10-12T00:00:00.000Z","score":0.00322,"percentile":null},{"date":"2026-10-13T00:00:00.000Z","score":0.00322,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.00322,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.00322,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.00322,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.00322,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.00322,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.00322,"percentile":0.23717}],"last30":[{"date":"2026-09-25T00:00:00.000Z","score":0.00322,"percentile":null},{"date":"2026-09-26T00:00:00.000Z","score":0.00322,"percentile":null},{"date":"2026-09-27T00:00:00.000Z","score":0.00322,"percentile":null},{"date":"2026-09-28T00:00:00.000Z","score":0.00322,"percentile":null},{"date":"2026-09-29T00:00:00.000Z","score":0.00322,"percentile":null},{"date":"2026-09-30T00:00:00.000Z","score":0.00322,"percentile":null},{"date":"2026-10-01T00:00:00.000Z","score":0.00322,"percentile":null},{"date":"2026-10-02T00:00:00.000Z","score":0.00322,"percentile":null},{"date":"2026-10-03T00:00:00.000Z","score":0.00322,"percentile":null},{"date":"2026-10-04T00:00:00.000Z","score":0.00322,"percentile":null},{"date":"2026-10-05T00:00:00.000Z","score":0.00322,"percentile":null},{"date":"2026-10-06T00:00:00.000Z","score":0.00322,"percentile":null},{"date":"2026-10-07T00:00:00.000Z","score":0.00322,"percentile":null},{"date":"2026-10-08T00:00:00.000Z","score":0.00322,"percentile":null},{"date":"2026-10-09T00:00:00.000Z","score":0.00322,"percentile":null},{"date":"2026-10-10T00:00:00.000Z","score":0.00322,"percentile":null},{"date":"2026-10-11T00:00:00.000Z","score":0.00322,"percentile":null},{"date":"2026-10-12T00:00:00.000Z","score":0.00322,"percentile":null},{"date":"2026-10-13T00:00:00.000Z","score":0.00322,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.00322,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.00322,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.00322,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.00322,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.00322,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.00322,"percentile":0.23717}]},"kev":{"state":"not-listed","entries":[],"listedCount":0,"totalCatalogs":3,"catalogs":[{"source":"cisa","label":"CISA","listed":false,"entry":null},{"source":"enisa","label":"ENISA","listed":false,"entry":null},{"source":"circl","label":"CIRCL","listed":false,"entry":null}]},"ransomware":{"state":"none-recorded","sources":[]},"exploits":[],"exploitCount":0,"weaknesses":[{"id":"CWE-400","name":"Uncontrolled Resource Consumption","description":"The product does not properly control the allocation and maintenance of a limited resource.","type":"weakness","status":"Draft","abstraction":"Class","likelihoodOfExploit":"High","url":"https://cwe.mitre.org/data/definitions/400.html"},{"id":"CWE-407","name":"Inefficient Algorithmic Complexity","description":"An algorithm in a product has an inefficient worst-case computational complexity that may be detrimental to system performance and can be triggered by an attacker, typically using crafted manipulations that ensure that the worst case is being reached.","type":"weakness","status":"Incomplete","abstraction":"Class","likelihoodOfExploit":"Low","url":"https://cwe.mitre.org/data/definitions/407.html"},{"id":"CWE-834","name":"Excessive Iteration","description":"The product performs an iteration or loop without sufficiently limiting the number of times that the loop is executed.","type":"weakness","status":"Incomplete","abstraction":"Class","likelihoodOfExploit":null,"url":"https://cwe.mitre.org/data/definitions/834.html"}],"affected":[{"vendor":"gerrit","product":"gerrit","name":"Gerrit","label":"gerrit","ecosystem":null,"cpePart":"a","purl":null,"purlType":null,"versions":[{"text":"≥ 2.0.19, < 3.12.10","noFixRecorded":false,"fixedIn":null},{"text":"≥ 3.13.0, < 3.13.9","noFixRecorded":false,"fixedIn":null},{"text":"≥ 3.14.0, < 3.14.3","noFixRecorded":false,"fixedIn":null}],"versionsText":"≥ 2.0.19, < 3.12.10 | ≥ 3.13.0, < 3.13.9 | ≥ 3.14.0, < 3.14.3","eol":null,"hubHref":"/vendor/gerrit/gerrit"}],"affectedCount":1,"eol":{"hasEol":false,"count":0},"references":[{"url":"https://issues.gerritcodereview.com/issues/541287630","label":"issues.gerritcodereview.com/issues/541287630","hostname":"issues.gerritcodereview.com","tags":[]}],"lineage":{"upstream":[],"downstream":[],"duplicates":[],"related":[]},"timeline":[{"kind":"published","date":"2026-09-24T22:02:07.175Z","label":"Published","detail":"Vulnerability first disclosed.","source":null},{"kind":"modified","date":"2026-09-25T16:49:24.185Z","label":"Last modified","detail":"Vulnerability information updated.","source":null}],"risk":{"score":35,"level":"medium","profile":"Default","thresholds":{"critical":75,"high":50,"medium":25,"low":10}},"meta":{"dataAsOf":"2026-10-20T03:23:42.514Z","stale":false,"partial":false}}