Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as low-privilege Gitea user
-
DeliverySubmit crafted markup content/ref value
-
ExploitTrigger external renderer invocation
-
ExecutionInject extra command arguments (CWE-88)
-
ImpactAlter rendering command behavior to impact confidentiality/integrity/availability
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Argument sanitization
|
| Exploitation Conditions | Exploitation requires that the Gitea instance has one or more external markup renderers explicitly configured (via the [markup.<renderer>] sections in app.ini), which is NOT enabled by default - this is the primary limiting factor and sharply narrows the exposed population. An attacker also needs a low-privilege authenticated account (PR:L) able to submit markup content or influence a repository ref/branch name that flows into the external renderer command, and must craft input that survives the pre-fix string substitution to inject extra arguments (reflected in AC:H). Instances using only Gitea's built-in Markdown/markup rendering, with no configured external renderers, are not affected. |
| Impact | Signals point to a moderate, conditional risk rather than a widespread emergency. The CVSS 3.1 base score of 7.5 reflects full C:H/I:H/A:H impact, but the vector itself tempers this with AC:H (high attack complexity) and PR:L (authenticated low-privilege attacker), meaning exploitation is neither trivial nor fully anonymous. EPSS is low at 0.26% (16th percentile), consistent with the absence of a public exploit and no CISA KEV listing - exploitation status is 'no public exploit identified at time of analysis.' The source diff confirms this is an argument-injection flaw (CWE-88) in Gitea's external markup renderer, where command variables were substituted into the full command string before shell tokenization; this only matters on instances that have external renderers configured, which is NOT the default. Note a signal conflict: the input Tags label this 'Information Disclosure,' but CWE-88 and the code evidence describe command argument injection with full CIA impact, so the 'Information Disclosure' framing understates the issue - treat the CWE-88/code evidence as authoritative over the tag. Also note a minor version discrepancy: Gitea's own release notes fix this in 1.27.2, while the Alpine advisory cites 1.27.3-r0 (package revisioning), so verify the exact fixed package for your distro. |
| Exploit ScenarioDerived | On a Gitea instance configured with external markup renderers (a non-default [markup.*] setting), an authenticated low-privilege user supplies crafted repository content or a ref/branch value that is interpolated into the external renderer's command line, injecting additional arguments (CWE-88) that alter how the external program executes. The high attack complexity (AC:H) reflects the need for a specific renderer configuration and a carefully crafted payload. No public exploit code was identified at the time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv2 – Oct 18, 2026
Argument injection in Gitea's configurable external markup renderer lets a low-privilege authenticated user smuggle extra command-line arguments into the renderer process by way of attacker-influenced values (such as repository ref or branch names) that were substituted into the configured renderer command string before it was parsed, potentially yielding code execution and access to repository content at the renderer's privilege level. Only instances that have explicitly configured one or more external renderers in app.ini are exposed, and exploitation further depends on crafting input that survives the pre-fix string substitution, which is why the vendor-derived vector carries AC:H despite the high confidentiality and integrity impact. Fixed upstream in Gitea 1.27.2 and packaged for Alpine Linux as gitea 1.27.3-r0; no public exploit code has been identified at time of analysis and EPSS is low (0.26%, 16th percentile), so this is a conditional, patch-now issue rather than a mass-exploitation emergency.
Earlier versions of this analysis (1)
Gitea, the self-hosted Git service, received a security fix packaged in Alpine Linux as version 1.27.3-r0. The underlying vulnerability type, root cause, and attacker-accessible impact are not described in the available intelligence - only that a fix was shipped in this Alpine package revision. Security teams running Gitea on Alpine Linux should treat this as an uncharacterized security update requiring upgrade.
RemediationAI
Vendor-released patch: upgrade to Gitea 1.27.2 or later upstream, or on Alpine Linux to the gitea 1.27.3-r0 package (apk upgrade gitea), which backports the external-renderer fix; verify the running version after upgrade and restart the service. If immediate upgrade is not possible, the most effective compensating control is to remove or comment out every [markup.<renderer>] section in app.ini and restart Gitea - with no external renderer command configured the vulnerable code path is never reached, and the trade-off is that the affected formats (for example AsciiDoc or reStructuredText) will no longer render and will be shown as plain text or raw content to users. Additionally, because the injected values arrive through repository ref, branch, and markup content that a low-privilege authenticated account can influence (PR:L), tighten who may create repositories and push branches until patched (restrict repository creation to trusted teams or disable it instance-wide), accepting the loss of self-service repo creation for untrusted users. Review app.ini for renderer commands that embed placeholders in unquoted positions and use the fully quoted form shown in the upstream advisory GHSA-579w-82gf-89m2 once patched, and audit logs for unexpected renderer invocations or new branches with unusual names containing whitespace or quote characters. No vendor-released patch has been identified for pre-1.27.2 branches beyond the 1.27.2 fix, so deployments on older minor lines should plan a jump to a supported release rather than wait for a backport.
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 supports optional external markup renderers declared in app.ini under [markup.<name>] sections, where an administrator supplies a Command template containing the placeholders $GITEA_PREFIX_SRC and $GITEA_PREFIX_RAW (previously also Windows-style %VAR% forms) plus a temporary input file path. Before the fix, modules/markup/external/external.go performed strings.NewReplacer substitution of these variables directly into the raw command string and only afterwards called shellquote.Split on the result. Any substituted value that contained whitespace, quotes, or shell metacharacters therefore altered how the command line was tokenized, letting an attacker append or reshape arguments passed to the renderer binary. This is CWE-88 (Improper Neutralization of Argument Delimiters in a Command), i.e. argument injection rather than classic CWE-78 shell metacharacter injection, because the fix is about delimiter handling rather than escaping a shell. The upstream patch (PR #38885, with follow-up #38898) inverts the order of operations: prepareExternalCommand() first splits the administrator's Command with shellquote.Split, determines program and argument vector, and only then performs variable replacement per-argument, so an injected value can no longer create new arguments. The same patch set hardens the data that flows into those placeholders, adding util.PathEscapeSegments on the ref path in routers/common/markup.go and replacing hand-built path.Join("branch", ...) URLs with git.RefNameFromBranch(...).RefWebLinkPath() in the organization and user profile readme handlers, so branch and ref names cannot carry unexpected delimiters into the renderer invocation or the generated links. The attack surface exists only where a renderer binary is configured; Gitea's built-in Markdown pipeline never spawns a process and is unaffected.
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:L/UI:N/S:U/C:H/I:H/A:H
AC:H because exploitation depends on a non-default external-renderer configuration plus a crafted injection payload, and PR:L because an authenticated low-privilege user must supply the rendered content.
Primary rating from Vendor (vendor:alpine).
CVSS VectorVendor: vendor:alpine
Lifecycle Timeline
2DescriptionCVE.org
Alpine Linux: gitea fixed in 1.27.3-r0
Executive ViewAI
Gitea's optional external markup rendering feature contains an argument-injection flaw (CVE-2026-73539) that could let a user with a repository account execute commands at the renderer's privilege level and reach source code beyond their intended access. Only self-hosted instances that explicitly configure one or more external renderers in app.ini are exposed, so leadership attention should center on identifying those specific deployments and confirming their upgrade path rather than on broad enterprise exposure. Where affected, the confidentiality and integrity of hosted repositories are at risk, but the configuration prerequisite and the difficulty of crafting input that survives string substitution keep overall likelihood low.
Apply vendor patch. Until upgraded, disable external markup renderers in app.ini (the prerequisite for exposure), limit branch and ref naming rights to trusted users, and run any renderer process under a low-privilege service account without access to secrets or repository storage.
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-101105
NVD
CVE.org
EPSS
GitHub
Exploit-DB