Kali Linux

Mininode : A CLI Tool To Reduce The Attack Surface Of The Node.js Applications By Using Static Analysis

Mininode is a CLI tool to reduce the attack surface of the Node.js applications by using static analysis of source code. It supports two modes of reduction (1) coarse, (2) fine.

Mininode constructs the dependency graph (modules and functions used) of the application starting from main file, i.e. entry point of the application. Mininode initializes entry point to package.json file’s main field if it exists. Otherwise default to index.js.

Example usage: node index.js <path to Node application root folder> --mode=(coarse|fine). Below is the list of options that can be passed to Mininode.

Options

List of command line options that can be passed to mininode.

  • --destination, -d: the path where mininode will save the reduced Node.js application. The default value: mininode.
  • --dry-run: just generates mininode.json without modifying the initial application.
  • --mode, -m: reduction mode. The value can be either coarse or fine. In coarse mode mininode will perform only coarse-grained reduction. While in fine mode mininode will perform fine-grained reduction. In general coarse-grained reduction is more reliable, because mininode will not try to reduce unused functions inside the module. Default value: coarse.
  • --silent: console output is disabled. This will improve the performance of the mininode.
  • --verbose: outputs additional information to the console. The default value: false
  • --log: mininode will generate log file inside, which contains dependency graph of the application in json format. The default value: true.
  • --log-output: the name of the log file generated by mininode. The default value: mininode.json.
  • --compress-log: compresses the final log file. By default it will dump everything into log file. In production it is advised to pass the --compress-log flag to save space.
  • --seeds: seed files from where mininode will start building dependency graph. You can provide many seed files by separating them with colon.
  • --skip-stat: skips calculating the statistics
  • --skip-reduction: if passed mininode will not reduce the JavaScript files. The default value: false.
  • --skip-remove: if passed mininode will not remove unused JavaScript files. The default value: false.

Limitaions

  • Mininode uses static analysis, which means it can not reduce the attack surface of the Node.js application which uses dynamic behaviour, such as eval. If Mininode detects dynamic behaviour in the application it exits with error DYNAMIC_BEHAVOUR_DETECTED.
R K

Recent Posts

Best OSINT Tools for Journalists 2026: Verify Sources, Images and Claims

Journalists use OSINT to verify public information before publishing. In 2026, misinformation, AI-generated images, fake…

50 minutes ago

Install Docker on Ubuntu 20.04: Complete Step-by-Step Guide

Docker is an open-source platform that lets you package and run applications inside containers. Each container…

11 hours ago

Install PostgreSQL on Ubuntu: Database Setup and Admin Guide

PostgreSQL (often called Postgres) is an open-source relational database system. It supports advanced features like JSON…

12 hours ago

Install Xrdp Remote Desktop on Ubuntu: Setup and Connect

Xrdp is an open-source server that lets you connect to your Ubuntu machine from another computer…

12 hours ago

Tomcat 9 on Ubuntu 20.04: Install, Configure, and Start

Apache Tomcat is an open-source web server and Java servlet container. It is one of the…

13 hours ago

Automatic Updates on Ubuntu: Set Up unattended-upgrades

Keeping your Ubuntu system updated is one of the best ways to protect it. Security…

14 hours ago