Skip to main content

Gitea CVE-2026-103059

| EUVDEUVD-2026-93906 CRITICAL
Authentication Bypass by Primary Weakness (CWE-305)
2026-10-06 88ee5874-cf24-4952-aea0-31affedb7ff2
9.1
CVSS 3.1 · Vendor: 88ee5874-cf24-4952-aea0-31affedb7ff2
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Connect to Gitea built-in SSH server
  2. Exploit
    Present case-variant of victim RSA public key
  3. Execution
    Case-insensitive SQL LIKE matches victim's stored key
  4. Impact
    Authenticate 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.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
No patch listed yet 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

Gitea 0 ≤1.27.3

Affected Packages

euvd gitea no fix

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

Vendor (88ee5874-cf24-4952-aea0-31affedb7ff2) PRIMARY 9.1 CRITICAL
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
vuln.today AI 7.4 HIGH

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.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
4.0 AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N
Red Hat 7.4 HIGH

Primary rating from Vendor (88ee5874-cf24-4952-aea0-31affedb7ff2).

CVSS VectorVendor: 88ee5874-cf24-4952-aea0-31affedb7ff2

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
None

Lifecycle Timeline

3
CVSS changed
Oct 07, 2026 - 15:22 NVD
9.1 (None) 9.1 (CRITICAL)
CVE Published
Oct 06, 2026 - 20:17 cve.org
CRITICAL 9.1
CVE Published
Oct 06, 2026 - 20:17 cve.org
UNKNOWN (no severity yet)

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

Why It Matters

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.

Business Impact: Medium
Compensating Controls

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

EPSS Score
0.2%
Top 96% exploitable
Prevalence
Medium
popular self-hosted git service, common but not ubiquitous footprint
Data Quality
7 sources
Confidence: High
EUVD 🇯🇵JVN NVD CVE.org EPSS Vulnrichment Vendor GitHub VulDB

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.

SignalValue
Severity CRITICAL
CISA KEV No
Public POC No
EPSS 0.2%
Patch available No
Active threat No
Deciding rule
CRITICAL severity
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact
Medium
Technical Impact
Total

Priority Score

46
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +46
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

More in Gitea

View all
CVE-2026-60004 CRITICAL POC
9.8

Remote code execution in Gitea (self-hosted Git service) via a code-injection flaw (CWE-94) allows attackers to run arbi

CVE-2026-27771 HIGH POC
8.2 Jul 03

Broken access control in Gitea's Composer package registry (versions up to and including 1.26.1) lets remote attackers r

CVE-2022-30781 HIGH POC
7.5 May 16

Gitea before 1.16.7 does not escape git fetch remote. Rated high severity (CVSS 7.5), this vulnerability is remotely exp

CVE-2020-14144 HIGH POC
7.2 Oct 16

The git hook feature in Gitea 1.1.0 through 1.12.5 might allow for authenticated remote code execution in customer envir

CVE-2024-6886 CRITICAL POC
10.0 Aug 06

Improper Neutralization of Input During Web Page Generation (XSS or 'Cross-site Scripting') vulnerability in Gitea Gitea

CVE-2026-72867 CRITICAL POC
9.9 Aug 10

Authenticated command injection in Dokploy (self-hostable PaaS) versions 0.29.3 through 0.29.12 lets a low-privileged us

CVE-2026-20896 CRITICAL POC
9.8 Jul 03

Reverse-proxy authentication bypass in the official Gitea Docker image (versions up to and including 1.26.2) allows any

CVE-2026-59774 CRITICAL POC
9.8

Path traversal in Gitea's Org-mode (`.org`) markup renderer allows an attacker who can get Org-mode content rendered by

CVE-2026-58053 CRITICAL POC
9.4 Jun 28

Container escape in Gitea act_runner (Docker backend, through act 0.262.0) lets an authenticated user with workflow-exec

CVE-2019-11229 HIGH POC
8.8 Apr 15

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

CVE-2026-57894 HIGH POC
8.5 Jul 21

Server-side request forgery and internal repository exfiltration in Gitea before 1.27.0 lets a low-privileged authentica

CVE-2026-24791 HIGH POC
8.1 Jun 17

Authorization bypass in Gitea versions 1.22.3 through 1.26.1 allows holders of `public-only` access tokens or OAuth gran

Vendor StatusVendor

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy