Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain local CLI access (PR:L)
-
DeliveryCraft hook filename with ../ traversal
-
ExploitInvoke `uniget hooks edit` with escape path
-
ExecutionUnsanitized concat resolves outside hooksDir
-
ImpactRead or overwrite arbitrary files
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Path canonicalization, traversal prevention
MITRE ATT&CK
2 techniques across 2 tactics: Discovery, Collection The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires the ability to execute the uniget CLI locally and pass an attacker-controlled hook filename to the hook subcommands ( |
| Impact | The vendor scores this CVSS 4.0 8.4 (High), but that number overstates the real-world priority once every signal is weighed together. The vector is unambiguously local (AV:L) and requires privileges (PR:L) - the 'attacker' is whoever can already invoke the uniget CLI, and the PoC simply reads /etc/passwd by feeding '../../../../etc/passwd' to |
| Exploit ScenarioDerived | A user or automated process invokes |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv2 – Sep 17, 2026
Path traversal in the uniget CLI (Go module gitlab.com/uniget-org/cli) before version 0.27.6 lets a local user read and overwrite arbitrary files outside the hooks directory by passing a hook filename containing '../' escape sequences to the hooks edit and hooks remove subcommands. The vendor rates this CVSS 4.0 8.4 (High), but the practical exposure is narrower: exploitation requires local execution of the CLI with an attacker-influenced hook filename (CVSS PR:L) and the process runs with the invoking user's own privileges, so meaningful impact depends on uniget being invoked in a privileged, automated, or multi-user context. Publicly available exploit code exists (the advisory includes a working PoC using EDITOR=cat to read /etc/passwd); there is no indication of confirmed active exploitation (not in CISA KEV), and a vendor patch is available in 0.27.6.
Earlier versions of this analysis (1)
Path traversal in uniget CLI's hook filename handling exposes arbitrary local filesystem files to any user able to invoke the uniget hooks edit or hooks remove subcommands, affecting all releases prior to v0.27.6. The root cause in hooks.go is direct string concatenation of the unsanitized args[0] value with preInstallHooksDir, allowing ../ sequences to escape the designated hooks directory entirely. A publicly available proof-of-concept included in GHSA-m6jg-wr9m-cg2f demonstrates reading /etc/passwd in a single command; no public exploit is independently weaponized and the vulnerability is not listed in CISA KEV, but the PoC lowers the exploitation bar substantially for anyone with CLI access.
RemediationAI
Upgrade to uniget CLI 0.27.6 or later (release: https://github.com/uniget-org/cli/releases/tag/v0.27.6; fix commit: https://github.com/uniget-org/cli/commit/7b4f18a9f00f0955f830c7ccf266ed0de5f9fd91), which makes the hook path absolute and requires it to sit under the hooks directory, and refuses to operate on symlinked hook files - vendor-released patch: 0.27.6. Because exploitation is local and limited to the invoking user's privileges, the highest-value compensating controls are contextual rather than network-based: never run uniget hooks from privileged, automated, or multi-user contexts (cron, CI runners, sudo/SUID wrappers, system provisioning) where an attacker can influence the hook filename argument, since the traversal operates with whatever privileges that process holds and can both read and, through the editor, overwrite files - the trade-off is loss of automation convenience for those workflows. Where upgrading is not immediately possible, run uniget as a dedicated low-privilege account and restrict the permissions of the hooks directory and its parent so that traversed paths are unreadable/unwritable by that account (side effect: legitimate hooks referencing tooling under other paths may break). Note that constraining the EDITOR/UNIGET_EDITOR value does not by itself prevent the write path, because the unsanitized filename is what is passed to the editor; the only reliable barrier is the upstream containment check in 0.27.6. Given that publicly available exploit code exists, treat this as a priority within local privilege and multi-tenant deployment models rather than as a remotely reachable issue.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in go, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
uniget is a Go-based package/installation CLI whose hook subsystem stores pre-install/post-install hook scripts in a hooks directory and shells out to a user-configured editor (EDITOR or UNIGET_EDITOR) to create or modify them. In cmd/uniget/hooks.go the hook filename argument was taken directly from user input and concatenated onto the hooks directory path (preInstallHooksDir + "/" + hookFileName) with no validation, so sequences such as ../../../../etc/passwd resolved outside the intended directory. This is a classic CWE-22 path traversal: the root cause is missing canonicalization and containment checking of a user-supplied path component before it is used in file operations and in exec.Command invocation of the editor. The same unsanitized path reached both the edit and remove flows and the hook-processing loop, giving read and write (via the editor) capability equivalent to the permissions of the uniget process. The Go-ecosystem identifier is pkg:go/gitlab.com_uniget-org_cli. The upstream fix (commit 7b4f18a9f00f0955f830c7ccf266ed0de5f9fd91) converts the path with filepath.Abs and rejects it unless it begins with the hooks directory prefix, and additionally rejects symlinked hook files via os.Lstat before the editor is launched.
Know when Go 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
CVSS:4.0/AV:L/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N
Local CLI invocation with the user's own privileges (AV:L, PR:L, no UI); arbitrary out-of-directory file read and edit gives C:H/I:H, no availability impact (A:N).
Primary rating from Vendor (https://github.com/uniget-org/cli).
CVSS VectorVendor: https://github.com/uniget-org/cli
Lifecycle Timeline
2DescriptionCVE.org
Summary
Path Traversal vulnerability in hook filename handling allows attackers to access and manipulate arbitrary files outside the hooks directory via directory escape sequences like [passwd](vscode-file://vscode-app/app/extra/vscode/resources/app/out/vs/code/electron-browser/workbench/workbench.html).
Details File: [hooks.go](vscode-file://vscode-app/app/extra/vscode/resources/app/out/vs/code/electron-browser/workbench/workbench.html) Lines 135-160
hookFileName := args[0] // User input not validated
hookFile = preInstallHooksDir + "/" + hookFileName // Direct concatenationHook filenames are concatenated directly without sanitizing ../ sequences, allowing directory traversal.
PoC
Step 1: Set cat as editor
export EDITOR="cat"Step 2: Read /etc/passwd via path traversal
./uniget hooks edit --type=pre-install "../../../../etc/passwd"Step 3: Output shows file contents
root:x:0:0:root:/root:/bin/bash
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[...]<img width="1014" height="178" alt="image" src="https://github.com/user-attachments/assets/0db0fe7e-533b-4d8e-a346-81886ce866ab" />
Executive ViewAI
A path traversal flaw in the uniget CLI (Go module gitlab.com/uniget-org/cli) prior to version 0.27.6 allows a local user to read and overwrite files anywhere on the host by supplying a hook filename containing '../' sequences to the hooks edit and hooks remove subcommands. The risk is concentrated wherever uniget is run from automated pipelines, shared build agents, or privileged service accounts, since the process inherits the invoking user's rights and could be steered into modifying configuration, credential, or system files. Publicly available exploit code exists (working PoC), though there is no indication of confirmed active exploitation (not in CISA KEV), so leadership should treat this as a near-term remediation priority for developer and CI/CD environments rather than an emergency incident.
Apply vendor patch.
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
Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.
Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour
The net/http package in Go through 1.6 does not attempt to address RFC 3875 section 4.1.18 namespace conflicts and there
Critical certificate validation bypass in Go crypto/tls during session resumption. If ClientCAs or RootCAs fields are mu
net/url in Go before 1.11.13 and 1.12.x before 1.12.8 mishandles malformed hosts in URLs, leading to an authorization by
Casdoor through 4.4.0 exposes its instance-wide built-in JWT signing private key unmasked through the /api/get-certs and
Host header injection in Nezha 2.2.3's OAuth2 redirect endpoint (/api/v1/oauth2/{provider}) allows an unauthenticated re
Session cross-wiring in SUSE NeuVector before 5.6.1 allows an unauthenticated remote attacker to obtain another user's a
Unauthenticated path traversal in Uber Kraken through 0.1.29 allows remote attackers to read files outside the configure
The "go get" implementation in Go 1.9.4, when the -insecure command-line option is used, does not validate the import pa
Denial of service in Temporal Server allows an authenticated caller holding at least namespace read permission to crash
Account takeover in Klever-Go's KleverUpdateAccountPermission built-in (all versions prior to 1.7.20) allows an attacker
Maliciously crafted on-chain account names processed by Klever-Go prior to 1.7.20 are spliced into Elasticsearch _bulk r
Same weakness CWE-22 – Path Traversal
View allSame technique Path Traversal
View allVendor StatusVendor
SUSE
| Product | Status |
|---|---|
| SUSE Linux Enterprise Server 16.1 | Affected |
| SUSE Linux Enterprise Server for SAP applications 16.1 | Affected |
EUVD-2026-82370
GHSA-m6jg-wr9m-cg2f
NVD
CVE.org
EPSS
Exploit-DB