Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach exposed web installer
-
ExploitSubmit install form with existing admin username
-
ExecutionReceive authenticated admin session without password
-
ImpactChange admin password and seize full control
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Authentication mechanism validation
MITRE ATT&CK
2 techniques across 2 tactics: Defense Evasion, Initial Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation is possible ONLY when Gitea's web installer is network-reachable while the backing database already contains user accounts - the described trigger is INSTALL_LOCK being reset to false (or otherwise unset) on an already-installed instance. The attacker must also know or supply a username matching an existing account, and for full compromise that account must be an administrator. A further limiting factor: this is not exploitable against a normal, locked (INSTALL_LOCK=true) production deployment, which is the default post-install state; the window exists only during operator-induced reinstallation/misconfiguration. Additionally, databases with only a single user also bypassed the reinstall confirmation prompt, slightly widening the condition for small single-admin instances. |
| Impact | This is a genuine high-impact authentication bypass (CWE-287) in Gitea's web installer that hands an unauthenticated attacker a valid session for an existing administrator account without any password check, yielding full administrative control (CVSS 8.1, C:H/I:H/A:H). However, the signals diverge sharply on urgency: the vendor-supplied CVSS vector uses AC:H, which correctly reflects that exploitation is NOT possible against a normal, fully-installed instance - it requires the installer to be reachable against a populated database (e.g. INSTALL_LOCK manually reset to false), a non-default and transient state. The EPSS score is very low (0.16%, 4th percentile) and there is NO CISA KEV listing and NO public exploit code identified, so there is no evidence of active or at-scale exploitation. The net picture is a high-severity-but-conditional flaw: a real priority for the specific population of operators who have re-exposed their installer, but a low real-world mass-exploitation risk otherwise. Note one tension to verify: the vector is AV:N/PR:N (remote, unauthenticated), yet the vulnerable window depends entirely on an operator-side misconfiguration (installer exposed against an existing DB), so realistic exposure is far narrower than 'remote unauthenticated' alone implies. |
| Exploit ScenarioDerived | An operator re-exposes the Gitea web installer against an existing database (for example by resetting INSTALL_LOCK to false) without restricting network access. An attacker who can reach the installer submits the install form using a known or guessed administrator username; Gitea issues an authenticated session for that account without verifying the password, and the attacker then changes the admin password to lock in full control. No public exploit code is identified at time of analysis, and the high attack complexity reflects the required non-default installer-exposed state. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 07, 2026
Unauthenticated attackers who can reach Gitea's web installer on an instance whose INSTALL_LOCK has been reset to false (or is otherwise unset) can obtain a fully authenticated session for any existing account - including an administrator - simply by submitting the install form with a username that matches that account, with no password verification whatsoever. Full administrative takeover follows, allowing the attacker to change the account's password and control the instance. The bypass only exists while the installer is network-reachable against a database that already contains users; the default hardened post-install state (INSTALL_LOCK=true) is not affected. Independent assessment rates this CVSS 8.1 (AV:N/AC:H/PR:N/UI:N, C:H/I:H/A:H); EPSS is low at 0.16% (4th percentile) and no public exploit code has been identified at time of analysis.
RemediationAI
Apply the vendor-released patch: upgrade to Gitea 28.0.0 (release tag https://github.com/go-gitea/gitea/releases/tag/v28.0.0, per the advisory at https://github.com/go-gitea/gitea/security/advisories/GHSA-9h7g-h754-c8x2 and the fix PR https://github.com/go-gitea/gitea/pull/39400). If an immediate upgrade is not possible, ensure INSTALL_LOCK=true is present and enforced in app.ini - this removes the exploitable window entirely, since a locked instance does not serve the installer - and verify the setting after any configuration edit or restore. Additionally, block the /install path at the reverse proxy or restrict it to trusted administrative networks; this is a layered control and does not repair the underlying logic, but it prevents remote reachability of the vulnerable endpoint. Note that any of these controls must be applied before the attacker reaches the installer, and rotating credentials for administrator accounts is advisable if INSTALL_LOCK was ever observed to be false on an internet-facing instance, since a granted session could have been used to change the account password. No vendor patch is needed for deployments that never expose the installer, but upgrading remains the definitive fix.
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
CVE-2026-96404 is an improper-authentication flaw (CWE-287) in Gitea's web installer, written in Go. Gitea's first-run installation handler is designed to run exactly once: it writes the instance configuration and creates the initial administrator account. After installation the operator is expected to set INSTALL_LOCK=true, which causes the /install route to be disabled. When INSTALL_LOCK is reset to false - for example by an operator editing app.ini during a recovery or configuration change - the installer becomes reachable again even though the backing database is already populated. The vulnerable code path failed to reconcile the submitted administrator username against existing accounts: rather than rejecting the reuse or requiring the existing account's password, it minted a session for the matching user record. A related logic weakness compounded the problem: the HasPostInstallationUsers check counted users with a threshold of two (using LIMIT 2 and requiring len(res) >= 2), so single-user databases were not recognized as 'already installed' and also skipped the reinstall confirmation. The upstream fix (PR 39400, shipped in v28.0.0) replaces the threshold logic with a simple presence check (x.Table("user").Exist()) and, alongside it, refactors the server domain setting (setting.Domain renamed to setting.AppDomain) used for WebAuthn RPID and ACME/AppURL handling. The high CVSS attack complexity (AC:H) reflects that exploitation requires the specific misconfiguration window plus knowledge of a valid username, not merely network reachability.
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:H/PR:N/UI:N/S:U/C:H/I:H/A:H
No authentication is checked so PR:N and the installer is network-facing (AV:N), but the required installer-exposed-against-populated-DB state is non-default, justifying AC:H; full admin takeover gives C:H/I:H/A:H.
Primary rating from Vendor (88ee5874-cf24-4952-aea0-31affedb7ff2).
CVSS VectorVendor: 88ee5874-cf24-4952-aea0-31affedb7ff2
Lifecycle Timeline
3DescriptionCVE.org
When Gitea's web installer is reachable against a database that already contains users, such as after INSTALL_LOCK has been reset to false, submitting the install form with an administrator username matching an existing account issued an authenticated session for that account without verifying its password. If the account is an administrator, the session grants full administrative access, including changing the account's password. Databases with a single user also did not require the reinstall confirmation.
Technical POC Analysis
Evidence basis: this breakdown is built from advisory GHSA-9h7g-h754-c8x2 only.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
Gitea instances with a network-reachable web installer and INSTALL_LOCK set to false or unset are exposed to unauthenticated full administrative takeover, enabling attackers to compromise source code, credentials, and CI/CD workflows. This affects organizations relying on Gitea for code hosting and development operations, and leadership should care because a single misconfiguration can lead to broad compromise of intellectual property and trusted access. No public exploit identified at time of analysis, but no vendor-released patch identified at time of analysis, making immediate configuration hardening critical.
No vendor-released patch identified at time of analysis. Interim mitigations include ensuring INSTALL_LOCK=true, blocking network access to the Gitea web installer from untrusted sources, monitoring for unauthorized install-form submissions, and rotating credentials and reviewing admin accounts if exposure is suspected.
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
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
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-93923
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB