Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as migration-capable user
-
DeliveryPoint migration at attacker-controlled source server
-
ExploitSource API reports max_response_items=0
-
ExecutionPaginated download loop never terminates
-
ImpactServer memory exhausted, Gitea denial of service
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource consumption limits
MITRE ATT&CK
1 technique across 1 tactic: Impact The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires an authenticated Gitea account with permission to migrate repositories (PR:L) AND the ability to direct that migration at a source server the attacker controls or can manipulate so its settings API returns max_response_items=0, which causes the paginated download loop to run indefinitely. Limiting factors: migration must be enabled and available to the attacker's account, and the attacker must control the source server's reported API settings - it is not exploitable against a default install by an unauthenticated outsider. Affected versions are Gitea ≤ 28.0.0; fixed in 28.1.0. |
| Impact | This is a genuine but moderate-priority availability issue, not a top-tier emergency. The provided CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H, base 6.5) is internally consistent with the description: exploitation is network-reachable and low-complexity, but requires an authenticated account (PR:L) with repository-migration privileges, and impact is confined to availability (A:H) with no confidentiality or integrity effect - appropriate for a CWE-400 uncontrolled resource consumption flaw. The real-world signals argue AGAINST treating this as urgent: EPSS is only 0.17% (5th percentile), the CVE is NOT on CISA KEV, and no public exploit code is referenced in the input. Exploitation status is therefore 'no public exploit identified at time of analysis.' The main caveat is a limiting factor the CVSS does not fully capture - the attacker must be able to initiate a migration AND control (or spoof) the source Gitea server's API settings to report max_response_items=0, so this is realistically an abuse-by-authorized-user or malicious-outbound-migration scenario rather than mass opportunistic exploitation. Net: patch in normal cadence; prioritize higher if migration is open to untrusted/low-trust users. |
| Exploit ScenarioDerived | An attacker with a Gitea account that is permitted to migrate repositories stands up a server they control (or a malicious API endpoint) whose settings API reports max_response_items as 0. They start a repository migration from their own Gitea instance pointing at that server; the paginated download loop never terminates, growing server memory until the host is exhausted and Gitea becomes unavailable to all users. No public proof-of-concept is referenced in the available data; exploitation is network-based and low-complexity but requires an authenticated, migration-capable account. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 07, 2026
Repository migration in Gitea through 28.0.0 can be driven into an unbounded paginated download loop that consumes server memory until exhaustion, denying service to other users. The flaw is reachable by an authenticated user holding repository-migration rights (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H) who directs a migration at a source server they control and that reports max_response_items as 0, which Gitea treats as the loop's termination condition. Exploitation is not known to be active - no public exploit code identified at time of analysis - and EPSS is low at 0.17% (5th percentile), making this a genuine but moderate-priority availability issue; a vendor-released patch exists in Gitea 28.1.0.
RemediationAI
Vendor-released patch: Gitea 28.1.0 - upgrade any instance running 28.0.0 or earlier to 28.1.0, which is the fixed version published with the release blog (https://blog.gitea.com/release-of-28.1.0/), the release tag (https://github.com/go-gitea/gitea/releases/tag/v28.1.0), and advisory GHSA-jj5r-9rpc-8h6h. Where immediate upgrade is not possible, reduce the attack surface by disabling repository migration entirely for untrusted accounts with the Gitea [repository] DISABLE_MIGRATIONS = true setting, accepting that this also blocks legitimate user-driven imports; or, if migrations must stay enabled, restrict which remote hosts migrations may target using the Gitea migration allow/block domain settings (ALLOWED_DOMAINS / BLOCKED_DOMAINS, plus local-network restrictions) so users cannot point imports at attacker-controlled or arbitrary servers - the trade-off being that legitimate migrations from blocked hosts will fail and host lists need maintenance. Because exploitation requires only a low-privileged authenticated account, audit which roles currently hold repository-creation/migration permissions and remove that capability from accounts that do not need it, and consider per-process memory limits or container memory cgroups as a last-resort containment measure, with the caveat that this converts a server-wide denial of service into a workload restart rather than preventing the underlying loop.
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
The root cause is CWE-400 (Uncontrolled Resource Consumption) in Gitea's repository-migration downloader. When Gitea migrates a repository from another Gitea instance it queries the source server's API settings and uses the reported max_response_items value as the page size that ends its paginated download loops. If a hostile source reports max_response_items as 0, the pagination termination check never advances, the loop runs indefinitely, and the accumulated download state grows server memory until it is exhausted. The affected technology is Gitea's Go-based migration/import pipeline (repository migration endpoints and the API settings handshake), and the weakness requires two preconditions that constrain real-world exposure: the attacker must hold an authenticated account permitted to migrate repositories (PR:L per the assessed vector), and must be able to supply or manipulate the remote source server's reported settings so that the value is 0 - an unauthenticated outsider cannot trigger it against a default install. Upstream remediation is referenced by pull requests 39501 and 39507 and advisory GHSA-jj5r-9rpc-8h6h; the diff data provided for PR 39501 shows a broader hardening change set across API router and content-serving code rather than the isolated migration guard, so the precise pagination fix should be confirmed against the tagged 28.1.0 release and the advisory rather than inferred from the snippet alone.
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:L/UI:N/S:U/C:N/I:N/A:H
Network-triggered via migration with an authenticated migration-capable account (PR:L), low complexity, no user interaction; impact is availability-only (A:H) with no confidentiality/integrity effect.
Primary rating from Vendor (88ee5874-cf24-4952-aea0-31affedb7ff2).
CVSS VectorVendor: 88ee5874-cf24-4952-aea0-31affedb7ff2
Lifecycle Timeline
2DescriptionCVE.org
When migrating a repository from another Gitea instance, Gitea used the page size reported in the source server's API settings to end its paginated downloads. A source that reported max_response_items as 0 made these loops run indefinitely and grow server memory until it was exhausted. Any user who can migrate repositories could point a migration at a server they control and cause a denial of service.
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
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
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-94062
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB