CVE-2021-21315
System Information Library for Node.JS Command Injection
Beschreibung
CVE-2021-21315 ist eine schwerwiegende Command-Injection-Schwachstelle in der System Information Library for Node.js (npm-Paket "systeminformation"), die alle Versionen vor 5.3.1 betrifft. Die Schwachstelle ermöglicht es einem Angreifer, über manipulierte Eingaben in bestimmte Funktionsparameter (wie si.inetLatency(), si.inetChecksite(), si.services() und si.processLoad()) beliebige Betriebssystembefehle auf dem Zielsystem auszuführen. Mit einem CVSS-3.1-Score von 7,1 (HIGH) und dem Scope "Changed" kann die Auswirkung über die verwundbare Komponente hinausgehen. CVE-2021-21315 ist im CISA-KEV-Katalog gelistet mit bestätigter aktiver Ausnutzung. Der EPSS-Score von 93,8 % (99,85. Perzentile) zeigt eine extrem hohe Ausnutzungswahrscheinlichkeit. Auch Apache Cordova Version 10.0.0, das systeminformation als Abhängigkeit verwendet, ist betroffen.
KEV-Informationen
CVSS-Score
CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:C/C:N/I:H/A:NIm Rechner öffnenBetroffene Produkte
| Hersteller | Produkt | Version |
|---|---|---|
| systeminformation | systeminformation | < 5.3.1 |
| apache | cordova | 10.0.0 |
Mehrere CVSS-Bewertungen
CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:C/C:N/I:H/A:N
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Referenzen
- https://github.com/sebhildebrandt/systeminformation/commit/07daa05fb06f24f96297abaa30c2ace8bfd8b525(Patch)
- https://github.com/sebhildebrandt/systeminformation/security/advisories/GHSA-2m8v-572m-ff2v(Third Party Advisory)
- https://lists.apache.org/thread.html/r8afea9a83ed568f2647cccc6d8d06126f9815715ddf9a4d479b26b05%40%3Cissues.cordova.apache.org%3E(Issue Tracking, Mailing List)
- https://security.netapp.com/advisory/ntap-20210312-0007/(Third Party Advisory)
- https://www.npmjs.com/package/systeminformation(Product)
- https://www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2021-21315(US Government Resource)
Schwachstellentyp
CWE-78: OS Command Injection
OS Command Injection ist eine Schwachstelle, die auftritt, wenn Software einen Betriebssystembefehl unter Verwendung von extern beeinflussten Eingaben konstruiert, ohne Spezialelemente korrekt zu neutralisieren. Bei CVE-2021-21315 überprüft die systeminformation-Bibliothek die Parameter bestimmter Funktionen nicht ordnungsgemäß auf Shell-Metazeichen. Wenn Array-Eingaben anstelle von Strings an Funktionen wie si.services() oder si.inetLatency() übergeben werden, kann ein Angreifer beliebige OS-Befehle einschleusen, die dann mit den Privilegien des Node.js-Prozesses ausgeführt werden.
Weitere Informationen: CWE-78 — OS Command Injection
Auswirkungsanalyse
CVE-2021-21315 erhielt einen CVSS-3.1-Score von 7,1 (HIGH) mit einem lokalen Angriffsvektor, was bedeutet, dass der Angreifer Zugang zum lokalen System oder zur Anwendung benötigt, die die verwundbare systeminformation-Bibliothek nutzt. Die Angriffskomplexität ist niedrig und es werden keine Privilegien benötigt, was die Ausnutzung einfach macht, sobald der Angreifer Eingaben an die betroffenen Funktionen senden kann. Keine Benutzerinteraktion ist erforderlich. Der Scope ist "Changed", was bedeutet, dass die Auswirkung über die verwundbare Komponente hinausgeht und andere Ressourcen auf dem System betreffen kann. Vertraulichkeit (Keine): Die direkte Schwachstelle hat keine Auswirkung auf die Vertraulichkeit. Integrität (Hoch): Ein Angreifer kann beliebige Betriebssystembefehle ausführen und dadurch Systemdateien modifizieren, Malware installieren oder die Systemkonfiguration ändern. Verfügbarkeit (Keine): Keine direkte Auswirkung auf die Verfügbarkeit, obwohl die ausgeführten Befehle Systemressourcen beeinträchtigen können. Der EPSS-Score von 93,8 % in der 99,85. Perzentile bestätigt, dass CVE-2021-21315 zu den am häufigsten ausgenutzten Schwachstellen gehört und in zahlreichen Node.js-Anwendungen ein erhebliches Risiko darstellt.
Exploit-Reifegrad
CISA hat CVE-2021-21315 in den KEV-Katalog aufgenommen und damit aktive Ausnutzung in freier Wildbahn bestätigt. Die Behebungsfrist wurde auf den 1. Februar 2022 festgelegt. Der EPSS-Score von 93,8 % (99,85. Perzentile) zeigt eine extrem hohe Ausnutzungswahrscheinlichkeit an. Die Schwachstelle ist besonders gefährlich, da die systeminformation-Bibliothek ein weit verbreitetes npm-Paket ist, das in zahlreichen Node.js-Anwendungen als Abhängigkeit verwendet wird. Der Exploit-Mechanismus ist vergleichsweise einfach: Anstelle eines Strings wird ein Array an die verwundbaren Funktionen übergeben, was die Eingabevalidierung umgeht und die Ausführung beliebiger OS-Befehle ermöglicht. Es sind keine öffentlichen Exploit-Tools mit "Exploit"-Tag in den Referenzen gelistet, aber die detaillierte Beschreibung des Angriffsvektors im GitHub Security Advisory ermöglicht eine einfache Reproduktion.
Behebung
-
Systeminformation auf Version 5.3.1 oder höher aktualisieren. Führen Sie ein Update des npm-Pakets "systeminformation" auf mindestens Version 5.3.1 durch, in der die Command-Injection-Schwachstelle behoben wurde. Verwenden Sie
npm update systeminformationoder aktualisieren Sie die Versionsangabe in Ihrer package.json. -
Eingabevalidierung für betroffene Funktionsparameter implementieren. Als Sofortmaßnahme oder Workaround stellen Sie sicher, dass nur Strings (keine Arrays) an die Funktionen si.inetLatency(), si.inetChecksite(), si.services() und si.processLoad() übergeben werden. Implementieren Sie eine strikte Typprüfung, die Array-Eingaben ablehnt, bevor sie an die systeminformation-Bibliothek weitergegeben werden.
-
Abhängigkeitsbaum auf verwundbare Versionen prüfen. Führen Sie
npm auditaus, um alle direkten und transitiven Abhängigkeiten zu identifizieren, die eine verwundbare Version der systeminformation-Bibliothek verwenden. Beachten Sie, dass auch Apache Cordova 10.0.0 betroffen ist und aktualisiert werden muss. -
Node.js-Prozesse mit minimalen Privilegien ausführen. Stellen Sie sicher, dass Node.js-Anwendungen, die systeminformation verwenden, mit den geringstmöglichen Betriebssystemprivilegien laufen. Dies begrenzt die Auswirkung einer erfolgreichen Command Injection auf die Privilegien des Anwendungsprozesses.
-
Langfristige Härtung gegen Command Injection implementieren. Vermeiden Sie die direkte Übergabe von Benutzereingaben an Bibliotheksfunktionen, die intern OS-Befehle ausführen. Implementieren Sie Allowlist-basierte Eingabevalidierung und nutzen Sie Containerisierung oder Sandboxing, um die Ausführungsumgebung von Node.js-Anwendungen zusätzlich abzusichern.
Technische Details
CVE-2021-21315 ist eine Command-Injection-Schwachstelle in der systeminformation-Bibliothek für Node.js, die durch eine unzureichende Eingabevalidierung in mehreren Funktionen verursacht wird. Die verwundbaren Funktionen (si.inetLatency(), si.inetChecksite(), si.services(), si.processLoad() und weitere) akzeptieren Parameter, die intern zur Konstruktion von Betriebssystembefehlen verwendet werden. Wenn diese Parameter als Arrays statt als Strings übergeben werden, umgeht dies die vorgesehene String-Sanitisierung, und Shell-Metazeichen in den Array-Elementen werden direkt in den konstruierten OS-Befehl eingebettet. Der CVSS-3.1-Vektor (AV:L/AC:L/PR:N/UI:N/S:C/C:N/I:H/A:N) zeigt einen lokalen Angriffsvektor mit niedriger Komplexität, bei dem keine Privilegien erforderlich sind und der Scope "Changed" ist — die Command Injection betrifft nicht nur die Node.js-Anwendung selbst, sondern das zugrundeliegende Betriebssystem. Die Grundursache liegt in der Verwendung von Shell-Befehlen (über child_process) zur Erfassung von Systeminformationen, wobei die Bibliothek davon ausgeht, dass die übergebenen Parameter immer Strings sind. Die Korrektur in Version 5.3.1 fügte explizite Typprüfungen hinzu, die Array-Eingaben ablehnen und zusätzliche Sanitisierung der Parameter durchführen, bevor sie in Shell-Befehle eingebettet werden.
Häufig gestellte Fragen
Wird CVE-2021-21315 aktiv ausgenutzt?
Ja, CVE-2021-21315 wird aktiv ausgenutzt. CISA hat die Schwachstelle in den KEV-Katalog aufgenommen und bestätigt aktive Ausnutzung in freier Wildbahn. Der EPSS-Score von 93,8 % (99,85. Perzentile) zeigt eine extrem hohe Ausnutzungswahrscheinlichkeit. Es ist keine Assoziation mit Ransomware-Kampagnen bekannt.
Welche Produkte sind von CVE-2021-21315 betroffen?
CVE-2021-21315 betrifft das npm-Paket "systeminformation" in allen Versionen vor 5.3.1. Da dies eine weit verbreitete Node.js-Bibliothek ist, können zahlreiche Anwendungen betroffen sein, die diese Bibliothek als direkte oder transitive Abhängigkeit verwenden. Zusätzlich ist Apache Cordova in Version 10.0.0 betroffen. Führen Sie npm audit aus, um zu prüfen, ob Ihre Projekte betroffen sind.
Wie behebe ich CVE-2021-21315?
Aktualisieren Sie das npm-Paket "systeminformation" auf Version 5.3.1 oder höher. Als Sofortmaßnahme stellen Sie sicher, dass nur String-Parameter (keine Arrays) an die Funktionen si.inetLatency(), si.inetChecksite(), si.services() und si.processLoad() übergeben werden. Führen Sie npm audit aus, um alle betroffenen Abhängigkeiten zu identifizieren und zu aktualisieren.
Wie schwerwiegend ist CVE-2021-21315?
CVE-2021-21315 hat einen CVSS-3.1-Score von 7,1 (HIGH) mit einem Scope von "Changed", was bedeutet, dass die Auswirkung über die verwundbare Node.js-Komponente hinausgehen kann. Die Schwachstelle ermöglicht die Ausführung beliebiger Betriebssystembefehle. Der EPSS-Score von 93,8 % in der 99,85. Perzentile platziert sie unter den am aktivsten ausgenutzten Schwachstellen. Die weite Verbreitung des systeminformation-Pakets im npm-Ökosystem vergrößert die Angriffsfläche erheblich.
Hilfe beim Schwachstellenmanagement?
Unsere Sicherheitsexperten helfen Ihnen bei der Priorisierung und Behebung von Schwachstellen.