Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessConnect to Gitea built-in SSH server
-
ExploitPresent case-variant of victim RSA public key
-
ExecutionCase-insensitive SQL LIKE matches victim's stored key
-
ImpactAuthenticate and operate as victim user
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Primary weakness mitigation
|
| Exploitation Conditions | Exploitation requires ALL of: (1) Gitea's built-in SSH server enabled via START_SSH_SERVER=true (not the default on many deployments, which proxy to the host SSH daemon); (2) a backing database with case-insensitive text comparison, such as the default SQLite, so that the vulnerable 'content LIKE' lookup collapses case; and (3) the attacker possessing or being able to derive a working RSA private key whose corresponding public key is a case-altered but still-matching variant of the victim's registered key. Condition (3) is the dominant limiting factor - generating a valid keypair that differs from a target key only by case is cryptographically very hard - which, together with the non-default SSH configuration, sharply constrains realistic exploitation despite the network, no-user-interaction vector. Fixed in v28.0.0 by matching keys on SHA256 fingerprint instead of encoded content. |
| Impact | The signals here are sharply divided between theoretical severity and practical exploitability. The NVD CVSS of 9.1 (AV:N/AC:L/PR:N/UI:N/C:H/I:H) and the SSVC rating (Technical Impact: total, Automatable: yes) frame this as a critical remote authentication-bypass allowing full impersonation of another user over SSH. However, the real-world risk indicators pull strongly the other way: EPSS is only 0.16% (4th percentile), SSVC Exploitation status is 'none', there is no CISA KEV listing, and no public exploit was identified. Most importantly, the CVSS AC:L (low complexity) is questionable - the description requires an attacker to construct a *case variant* of the victim's registered RSA public key *for which they can derive the matching private key*. Producing a valid RSA keypair whose base64-encoded public key differs from the victim's only by letter case is a hard, likely intractable cryptographic constraint, which realistically makes this high-complexity (AC:H), not AC:L. CONFLICT TO NOTE: the CVSS vector claims AC:L and PR:N (trivial, unauthenticated), but the cryptographic precondition and the requirement for a non-default deployment (built-in SSH server enabled, case-insensitive DB such as the default SQLite) make low-effort mass exploitation implausible. Net assessment: patch on a normal cadence; this is a high-severity-by-impact but low-probability issue, not an emergency, absent evidence of active exploitation. |
| Exploit ScenarioDerived | An attacker targeting a Gitea instance with the built-in SSH server enabled (START_SSH_SERVER=true) on a case-insensitive database (default SQLite) attempts to authenticate over SSH by presenting a public key that is a case-altered variant of a victim's registered RSA key, having derived a usable private key for that variant. Because the server matched keys with a case-insensitive SQL LIKE comparison rather than by fingerprint, the variant resolves to the victim's account and the attacker is logged in as that user. No public exploit code was identified at time of analysis, and the required ability to derive a private key for a case-variant key is a substantial practical barrier. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 07, 2026
Authentication bypass in Gitea's built-in SSH server (affected releases up to and including 1.27.3) lets a remote attacker authenticate as another user by presenting a case-variant of that user's registered RSA public key. Three conditions must all hold: the built-in SSH server must be enabled via START_SSH_SERVER = true (non-default on many deployments), the backing database must perform case-insensitive text comparison (the default SQLite qualifies), and the attacker must possess or derive a working RSA private key whose public key differs from the victim's only by letter case, which is cryptographically very hard and is why the effort is assessed as high complexity rather than the low complexity of the published vendor vector. No public exploit code identified at time of analysis; EPSS is 0.16% (4th percentile) and the CISA SSVC assessment records exploitation: none. The flaw is fixed in v28.0.0 by matching keys on their SHA256 fingerprint instead of encoded content.
RemediationAI
Upgrade to Gitea v28.0.0, the vendor-released patch version (release at https://github.com/go-gitea/gitea/releases/tag/v28.0.0, advisory GHSA-8pwg-hcgm-54cp, fix PR https://github.com/go-gitea/gitea/pull/39423), which replaces the case-insensitive content LIKE lookup with an exact SHA256 fingerprint match and closes the bypass. If upgrading immediately is not feasible, the strongest compensating control is to stop using the built-in SSH server by setting START_SSH_SERVER = false and serving Git over SSH through the host OpenSSH daemon with Gitea's generated authorized_keys; the trade-off is losing Gitea-managed SSH integration and having to keep the external sshd configuration synchronized, but it removes the vulnerable lookup entirely. A database-side partial mitigation is to force binary or case-sensitive collation on the public key table, or otherwise avoid case-insensitive comparison for that query, which narrows the exploit window but may disturb other case-insensitive lookups and does not fix the underlying design weakness, so it must not be treated as a substitute for patching. Because exploitation additionally demands a matching case-variant keypair, restricting SSH access to trusted networks or source IPs provides defense in depth, with the acknowledged trade-off of reduced developer accessibility. No configuration change fully eliminates the risk short of the v28.0.0 upgrade.
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
Gitea's built-in SSH server authenticated incoming public keys by searching the database with an SQL LIKE comparison against the key's encoded text, and because LIKE folds case on several database engines, notably the default SQLite where TEXT comparison is case-insensitive, a case-altered variant of a legitimate key could be resolved to the victim's account record. The root cause class is CWE-305, Authentication Bypass by Primary Weakness: the identity decision rests on a non-cryptographic, case-folding string match instead of an exact cryptographic identifier, so the binding between presented key and stored owner is weaker than the key material itself. The upstream fix (PR 39423, shipped in v28.0.0) computes the SHA256 fingerprint of the presented key and matches with fingerprint = ?, and in the same change renamed and repurposed helpers from content-prefix lookups (AuthorizedPublicKeyByContent, SearchPublicKeyByContentExact) to fingerprint- and principal-based lookups, including the key-deletion path in cmd/keys.go. Only the built-in SSH daemon exercises this code path; deployments that disable START_SSH_SERVER and let the host OpenSSH daemon handle key auth through Gitea's authorized_keys output do not reach the vulnerable LIKE query. EUVD lists affected versions as Gitea 0 through 1.27.3; no CPE identifiers were supplied in the provided data, so CPE-based correlation is not possible from this feed.
Know when Gitea 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
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
Remote and unauthenticated (AV:N/PR:N), but deriving a private key for a case-variant of the victim's public key plus the non-default SSH/DB config make it AC:H; full user impersonation gives C:H/I:H, no A impact.
Primary rating from Vendor (88ee5874-cf24-4952-aea0-31affedb7ff2).
CVSS VectorVendor: 88ee5874-cf24-4952-aea0-31affedb7ff2
Lifecycle Timeline
3DescriptionCVE.org
When Gitea's built-in SSH server is enabled (START_SSH_SERVER = true), the presented public key was looked up with an SQL LIKE comparison of its encoded content, which is case-insensitive on some databases, including the default SQLite. An attacker who can construct a case variant of another user's registered RSA public key for which they can derive the private key could have that key matched to the victim's account and authenticate over SSH as that user. Keys are now looked up by fingerprint.
Technical POC Analysis
CWE-305 authentication bypass.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
Gitea's built-in SSH server, in releases up to and including 1.27.3, contains an authentication bypass that could allow an attacker to assume another user's identity and inherit that account's access to hosted source code and repositories. Exploitation depends on a non-default SSH configuration, a case-insensitive database collation, and a cryptographically difficult key-derivation step, so the practical likelihood is materially lower than the 9.1 base score implies, but any organisation self-hosting Gitea for source control is in scope. Leadership should care because a successful bypass on a code-hosting platform can enable tampering with source code and, by extension, the downstream software supply chain.
No patch is recorded as available in the provided input; the advisory text identifies v28.0.0 as the fixed release, so apply that vendor fix as soon as it is obtainable. Interim mitigations: disable the built-in SSH server (START_SSH_SERVER = false) and use system OpenSSH for SSH access; restrict SSH exposure to trusted networks only; and replace case-insensitive database collation (default SQLite) with a case-sensitive configuration. No public exploit code has been identified at time of analysis.
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
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Remote code execution in Gitea (self-hosted Git service) via a code-injection flaw (CWE-94) allows attackers to run arbi
Broken access control in Gitea's Composer package registry (versions up to and including 1.26.1) lets remote attackers r
Gitea before 1.16.7 does not escape git fetch remote. Rated high severity (CVSS 7.5), this vulnerability is remotely exp
The git hook feature in Gitea 1.1.0 through 1.12.5 might allow for authenticated remote code execution in customer envir
Improper Neutralization of Input During Web Page Generation (XSS or 'Cross-site Scripting') vulnerability in Gitea Gitea
Authenticated command injection in Dokploy (self-hostable PaaS) versions 0.29.3 through 0.29.12 lets a low-privileged us
Reverse-proxy authentication bypass in the official Gitea Docker image (versions up to and including 1.26.2) allows any
Path traversal in Gitea's Org-mode (`.org`) markup renderer allows an attacker who can get Org-mode content rendered by
Container escape in Gitea act_runner (Docker backend, through act 0.262.0) lets an authenticated user with workflow-exec
models/repo_mirror.go in Gitea before 1.7.6 and 1.8.x before 1.8-RC3 mishandles mirror repo URL settings, leading to rem
Server-side request forgery and internal repository exfiltration in Gitea before 1.27.0 lets a low-privileged authentica
Authorization bypass in Gitea versions 1.22.3 through 1.26.1 allows holders of `public-only` access tokens or OAuth gran
EUVD-2026-93906
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB