CVE Catalog

CVE-2026-87720

HighCVSS 7.6
Published: Translated: NVD NIST

Summary

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

Vulnerability data from NVD (NIST) · CISA KEV · EPSS