CVE-2026-87720
HighCVSS 7.6Summary
Incorrect Authorization (CWE-863) in project name normalization (ProjectUtil.stripGitSuffix) and ProjectCache eviction logic (ProjectCacheImpl) in Gerrit Code Review versions 2.16.0 through 3.12.9, 3.13.0 through 3.13.8, and 3.14.0 through 3.14.2 allows an authenticated user (or an unauthenticated user if the repository was previously public) to cause unauthorized disclosure of private repository content and durable restoration of revoked project-owner administrative privileges. The issue stems from stripping only a single terminal .git suffix when constructing the ProjectCache key while JGit resolves the suffixed alias to the same canonical bare repository on disk. This issue is fixed in versions 3.12.10, 3.13.9, and 3.14.3.
Risk Assessment
An attacker can read newly created private commits or write to refs/meta/config, leading to code leakage and privilege escalation. This may undermine repository integrity and the security of the software development process.
Recommendation
Upgrade Gerrit Code Review to version 3.12.10, 3.13.9, or 3.14.3. Until then, verify project permissions and monitor for unusual requests containing repeated .git suffixes.
Other vulnerabilities in Gerrit Code Review
See all- CVE-2026-87722High
Uncontrolled Resource Consumption (CWE-400 / CWE-1333) in regex search query predicates and REST regex filter endpoints 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. The issue stems from compiling user-supplied regular expressions into an unbounded dk.brics.automaton instance on the request thread prior to index evaluation or access control visibility filtering. This issue is fixed in versions 3.12.10, 3.13.9, and 3.14.3.
- CVE-2026-87721High
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. The issue stems from syntactic predicates recursing without memoization prior to capability or visibility checks, and worker threads not aborting when the client disconnects. This issue is fixed in versions 3.12.10, 3.13.9, and 3.14.3.
Original NVD description (English source)
Incorrect Authorization (CWE-863) in project name normalization (ProjectUtil.stripGitSuffix) and ProjectCache eviction logic (ProjectCacheImpl) in Gerrit Code Review versions 2.16.0 through 3.12.9, 3.13.0 through 3.13.8, and 3.14.0 through 3.14.2 allows an authenticated user (or an unauthenticated user if the repository was previously public) to cause unauthorized disclosure of private repository content and durable restoration of revoked project-owner administrative privileges via crafted requests using repeated .git suffixes (such as project.git.git) across REST APIs, Gitiles, or SSH Git commands. Because Gerrit strips only a single terminal .git suffix when constructing the logical ProjectCache key while JGit (FileKey.lenient) resolves the suffixed alias to the same canonical bare repository on disk, revoking read access or removing owner rules on the canonical project name fails to evict the cached alias ProjectState during the cache validity window, enabling reads of newly created private commits or writes to refs/meta/config. This issue is fixed in Gerrit Code Review versions 3.12.10, 3.13.9, and 3.14.3.

