Skip to main content

Gogs CVE-2025-64719

| EUVDEUVD-2025-210329 MEDIUM
Improper Input Validation (CWE-20)
2026-06-22 https://github.com/gogs/gogs GHSA-3qq3-668m-v9mj
4.9
CVSS 3.1 · Vendor: https://github.com/gogs/gogs
Share

Severity by source

Vendor (https://github.com/gogs/gogs) PRIMARY
4.9 MEDIUM
AV:N/AC:L/PR:H/UI:N/S:U/C:N/I:N/A:H
vuln.today AI
4.9 MEDIUM

PR:H reflects required authenticated write access; A:H captures persistent web UI breakage; C:N/I:N because only availability is impacted, scoped to the target repository.

3.1 AV:N/AC:L/PR:H/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:H/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (https://github.com/gogs/gogs).

CVSS VectorVendor: https://github.com/gogs/gogs

CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:N/I:N/A:H
Attack Vector
Network
Attack Complexity
Low
Privileges Required
High
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

Lifecycle Timeline

2
Source Code Evidence Fetched
Jun 22, 2026 - 17:21 vuln.today
Analysis Generated
Jun 22, 2026 - 17:21 vuln.today

DescriptionCVE.org

Summary

A malicious user with rights to create a new file on a repository or wiki page can trigger a denial of service condition in which the pages containing the listing of files will return HTTP error 500 and render the web interface unusable for the repository or wiki.

Details

The issue is present in file internal/route/repo/wiki.go and internal/route/repo/view.go where the pages try to recover commit information. If errors are returned while recovering commit information, the page will return a 500 error and stop rendering, resulting in a denial of service. In view.go the issue occurs at line 56 while a slightly different issue occurs in wiki.go at line 174 where commits[0] is dereferenced without checking if it contains value. It is possible to trigger issues in assigning the correct value to variable commits by using a specific string as part of the page title. The issue is linked to the fact that file names can contain special characters such as *, ?, [, ], etc. that will be interpreted as git's pathspec instead of a simple string. So crafting a name containing an incomplete pathspec sequence will trigger this error.

PoC

As a proof of concept consider the file name "[] and how it affects repository and wiki pages. In the following images it is shown how pages are created, the error shown in the web page right after creation and the error as logged in the console.

<img width="835" height="503" alt="repo_creation" src="https://github.com/user-attachments/assets/cdee9625-33d9-42d3-a5fa-264fba4923ed" />

Figure 1: Creation of malicious file in repository

<img width="832" height="692" alt="repo_error_web" src="https://github.com/user-attachments/assets/53c57366-8f45-4a0f-a2ac-86f4a08467cc" />

Figure 2: Malicious file in repository causes error 500

<img width="934" height="56" alt="repo_error_console" src="https://github.com/user-attachments/assets/26427fc3-bead-4e41-a484-e2d53289a2da" />

Figure 3: Console error caused by malicious file in repository

<img width="835" height="503" alt="wiki_creation" src="https://github.com/user-attachments/assets/7a5c9836-64e3-4824-b6e5-9f9a80e7f18a" />

Figure 4: Creation of malicious file in wiki

<img width="1001" height="463" alt="wiki_error_web" src="https://github.com/user-attachments/assets/33c5a907-b81c-4157-bd37-33341412172a" />

Figure 5: Malicious file in wiki causes error 500

<img width="1018" height="537" alt="wiki_error_console" src="https://github.com/user-attachments/assets/9b0ab551-5720-4715-a2ac-f7310534f025" />

Figure 6: Console error caused by malicious file in wiki

Impact

The repository and wiki pages will not render when files named with the payload are present in the repository or in the wiki. This condition will be present as long as the malicious file is present in the repository or wiki. The issue will not cause a DoS condition when using the server via CLI.

AnalysisAI

Denial of service in Gogs repository and wiki web interfaces allows any authenticated user with write access to permanently break file listing pages by committing a file whose name contains incomplete git pathspec metacharacters. Affected versions are Gogs <= 0.14.2; the web UI for the targeted repository or wiki returns HTTP 500 on every subsequent page load until an administrator removes the malicious file via CLI. Publicly available exploit code exists as documented in the GHSA-3qq3-668m-v9mj advisory with a specific PoC payload; no active exploitation confirmed (not in CISA KEV).

Technical ContextAI

The root cause is CWE-20 (Improper Input Validation) in two Go route handlers: internal/route/repo/view.go (line 56) and internal/route/repo/wiki.go (line 174). Both handlers call the github.com/gogs/git-module library to retrieve commit metadata for files in a repository or wiki. Git's pathspec syntax interprets characters such as *, ?, [, and ] as glob patterns rather than literal filename characters. When a filename contains an incomplete bracket expression (e.g., the payload '"[]'), git rejects the pathspec and returns an error instead of commit data. The view.go handler fails to guard against this error, and wiki.go additionally dereferences commits[0] without checking whether the returned slice is non-empty, causing a nil-pointer panic. The fix in v0.14.3 passes git.LsTreeOptions{Verbatim: true} to all Entries() calls across view.go, wiki.go, and the API handlers in contents.go and tree.go, instructing the library to treat filenames as literal strings. The underlying git-module dependency was simultaneously upgraded from v1.8.4 to v1.8.6 to support this flag. Affected package: pkg:go/gogs.io_gogs <= 0.14.2.

RemediationAI

Upgrade Gogs to v0.14.3 (https://github.com/gogs/gogs/releases/tag/v0.14.3), which is the vendor-confirmed patched release addressing this vulnerability via PR #8116 (commit ae41bab5f28e4880edcef01c91d2cbb8839ec9e4). The fix passes git.LsTreeOptions{Verbatim: true} to all git listing calls and upgrades the github.com/gogs/git-module dependency to v1.8.6. If immediate upgrade is not feasible, restrict repository and wiki write permissions to fully trusted users only, eliminating the attacker's ability to introduce the malicious filename - note this is a policy control, not a code fix, and trusted insiders can still trigger the condition. As a detection measure, implement a pre-receive git hook that rejects filenames containing unbalanced bracket expressions or other incomplete pathspec metacharacters (*?[]); be aware this may interfere with legitimate filenames containing these characters. If the DoS condition has already been triggered, the only recovery path is CLI-based removal of the offending file followed by a force-push or direct repository manipulation, since the web interface will remain unavailable.

Share

CVE-2025-64719 vulnerability details – vuln.today

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