Skip to main content

uniget CLI EUVDEUVD-2026-82370

| CVE-2026-55062 HIGH
Path Traversal (CWE-22)
2026-08-17 https://github.com/uniget-org/cli GHSA-m6jg-wr9m-cg2f
8.4
CVSS 4.0 · Vendor: https://github.com/uniget-org/cli
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Obtain local CLI access (PR:L)
  2. Delivery
    Craft hook filename with ../ traversal
  3. Exploit
    Invoke `uniget hooks edit` with escape path
  4. Execution
    Unsanitized concat resolves outside hooksDir
  5. Impact
    Read 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 (hooks edit, hooks remove, or hook processing), specifically the pre-install/post-install hook filename argument, which is concatenated to the hooks directory without sanitizing '../'. For the read-file PoC, an editor must be configured via the EDITOR or UNIGET_EDITOR environment variable (e.g. EDITOR=cat). Exploitation is LIMITED by: local access only (no remote/network path), the CLI operating with the invoking user's privileges (so meaningful impact requires uniget to run in a privileged, automated, or multi-user context where the hook argument is attacker-influenced), and affected versions <0.27.6 (fixed in 0.27.6, which adds an absolute-path prefix check against hooksDir and rejects symlinks).

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 uniget hooks edit. A publicly available exploit (PoC) exists and is confirmed in the GHSA-m6jg-wr9m-cg2f advisory, and a vendor patch (v0.27.6) is available - but there is no CISA KEV listing and no EPSS score in the input, so exploitation status is: publicly available exploit code exists, with no evidence of active exploitation in the wild. The key nuance the raw score hides: because exploitation is local and the CLI acts with the invoking user's own privileges, the classic PoC (a user reading their own /etc/passwd) is largely a self-exploit with little escalation value. The genuine risk arises only when uniget is run in a privileged or shared/automated context (e.g. root-run installs, CI pipelines, or a service invoking it with attacker-influenced hook arguments), where the traversal plus the file-write/edit primitive (VI:H) becomes a real integrity threat. Net: real and worth patching, but a targeted/low-widespread issue, not an internet-facing emergency. Signals are consistent (local vector matches local PoC); the main caveat is that VC:H/VI:H assume a privileged execution context that the base description does not establish.

Exploit ScenarioDerived

A user or automated process invokes uniget hooks edit --type=pre-install (or the remove/process hook paths) with an attacker-controlled filename containing '../' sequences; the unsanitized concatenation preInstallHooksDir + "/" + hookFileName resolves outside the hooks directory. With EDITOR/UNIGET_EDITOR set (e.g. cat), the attacker reads arbitrary files such as /etc/passwd, and the edit/write path allows manipulating files outside the hooks directory. A working PoC is published in the GHSA advisory; if uniget runs with elevated privileges the same primitive escalates to privileged file read/write.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.1% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv2 – 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)
v1 Aug 17, 2026 - 18:40

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

cli < 0.27.6

Affected Packages

go gitlab.com/uniget-org/cli fix: 0.27.6
euvd cli fix: 0.27.6

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

Vendor (https://github.com/uniget-org/cli) PRIMARY 8.4 HIGH
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
vuln.today AI 7.1 HIGH

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).

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

Primary rating from Vendor (https://github.com/uniget-org/cli).

CVSS VectorVendor: https://github.com/uniget-org/cli

Attack Vector
Local
Attack Complexity
Low
Attack Requirements
None
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

2
Analysis Updated
Sep 17, 2026 - 19:28 vuln.today
v2 - CVSS changed
CVSS changed
Sep 17, 2026 - 19:22 NVD
8.4 (HIGH)

DescriptionCVE.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 concatenation

Hook 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

Why It Matters

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.

Business Impact: Medium
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.1%
Top 97% exploitable
Prevalence
Low
niche Go DevOps CLI for installing container tools, limited footprint
Threat Intel
1
1 source
Exploit
POC
Public exploit code exists
Data Quality
6 sources
Confidence: High

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC Yes
EPSS 0.1%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
Poc
System Exposure· derived
Small
Automatable· derived
No
Human Impact
Medium

Priority Score

62
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +42
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.

More in Go

View all
CVE-2023-44487 HIGH POC
7.5 Oct 10

Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour

CVE-2016-5386 HIGH
8.1 Jul 19

The net/http package in Go through 1.6 does not attempt to address RFC 3875 section 4.1.18 namespace conflicts and there

CVE-2025-68121 CRITICAL POC
10.0 Feb 05

Critical certificate validation bypass in Go crypto/tls during session resumption. If ClientCAs or RootCAs fields are mu

CVE-2019-14809 CRITICAL POC
9.8 Aug 13

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

CVE-2026-90942 CRITICAL POC
9.3 Sep 14

Casdoor through 4.4.0 exposes its instance-wide built-in JWT signing private key unmasked through the /api/get-certs and

CVE-2026-101090 CRITICAL POC
9.3 Sep 27

Host header injection in Nezha 2.2.3's OAuth2 redirect endpoint (/api/v1/oauth2/{provider}) allows an unauthenticated re

CVE-2026-78428 HIGH POC
8.8 Sep 17

Session cross-wiring in SUSE NeuVector before 5.6.1 allows an unauthenticated remote attacker to obtain another user's a

CVE-2026-92791 HIGH POC
8.7 Sep 16

Unauthenticated path traversal in Uber Kraken through 0.1.29 allows remote attackers to read files outside the configure

CVE-2018-7187 HIGH POC
8.8 Feb 16

The "go get" implementation in Go 1.9.4, when the -insecure command-line option is used, does not validate the import pa

CVE-2026-16651 HIGH POC
8.7 Sep 21

Denial of service in Temporal Server allows an authenticated caller holding at least namespace read permission to crash

CVE-2026-82405 HIGH POC
8.7 Sep 23

Account takeover in Klever-Go's KleverUpdateAccountPermission built-in (all versions prior to 1.7.20) allows an attacker

CVE-2026-82409 HIGH POC
8.4 Sep 23

Maliciously crafted on-chain account names processed by Klever-Go prior to 1.7.20 are spliced into Elasticsearch _bulk r

Vendor StatusVendor

SUSE

Product Status
SUSE Linux Enterprise Server 16.1 Affected
SUSE Linux Enterprise Server for SAP applications 16.1 Affected

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