Leben von Node.js Addons Notiz

Leben von Node.js Addons

Native Module sind kompilierte Node.js-Dateien, die es Node.js-Anwendungen ermöglichen, mit nativem Code zu interagieren, der in Sprachen wie C, C++ oder Objective-C geschrieben ist. Diese Dateien sind kompilierte Binärdateien, die Maschinencode enthalten und mit denselben Berechtigungen wie der Node.js-Prozess, der sie lädt, ausgeführt werden können. Im Gegensatz zu JavaScript-Dateien sind .node-Dateien nicht lesbar und können direkt System-APIs aufrufen und Operationen ausführen, die reiner JavaScript-Code nicht ausführen kann. Diese Add-ons können Objective-C++ verwenden, um native macOS-APIs direkt aus Node.js zu nutzen, was die Ausführung von beliebigem Code außerhalb der normalen Sandbox ermöglicht. Electron-Anwendungen verwenden häufig das ASAR-Dateiformat, um den Quellcode der Anwendung zu verpacken, aber die ASAR-Integritätsprüfung ist standardmäßig deaktiviert. Wenn sie aktiviert ist, überprüft die ASAR-Integritätsprüfung den Header-Hash des ASAR-Archivs zur Laufzeit und verhindert Manipulationen an Dateien innerhalb des Archivs. Viele Anwendungen werden jedoch außerhalb des verifizierten Archivs unter app.asar.unpacked ausgeführt, da kompilierte .node-Dateien nicht direkt aus einem ASAR-Archiv ausgeführt werden können. Dies ermöglicht es einem lokalen Angreifer, .node-Dateien im entpackten Verzeichnis zu ändern oder zu ersetzen, ähnlich wie beim DLL-Hijacking unter Windows. Um dieses Problem zu beheben, wurden zwei Tools entwickelt: Electron ASAR Scanner, das bewertet, ob Electron-Anwendungen ASAR-Integritätsschutz implementieren, und NodeLoader, ein einfacher nativer Node.js-Add-on-Compiler. Die Tools Electron ASAR Scanner und NodeLoader können helfen, potenzielle Sicherheitslücken in Electron-Anwendungen, die native Module verwenden, zu identifizieren und zu beheben.