
Statisches Analyse-CLI-Tool, das die Angriffsfläche von Node.js-Anwendungen reduziert, indem es Abhängigkeitsgraphen erstellt und nicht verwendete Module und Funktionen in grober oder feiner Granularität entfernt.
Mininode ist ein CLI-Tool, das die Angriffsfläche von Node.js-Anwendungen durch statische Analyse des Quellcodes reduziert. Es unterstützt zwei Reduktionsmodi: (1) coarse, (2) fine.
Mininode erstellt den Abhängigkeitsgraphen (verwendete Module und Funktionen) der Anwendung, beginnend mit der Hauptdatei, d.h. dem Einstiegspunkt der Anwendung. Mininode setzt den Einstiegspunkt auf das main-Feld der package.json-Datei, falls vorhanden. Andernfalls wird standardmäßig index.js verwendet.
Beispielverwendung: node index.js <Pfad zum Node-Anwendungsstammordner> --mode=(coarse|fine). Unten ist die Liste der Optionen, die an Mininode übergeben werden können.
Liste der Befehlszeilenoptionen, die an mininode übergeben werden können.
--destination, -d: der Pfad, in den mininode die reduzierte Node.js-Anwendung speichert. Der Standardwert: mininode.--dry-run: generiert nur mininode.json, ohne die ursprüngliche Anwendung zu verändern.--mode, -m: Reduktionsmodus. Der Wert kann entweder coarse oder fine sein. Im Modus coarse führt mininode nur eine grobkörnige Reduktion durch. Im Modus fine hingegen führt mininode eine feinkörnige Reduktion durch. Im Allgemeinen ist die grobkörnige Reduktion zuverlässiger, da mininode nicht versucht, ungenutzte Funktionen innerhalb des Moduls zu reduzieren. Standardwert: coarse.--silent: Konsolenausgabe ist deaktiviert. Dies verbessert die Leistung von mininode.--verbose: gibt zusätzliche Informationen auf der Konsole aus. Standardwert: false--log: mininode erstellt eine Logdatei, die den Abhängigkeitsgraphen der Anwendung im JSON-Format enthält. Standardwert: true.--log-output: der Name der von mininode erstellten Logdatei. Standardwert: mininode.json.--compress-log: komprimiert die endgültige Logdatei. Standardmäßig wird alles in die Logdatei ausgegeben. In der Produktion wird empfohlen, das Flag --compress-log zu übergeben, um Speicherplatz zu sparen.--seeds: Seed-Dateien, von denen aus mininode den Abhängigkeitsgraphen erstellt. Sie können mehrere Seed-Dateien angeben, indem Sie diese durch Doppelpunkte trennen.--skip-stat: überspringt die Berechnung der Statistiken--skip-reduction: wenn übergeben, wird mininode die JavaScript-Dateien nicht reduzieren. Standardwert: false.--skip-remove: wenn übergeben, wird mininode ungenutzte JavaScript-Dateien nicht entfernen. Standardwert: false.eval nutzen, nicht reduzieren kann. Wenn Mininode dynamisches Verhalten in der Anwendung erkennt, wird mit dem Fehler DYNAMIC_BEHAVOUR_DETECTED beendet.Sie können weitere Details zu unserer Arbeit in folgendem Forschungspapier nachlesen:
Mininode: Reducing the Attack Surface of Node.js Applications [PDF]
Igibek Koishybayev, Alexandros Kapravelos
Proceedings of the International Symposium on Research in Attacks, Intrusions and Defenses (RAID), 2020
Wenn Sie Mininode in Ihrer Forschung verwenden, erwägen Sie bitte, unsere Arbeit mit folgendem Bibtex-Eintrag zu zitieren:
@conference{mininode-raid20,
title = {{Mininode: Reducing the Attack Surface of Node.js Applications}},
author = {Koishybayev, Igibek and Kapravelos, Alexandros},
booktitle = {{Proceedings of the International Symposium on Research in Attacks, Intrusions and Defenses (RAID)}},
year = {2020}
}
Wir folgen semistandard.