{"id":"CVE-2026-26280","aliases":["CLSA-2026-1790004555","DEBIAN-CVE-2026-26280","EUVD-2026-7969","GHSA-9c88-49p5-5ggf","ROOT-APP-NPM-CVE-2026-26280","UBUNTU-CVE-2026-26280"],"status":"published","title":"Systeminformation has a Command Injection via unsanitized interface parameter in wifi.js retry path","description":"systeminformation is a System and OS information library for node.js. In versions prior to 5.30.8, a command injection vulnerability in the `wifiNetworks()` function allows an attacker to execute arbitrary OS commands via an unsanitized network interface parameter in the retry code path. In `lib/wifi.js`, the `wifiNetworks()` function sanitizes the `iface` parameter on the initial call (line 437). However, when the initial scan returns empty results, a `setTimeout` retry (lines 440-441) calls `getWifiNetworkListIw(iface)` with the **original unsanitized** `iface` value, which is passed directly to `execSync('iwlist ${iface} scan')`. Any application passing user-controlled input to `si.wifiNetworks()` is vulnerable to arbitrary command execution with the privileges of the Node.js process. Version 5.30.8 fixes the issue.","severity":{"version":"3.1","score":8.4,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"high","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-10","score":0.01371,"percentile":0.72173,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-78"],"published":"2026-02-18T21:51:26Z","modified":"2026-10-28T02:30:47Z","fixes":[{"ecosystem":"npm","package":"systeminformation","fixed_in":["5.30.8"],"sources":["ghsa","osv"]},{"ecosystem":"TuxCare:npm","package":"systeminformation","fixed_in":["5.23.8-tuxcare.2"],"sources":["osv"]},{"ecosystem":"Debian:14","package":"jupyterlab","fixed_in":["4.0.11+ds5+~cs11.25.27-1"],"sources":["osv"]},{"ecosystem":"Root:npm","package":"systeminformation","fixed_in":["5.23.8-aikido.5","5.23.8-aikido.6"],"sources":["osv"]},{"ecosystem":"Root:npm","package":"@rootio/systeminformation","fixed_in":["5.23.8-root.io.5","5.23.8-root.io.3","5.23.8-root.io.4","5.23.8-root.io.6"],"sources":["osv"]}],"affected":[{"source":"ghsa","ecosystem":"npm","package":"systeminformation","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"5.30.8"}]}]},{"source":"osv","ecosystem":"TuxCare:npm","package":"systeminformation","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"5.23.8-tuxcare.0"},{"fixed":"5.23.8-tuxcare.2"}]}],"versions":["5.23.8","5.23.8-tuxcare.1"]},{"source":"osv","ecosystem":"Debian:13","package":"jupyterlab","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["4.0.11+ds1+~cs11.25.27-7","4.0.11+ds1+~cs11.25.27-8","4.0.11+ds1+~cs11.25.27-9","4.0.11+ds2+~cs11.25.27-1","4.0.11+ds2+~cs11.25.27-3","4.0.11+ds3+~cs11.25.27-1","4.0.11+ds4+~cs11.25.27-1","4.0.11+ds4+~cs11.25.27-2","4.0.11+ds4+~cs11.25.27-3","4.0.11+ds4+~cs11.25.27-4","4.0.11+ds5+~cs11.25.27-1","4.0.13+ds1+~2.0.1+~cs1.4.4-1","4.1.3+ds1+~2.0.1+~0.15.3+~cs1.4.4-1","4.1.8+ds1+~2.0.1+~0.15.3+~cs1.4.4-1","4.1.8+ds1+~2.0.1+~0.15.3+~cs1.4.4-2","4.1.8+ds1+~2.0.1+~0.15.3+~cs1.4.4-3","4.1.8+ds1+~2.0.1+~0.15.3+~cs1.4.4-4","4.1.8+ds1+~2.0.1+~0.15.3+~cs1.4.4-5","4.1.8+ds1+~2.0.1+~0.15.3+~cs1.4.4-6","4.1.8+ds1+~2.0.1+~0.15.3+~cs1.4.4-7","4.1.8+ds1+~2.0.1+~0.15.3+~cs1.4.4-8","4.4.1+ds1+~3.0.5+~0.16.6+~cs1.4.4-1","4.4.10+ds1+~3.1.0+~0.16.6+~cs1.4.4-1","4.4.10+ds1+~3.1.0+~0.16.6+~cs1.4.4-2","4.4.10+ds1+~3.1.0+~0.16.6+~cs1.4.4-3","4.4.10+ds1+~3.1.0+~0.16.6+~cs1.4.4-4","4.4.10+ds1+~3.1.0+~0.16.6+~cs1.4.4-5","4.4.10+ds1+~3.1.0+~0.16.6+~cs1.4.4-6","4.4.8+ds1+~3.1.0+~0.16.6+~cs1.4.4-1"]},{"source":"osv","ecosystem":"Debian:14","package":"jupyterlab","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"4.0.11+ds5+~cs11.25.27-1"}]}],"versions":["4.0.11+ds1+~cs11.25.27-7","4.0.11+ds1+~cs11.25.27-8","4.0.11+ds1+~cs11.25.27-9","4.0.11+ds2+~cs11.25.27-1","4.0.11+ds2+~cs11.25.27-3","4.0.11+ds3+~cs11.25.27-1","4.0.11+ds4+~cs11.25.27-1","4.0.11+ds4+~cs11.25.27-2","4.0.11+ds4+~cs11.25.27-3","4.0.11+ds4+~cs11.25.27-4"]},{"source":"osv","ecosystem":"npm","package":"systeminformation","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"5.30.8"}]}]},{"source":"osv","ecosystem":"Root:npm","package":"systeminformation","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"5.23.8-aikido.5"},{"fixed":"5.23.8-aikido.6"}]}]},{"source":"osv","ecosystem":"Root:npm","package":"@rootio/systeminformation","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"5.23.8-root.io.5"},{"fixed":"5.23.8-root.io.3"},{"fixed":"5.23.8-root.io.4"},{"fixed":"5.23.8-root.io.6"}]}]},{"source":"osv","ecosystem":"Ubuntu:25.10","package":"jupyterlab","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["4.0.11+ds1+~cs11.25.27-5","4.0.11+ds1+~cs11.25.27-6","4.0.11+ds1+~cs11.25.27-7"]},{"source":"osv","ecosystem":"Ubuntu:26.10","package":"jupyterlab","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["4.0.11+ds1+~cs11.25.27-9","4.4.10+ds1+~3.1.0+~0.16.6+~cs1.4.4-3","4.4.10+ds1+~3.1.0+~0.16.6+~cs1.4.4-4"]},{"source":"osv","ecosystem":"Ubuntu:26.10","package":"node-systeminformation","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["5.31.6-4","5.31.7-1"]},{"source":"osv","ecosystem":"Ubuntu:26.04:LTS","package":"jupyterlab","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["4.0.11+ds1+~cs11.25.27-7","4.0.11+ds1+~cs11.25.27-8","4.0.11+ds1+~cs11.25.27-9"]}],"products":[{"vendor":"red hat","product":"red hat developer hub"},{"vendor":"sebhildebrandt","product":"systeminformation"},{"vendor":"systeminformation","product":"systeminformation"}],"references":[{"url":"https://github.com/sebhildebrandt/systeminformation/security/advisories/GHSA-9c88-49p5-5ggf","tags":["x_refsource_CONFIRM","Exploit","Vendor Advisory","advisory","web"]},{"url":"https://github.com/sebhildebrandt/systeminformation/commit/22242aa56188f2bffcbd7d265a11e1ebb808b460","tags":["x_refsource_MISC","Patch","fix","web"]},{"url":"https://access.redhat.com/security/cve/CVE-2026-26280","tags":["vdb-entry","x_refsource_REDHAT","advisory"]},{"url":"https://bugzilla.redhat.com/show_bug.cgi?id=2441121","tags":["issue-tracking","x_refsource_REDHAT","report"]},{"url":"https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-26280.json","tags":["x_sadp-csaf-vex","web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-26280","tags":["advisory"]},{"url":"https://github.com/advisories/GHSA-9c88-49p5-5ggf"},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/26xxx/CVE-2026-26280.json","tags":["advisory"]},{"url":"https://security-tracker.debian.org/tracker/CVE-2026-26280","tags":["advisory"]},{"url":"https://github.com/sebhildebrandt/systeminformation","tags":["package"]},{"url":"https://ubuntu.com/security/CVE-2026-26280","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-26280","tags":["report"]}],"sources":{"cve":[{"id":"CVE-2026-26280","title":"Systeminformation has a Command Injection via unsanitized interface parameter in wifi.js retry path","description":"systeminformation is a System and OS information library for node.js. In versions prior to 5.30.8, a command injection vulnerability in the `wifiNetworks()` function allows an attacker to execute arbitrary OS commands via an unsanitized network interface parameter in the retry code path. In `lib/wifi.js`, the `wifiNetworks()` function sanitizes the `iface` parameter on the initial call (line 437). However, when the initial scan returns empty results, a `setTimeout` retry (lines 440-441) calls `getWifiNetworkListIw(iface)` with the **original unsanitized** `iface` value, which is passed directly to `execSync('iwlist ${iface} scan')`. Any application passing user-controlled input to `si.wifiNetworks()` is vulnerable to arbitrary command execution with the privileges of the Node.js process. Version 5.30.8 fixes the issue.","status":"published","published":"2026-02-19T19:43:05.868Z","modified":"2026-07-15T01:15:04.841Z","cvss":[{"version":"3.1","score":8.4,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"high","assessor":"cna"},{"version":"3.1","score":8.4,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"high","assessor":"adp"}],"cwes":["CWE-78","CWE-78"],"updated_at":"2026-11-02T13:38:32.13011Z"}],"euvd":[{"id":"EUVD-2026-7969","description":"systeminformation is a System and OS information library for node.js. In versions prior to 5.30.8, a command injection vulnerability in the `wifiNetworks()` function allows an attacker to execute arbitrary OS commands via an unsanitized network interface parameter in the retry code path. In `lib/wifi.js`, the `wifiNetworks()` function sanitizes the `iface` parameter on the initial call (line 437). However, when the initial scan returns empty results, a `setTimeout` retry (lines 440-441) calls `getWifiNetworkListIw(iface)` with the **original unsanitized** `iface` value, which is passed directly to `execSync('iwlist ${iface} scan')`. Any application passing user-controlled input to `si.wifiNetworks()` is vulnerable to arbitrary command execution with the privileges of the Node.js process. Version 5.30.8 fixes the issue.","status":"published","published":"2026-02-19T19:43:05Z","modified":"2026-07-15T01:15:04Z","cvss":[{"version":"3.1","score":8.4,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"high"}],"updated_at":"2026-11-02T18:19:55.842782Z"}],"ghsa":[{"id":"GHSA-9c88-49p5-5ggf","title":"Systeminformation has a Command Injection via unsanitized interface parameter in wifi.js retry path","description":"### Summary\nA command injection vulnerability in the `wifiNetworks()` function allows an attacker to execute arbitrary OS commands via an unsanitized network interface parameter in the retry code path.\n\n### Details\nIn `lib/wifi.js`, the `wifiNetworks()` function sanitizes the `iface` parameter on the initial call (line 437). However, when the initial scan returns empty results, a `setTimeout` retry (lines 440-441) calls `getWifiNetworkListIw(iface)` with the **original unsanitized** `iface` value, which is passed directly to `execSync('iwlist ${iface} scan')`.\n\n### PoC\n1. Install `systeminformation@5.30.7`\n2. Call `si.wifiNetworks('eth0; id')`\n3. The first call sanitizes input, but if results are empty, the retry executes: `iwlist eth0; id scan`\n\n### Impact\nRemote Code Execution (RCE). Any application passing user-controlled input to `si.wifiNetworks()` is vulnerable to arbitrary command execution with the privileges of the Node.js process.","status":"published","published":"2026-02-18T21:51:26Z","modified":"2026-02-19T21:57:03Z","cvss":[{"version":"3.1","score":8.4,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"high"}],"cwes":["CWE-78"],"updated_at":"2026-11-02T14:39:25.82905Z"}],"nvd":[{"id":"CVE-2026-26280","description":"systeminformation is a System and OS information library for node.js. In versions prior to 5.30.8, a command injection vulnerability in the `wifiNetworks()` function allows an attacker to execute arbitrary OS commands via an unsanitized network interface parameter in the retry code path. In `lib/wifi.js`, the `wifiNetworks()` function sanitizes the `iface` parameter on the initial call (line 437). However, when the initial scan returns empty results, a `setTimeout` retry (lines 440-441) calls `getWifiNetworkListIw(iface)` with the **original unsanitized** `iface` value, which is passed directly to `execSync('iwlist ${iface} scan')`. Any application passing user-controlled input to `si.wifiNetworks()` is vulnerable to arbitrary command execution with the privileges of the Node.js process. Version 5.30.8 fixes the issue.","status":"published","published":"2026-02-19T20:25:43.88Z","modified":"2026-07-15T02:19:01.387Z","cvss":[{"version":"3.1","score":8.4,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"high","assessor":"secondary"},{"version":"3.1","score":7.8,"vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","level":"high","assessor":"primary"},{"version":"3.1","score":8.4,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"high","assessor":"secondary"}],"cwes":["CWE-78"],"updated_at":"2026-11-02T14:12:06.274729Z"}],"osv":[{"id":"CVE-2026-26280","title":"Systeminformation has a Command Injection via unsanitized interface parameter in wifi.js retry path","description":"systeminformation is a System and OS information library for node.js. In versions prior to 5.30.8, a command injection vulnerability in the `wifiNetworks()` function allows an attacker to execute arbitrary OS commands via an unsanitized network interface parameter in the retry code path. In `lib/wifi.js`, the `wifiNetworks()` function sanitizes the `iface` parameter on the initial call (line 437). However, when the initial scan returns empty results, a `setTimeout` retry (lines 440-441) calls `getWifiNetworkListIw(iface)` with the **original unsanitized** `iface` value, which is passed directly to `execSync('iwlist ${iface} scan')`. Any application passing user-controlled input to `si.wifiNetworks()` is vulnerable to arbitrary command execution with the privileges of the Node.js process. Version 5.30.8 fixes the issue.","status":"published","published":"2026-02-19T19:43:05.868Z","modified":"2026-10-28T02:30:47.939770368Z","cvss":[{"version":"3.1","score":8.4,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"high"}],"cwes":["CWE-78"],"updated_at":"2026-11-02T15:44:59.80315Z"},{"id":"DEBIAN-CVE-2026-26280","description":"systeminformation is a System and OS information library for node.js. In versions prior to 5.30.8, a command injection vulnerability in the `wifiNetworks()` function allows an attacker to execute arbitrary OS commands via an unsanitized network interface parameter in the retry code path. In `lib/wifi.js`, the `wifiNetworks()` function sanitizes the `iface` parameter on the initial call (line 437). However, when the initial scan returns empty results, a `setTimeout` retry (lines 440-441) calls `getWifiNetworkListIw(iface)` with the **original unsanitized** `iface` value, which is passed directly to `execSync('iwlist ${iface} scan')`. Any application passing user-controlled input to `si.wifiNetworks()` is vulnerable to arbitrary command execution with the privileges of the Node.js process. Version 5.30.8 fixes the issue.","status":"published","published":"2026-02-19T20:25:43.88Z","modified":"2026-10-01T03:03:00.699322897Z","cvss":[{"version":"3.1","score":7.8,"vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","level":"high"}],"updated_at":"2026-11-02T15:45:53.877573Z"},{"id":"GHSA-9c88-49p5-5ggf","title":"Systeminformation has a Command Injection via unsanitized interface parameter in wifi.js retry path","description":"### Summary\nA command injection vulnerability in the `wifiNetworks()` function allows an attacker to execute arbitrary OS commands via an unsanitized network interface parameter in the retry code path.\n\n### Details\nIn `lib/wifi.js`, the `wifiNetworks()` function sanitizes the `iface` parameter on the initial call (line 437). However, when the initial scan returns empty results, a `setTimeout` retry (lines 440-441) calls `getWifiNetworkListIw(iface)` with the **original unsanitized** `iface` value, which is passed directly to `execSync('iwlist ${iface} scan')`.\n\n### PoC\n1. Install `systeminformation@5.30.7`\n2. Call `si.wifiNetworks('eth0; id')`\n3. The first call sanitizes input, but if results are empty, the retry executes: `iwlist eth0; id scan`\n\n### Impact\nRemote Code Execution (RCE). Any application passing user-controlled input to `si.wifiNetworks()` is vulnerable to arbitrary command execution with the privileges of the Node.js process.","status":"published","published":"2026-02-18T21:51:26Z","modified":"2026-09-10T03:50:34.457556318Z","cvss":[{"version":"3.1","score":8.4,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"high"}],"cwes":["CWE-78"],"updated_at":"2026-11-02T15:46:43.524801Z"},{"id":"ROOT-APP-NPM-CVE-2026-26280","title":"CVE-2026-26280 in systeminformation - Patched by Root","description":"Root has patched CVE-2026-26280 in the systeminformation package for Root:npm. Multiple fixed versions available.","status":"published","published":"2026-10-05T10:01:42Z","modified":"2026-10-05T11:15:03.877350326Z","cvss":[{"version":"3.1","score":8.4,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"high"}],"updated_at":"2026-11-02T15:53:27.649662Z"},{"id":"UBUNTU-CVE-2026-26280","description":"systeminformation is a System and OS information library for node.js. In versions prior to 5.30.8, a command injection vulnerability in the `wifiNetworks()` function allows an attacker to execute arbitrary OS commands via an unsanitized network interface parameter in the retry code path. In `lib/wifi.js`, the `wifiNetworks()` function sanitizes the `iface` parameter on the initial call (line 437). However, when the initial scan returns empty results, a `setTimeout` retry (lines 440-441) calls `getWifiNetworkListIw(iface)` with the **original unsanitized** `iface` value, which is passed directly to `execSync('iwlist ${iface} scan')`. Any application passing user-controlled input to `si.wifiNetworks()` is vulnerable to arbitrary command execution with the privileges of the Node.js process. Version 5.30.8 fixes the issue.","status":"published","published":"2026-02-19T20:25:00Z","modified":"2026-10-27T04:17:54.158544733Z","cvss":[{"version":"3.1","score":8.4,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"high"},{"version":"3.1","score":8.4,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"high"},{"version":"3.1","score":7.8,"vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","level":"high"}],"updated_at":"2026-11-02T16:56:08.726452Z"},{"id":"CLSA-2026-1790004555","title":"TuxCare security update for systeminformation (1 CVE)","description":"TuxCare rebuilt systeminformation to address 1 CVE. Fixed in 5.23.8-tuxcare.2.","status":"published","published":"2026-09-21T15:29:15Z","modified":"2026-10-15T09:46:03.010596491Z","updated_at":"2026-11-02T15:43:48.28229Z"}]}}
