Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach app forwarding iface parameter
-
DeliverySubmit interface name '__proto__'
-
ExploitnetworkStats writes onto Object.prototype on BSD
-
ExecutionSeven fixed keys inherited process-wide
-
ImpactCorrupt application branching, serialization, or lookups
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V3 - Web Frontend Security Prototype pollution prevention
MITRE ATT&CK
2 techniques across 2 tactics: Execution, Initial Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires ALL of: (1) the host runs FreeBSD, OpenBSD, or NetBSD - Linux/Android, macOS, and Windows code paths are incidentally guarded and leave Object.prototype clean; (2) the application passes attacker-controlled input directly as the ifaces argument to si.networkStats() (passing '*', omitting the argument, or using only names from si.networkInterfaces() is unaffected); and (3) the underlying netstat invocation exits successfully, which it does even for an unknown interface. The attacker-supplied name must be '__proto__' (or similar prototype-chain key). Limiting factors beyond the raw CVSS: impact is bounded because only seven fixed property names are written and their values come from interface statistics, not the attacker, so consequences are application-specific name collisions (wrong branching, corrupted for...in serialization/config merging/validation/lookups) rather than arbitrary-key pollution or known RCE. Workarounds per vendor: validate the interface name against si.networkInterfaces() or reject __proto__/constructor/prototype, or never pass untrusted input; upgrading to 5.33.13 is the complete fix. |
| Impact | This is a moderate, not emergency, priority. The CVSS 3.1 vector (AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:L, base 6.5) shows the network reachability and lack of required privileges or interaction are offset by High attack complexity, and the vuln.today Decision label is 'this_month' rather than act_now/emergency - consistent with a conditionally-reachable prototype-pollution bug. No EPSS score and no KEV listing were provided, so there is no signal of active or widespread exploitation; status is no public exploit confirmed as weaponized. A public PoC reference exists in the GHSA advisory, but it is not verified as a working end-to-end exploit on the affected platforms - the reporter only verified the pollution primitive on macOS and explicitly could not verify BSD end-to-end exploitation. Two independent preconditions sharply limit real-world risk versus the raw score: the host must run FreeBSD, OpenBSD, or NetBSD (Linux, macOS, and Windows are incidentally guarded and not reachable), and the application must forward attacker-controlled input as the interface name to si.networkStats(). The advisory also notes the attacker controls only which of seven fixed property names appear on Object.prototype, not their values, so this is not an arbitrary-key pollution primitive and I:H should be read as the advisory's deliberately conservative default rather than a measurement. Net: patch within the normal maintenance window (this month); it is a real but bounded, deployment-dependent issue, not a drop-everything flaw. |
| Exploit ScenarioDerived | On a FreeBSD/OpenBSD/NetBSD host, an application forwards an attacker-influenced value (e.g. a request parameter) as the ifaces argument to si.networkStats(). The attacker supplies the interface name '__proto__', causing calcNetworkSpeed() to write seven fixed-name properties (rx_bytes, tx_bytes, rx_sec, tx_sec, ms, last_ms, operstate) onto Object.prototype, polluting every object in the Node.js process. A public PoC reference exists in the GHSA advisory (the pollution primitive was verified on macOS); it is not verified as a working end-to-end exploit on the BSD platforms, and CVSS AC:H reflects that a BSD host plus an app forwarding untrusted input are both required. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 28, 2026
Prototype pollution in the npm systeminformation library (versions up to and including 5.33.12) lets unauthenticated remote attackers who control the ifaces argument to networkStats() write seven fixed properties onto Object.prototype, but only on FreeBSD, OpenBSD and NetBSD hosts where the application forwards untrusted input and the underlying netstat call succeeds. The impact is bounded and application-specific: wrong branching, extra enumerable keys in for...in serialization, configuration merging, validation and lookup collisions, with low integrity and availability impact rather than known remote code execution. A public PoC reference exists; it is not verified as working exploit code, and this is assessed as a moderate, not emergency, priority.
RemediationAI
Upgrade to systeminformation 5.33.13, which changes the _network cache to Object.create(null) so __proto__ is stored as an ordinary own property; the fix commit is https://github.com/sebhildebrandt/systeminformation/commit/6ff25a1ebc0b1fdc7a8aa3507e46f22007da2969 and the advisory is https://github.com/sebhildebrandt/systeminformation/security/advisories/GHSA-7648-jmwf-vw7j. If immediate upgrade is not possible, validate the ifaces argument against names returned by si.networkInterfaces() and reject __proto__, constructor and prototype, or never pass untrusted input as the interface name; omitting the argument or passing '*' is unaffected. Freezing Object.prototype also blocks the write but has wide side effects on other dependencies and is not recommended as a general mitigation.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in npm
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
systeminformation is a Node.js system and OS information library. Its lib/network.js module keeps a per-interface cache declared as a plain object (const _network = {}) and indexes it with the caller-supplied interface name after util.sanitizeString(), which is a shell-metacharacter filter for netstat/ifconfig command construction, not an object-key validator. Passing the name __proto__ invokes the inherited Object.prototype getter, so the if (!_network[iface]) guard does not create an own entry and calcNetworkSpeed() writes rx_bytes, tx_bytes, rx_sec, tx_sec, ms, last_ms and operstate onto Object.prototype. This is CWE-1321 prototype pollution with attacker control over which fixed attribute names appear, not their values, which come from interface statistics. The reachable public-API path is limited to FreeBSD, OpenBSD and NetBSD because the calcNetworkSpeed() call sits outside the row-parsing loop and is reached whenever netstat exits successfully, including for an unknown interface; Linux/Android, macOS and Windows branches have incidental guards that return early. The assessed CVSS 3.1 vector is AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:L. The fix in 5.33.13 changes the cache to Object.create(null); the same commit also replaces Object.hasOwn checks with {}.hasOwnProperty.call in lib/cpu.js as related hardening.
Know when Systeminformation gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:L
AC:H because exploitation needs a BSD host plus an app forwarding untrusted input as the interface name; C:N, and bounded fixed-name pollution with non-attacker-controlled values justifies I:L/A:L over the advisory's conservative I:H.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
systeminformation is a System and OS information library for node.js. Prior to 5.33.13, networkStats(ifaces) in lib/network.js on FreeBSD, OpenBSD, and NetBSD stores per-interface data in the plain-object _network cache and indexes it with the sanitized caller-controlled interface name. Passing proto causes the inherited Object.prototype value to be used instead of creating an own cache entry, so calcNetworkSpeed() writes rx_bytes, tx_bytes, rx_sec, tx_sec, ms, last_ms, and operstate onto Object.prototype. The polluted property names are fixed and their values come from interface statistics, but inherited-name collisions and enumerable keys can corrupt application branching, serialization, configuration merging, validation, or lookup behavior. This issue is fixed in version 5.33.13.
Blast Radius
ecosystem impact- 27 npm packages depend on systeminformation (6 direct, 21 indirect)
Ecosystem-wide dependent count for version 5.33.13.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
More in Systeminformation
View allCommand injection in systeminformation versions before 5.31.0 allows local attackers with user privileges to execute arb
This affects the package systeminformation before 4.27.11. Rated high severity (CVSS 8.8), this vulnerability is remotel
OS command injection in the systeminformation Node.js library on Windows allows arbitrary PowerShell command execution w
Command injection in the systeminformation Node.js library (versions prior to 5.30.8) lets attackers run arbitrary OS co
The System Information Library for Node.JS (npm package "systeminformation") is an open source collection of functions t
This affects the package systeminformation before 4.30.2. Rated high severity (CVSS 7.3), this vulnerability is remotely
systeminformation is a System Information Library for Node.JS. Rated critical severity (CVSS 9.8), this vulnerability is
systeminformation is an open source system and OS information library for node.js. Rated critical severity (CVSS 9.8), t
npm package systeminformation before version 4.30.5 is vulnerable to Prototype Pollution leading to Command Injection. R
In systeminformation (npm package) before version 4.31.1 there is a command injection vulnerability. Rated high severity
Windows command injection in the systeminformation Node.js library before 5.33.16 lets an attacker who controls the serv
Path traversal in the Linux networkStats() implementation of systeminformation before 5.33.14 allows a caller who contro
EUVD-2026-111104
GHSA-7648-jmwf-vw7j
NVD
CVE.org
EPSS
Exploit-DB