GitHub Advisoryadvisory · Go

GHSA-v9vm-r24h-6rqm Gogs: Release tag option injection in release deletion

HIGH Published 2026-03-05 Modified 2026-03-05 Official page ↗
Aliases
CVE-2026-26194
Ecosystem
Go
Packages
gogs.io/gogs
Severity
High
CVSS vector
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:H/SC:N/SI:N/SA:N
Weaknesses
CWE-88
Reviewed
2026-03-05

Affected packages

• Go gogs.io/gogs: < 0.14.2 → fixed in 0.14.2

Description

Summary There is a security issue in Gogs where deleting a release can fail if a user-controlled tag name is passed to Git without the right separator, allowing Git option injection and therefore interfering with the process. Affected Component • internal/database/release.go `process.ExecDir(..., "git", "tag", "-d", rel.TagName)` Details `rel.TagName` is used as a CLI argument to `git tag -d` without `--` or `--end-of-options`. If the tag name begins with `-`, Git parses it as a flag. The prior mitigation is incomplete. There is path sanitization in place during creation: • internal/database/release.go `r.TagName = strings.TrimLeft(r.TagName, "-")` But it only covers one creation path and does not reliably protect tag deletions, such as tags added through `git push` or ref updates. Exploit Conditions 1. An attacker can add a tag name that starts with a dash into the repository. 2. A user with permission to delete releases triggers it through the web UI or API. Recommended Fix 1. Add end-of-options in release deletion: • `git tag -d -- ` 2. It is better to use the safe git-module deletion helper since it handles options properly. 3. All Git commands should be audited for user input, ensuring that the end-of-options separator is always used. Impact • Option injection into `git tag -d` • Tag/release deletion can fail or behave unexpectedly • Operational denial of service in release cleanup workflows • Potential release metadata inconsistency

Related

Alias · CVE (1)

  • CVE-2026-26194 Gogs is an open source self-hosted Git service. vulnerability

Weakness · CWE (1)

  • CWE-88 Improper Neutralization of Argument Delimiters in a Command weakness

References