Lucene search
+L

Node.js < 18.20.2, 19.x < 20.12.2, 21.x < 21.7.3 Command Injection Vulnerability (BatBadBut) - Windows

🗓️ 11 Apr 2024 00:00:00Reported by Copyright (C) 2024 Greenbone AGType 
openvas
 openvas
🔗 plugins.openvas.org👁 36 Views

Node.js Windows Command Injection Vulnerabilit

Related
Refs
Code
ReporterTitlePublishedViews
Family
ibm
IBM Security Bulletins
Security Bulletin: Node.js vulnerabilities affect IBM Spectrum Control
8 Jul 202409:24
ibm
ibm
IBM Security Bulletins
Security Bulletin: A remote execution vulnerability in Node.js affects IBM Rational Developer for i RPG and COBOL + Modernization Tools, Java Edition
17 Jun 202419:37
ibm
ibm
IBM Security Bulletins
Security Bulletin: IBM Watson Assistant for IBM Cloud Pak for Data is vulnerable to a code execution vulnerability in Node.js ( CVE-2024-27980)
21 Jun 202415:21
ibm
ibm
IBM Security Bulletins
Security Bulletin: Multiple vulnerabilities present in IBM Answer Retrieval for Watson Discovery versions 2.16 and earlier
29 May 202414:43
ibm
ibm
IBM Security Bulletins
Security Bulletin: IBM InfoSphere Information Server is affected by multiple vulnerabilities in Node.js.
13 Dec 202420:12
ibm
ibm
IBM Security Bulletins
Security Bulletin: Multiple vulnerabilities in Node.js affect IBM Business Automation Workflow Configuration Editor
10 May 202408:17
ibm
ibm
IBM Security Bulletins
Security Bulletin: IBM Planning Analytics Workspace is affected by vulnerabilities in multiple Open-Source Software (OSS) components
29 Jan 202519:19
ibm
ibm
IBM Security Bulletins
Security Bulletin: multiple vulerability in IBM Spectrum Symphony with Node.js
23 Oct 202520:18
ibm
ibm
IBM Security Bulletins
Security Bulletin: A vulnerability in Node.js affects IBM Rational® Application Developer for WebSphere® Software (CVE-2024-27980)
24 Jun 202416:16
ibm
ibm
IBM Security Bulletins
Security Bulletin: IBM Cloud Transformation Advisor is vulnerable to multiple vulnerabilities found in Node.js and IBM WebSphere Application Server Liberty
26 Jun 202414:14
ibm
Rows per page
# SPDX-FileCopyrightText: 2024 Greenbone AG
# Some text descriptions might be excerpted from (a) referenced
# source(s), and are Copyright (C) by the respective right holder(s).
#
# SPDX-License-Identifier: GPL-2.0-only

CPE = "cpe:/a:nodejs:node.js";

if(description)
{
  script_oid("1.3.6.1.4.1.25623.1.0.114480");
  script_version("2025-11-19T05:40:23+0000");
  script_tag(name:"last_modification", value:"2025-11-19 05:40:23 +0000 (Wed, 19 Nov 2025)");
  script_tag(name:"creation_date", value:"2024-04-11 06:51:41 +0000 (Thu, 11 Apr 2024)");
  script_tag(name:"cvss_base", value:"10.0");
  script_tag(name:"cvss_base_vector", value:"AV:N/AC:L/Au:N/C:C/I:C/A:C");
  script_tag(name:"severity_vector", value:"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H");
  script_tag(name:"severity_origin", value:"NVD");
  script_tag(name:"severity_date", value:"2024-04-10 16:15:16 +0000 (Wed, 10 Apr 2024)");

  # nb: CVE-2024-27980 is the programming language specific issue while CVE-2024-3566 is the CVE for
  # / about the underlying problem so both have been attached here.
  script_cve_id("CVE-2024-27980", "CVE-2024-3566");

  script_tag(name:"qod_type", value:"registry");

  script_tag(name:"solution_type", value:"VendorFix");

  script_name("Node.js < 18.20.2, 19.x < 20.12.2, 21.x < 21.7.3 Command Injection Vulnerability (BatBadBut) - Windows");

  script_category(ACT_GATHER_INFO);

  script_copyright("Copyright (C) 2024 Greenbone AG");
  script_family("Web application abuses");
  script_dependencies("gb_nodejs_smb_login_detect.nasl");
  script_mandatory_keys("nodejs/smb-login/detected");

  script_tag(name:"summary", value:"Node.js is prone to a command injection vulnerability on
  Windows dubbed 'BatBadBut'.");

  script_tag(name:"vuldetect", value:"Checks if a vulnerable version is present on the target host.");

  script_tag(name:"insight", value:"Due to the improper handling of batch files in
  child_process.spawn / child_process.spawnSync, a malicious command line argument can inject
  arbitrary commands and achieve code execution even if the shell option is not enabled.");

  script_tag(name:"affected", value:"Node.js versions prior to 18.20.2, starting from 19.x and prior
  to 20.12.2 and 21.x prior to 21.7.3 on Windows.

  Vendor note: It's important to note that End-of-Life versions are always affected when a security
  release occurs.");

  script_tag(name:"solution", value:"Update to version 18.20.2, 20.12.2, 21.7.3 or later.");

  script_xref(name:"URL", value:"https://nodejs.org/en/blog/vulnerability/april-2024-security-releases-2/");
  script_xref(name:"URL", value:"https://github.com/nodejs/node/blob/main/doc/changelogs/CHANGELOG_V21.md#2024-04-10-version-2173-current-rafaelgss");
  script_xref(name:"URL", value:"https://github.com/nodejs/node/blob/main/doc/changelogs/CHANGELOG_V20.md#2024-04-10-version-20122-iron-lts-rafaelgss");
  script_xref(name:"URL", value:"https://github.com/nodejs/node/blob/main/doc/changelogs/CHANGELOG_V18.md#18.20.2");
  script_xref(name:"URL", value:"https://www.kb.cert.org/vuls/id/123335");
  script_xref(name:"URL", value:"https://flatt.tech/research/posts/batbadbut-you-cant-securely-execute-commands-on-windows/");
  script_xref(name:"URL", value:"https://learn.microsoft.com/en-us/archive/blogs/twistylittlepassagesallalike/everyone-quotes-command-line-arguments-the-wrong-way");

  exit(0);
}

include("host_details.inc");
include("version_func.inc");

if (isnull(port = get_app_port(cpe: CPE)))
  exit(0);

if (!infos = get_app_version_and_location(cpe: CPE, port: port, exit_no_version: TRUE))
  exit(0);

version = infos["version"];
location = infos["location"];

# nb: From the Jul 2024 advisory:
#
# > It's important to note that End-of-Life versions are always affected when a security release occurs
if (version_is_less(version: version, test_version: "18.20.2")) {
  report = report_fixed_ver(installed_version: version, fixed_version: "18.20.2", install_path: location);
  security_message(port: port, data: report);
  exit(0);
}

if (version_in_range_exclusive(version: version, test_version_lo: "19.0", test_version_up: "20.12.2")) {
  report = report_fixed_ver(installed_version: version, fixed_version: "20.12.2", install_path: location);
  security_message(port: port, data: report);
  exit(0);
}

if (version_in_range_exclusive(version: version, test_version_lo: "21.0", test_version_up: "21.7.3")) {
  report = report_fixed_ver(installed_version: version, fixed_version: "21.7.3", install_path: location);
  security_message(port: port, data: report);
  exit(0);
}

exit(99);

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation

19 Nov 2025 00:00Current
8.3High risk
Vulners AI Score8.3
CVSS 38.1
CVSS 3.19.8
EPSS0.06883
SSVC
36