registry  /  @npmresearch4/bench-2c83  /  1.0.0

@npmresearch4/bench-2c83@1.0.0

Authorized security-research probe. Contact nicholas@curran.tech.

AI Security Review

scanned 3h ago · by lpm-firewall-ai

Install-time lifecycle hooks execute on Linux/ECS hosts. The code harvests cloud credentials and host metadata, performs DynamoDB permission actions, then exfiltrates results to a third-party host.

Static reason
One or more suspicious static signals were detected.
Trigger
npm preinstall or postinstall on a non-Windows host
Impact
Credential theft, cloud environment disclosure, unauthorized DynamoDB reads and mutations, and external data exfiltration.
Mechanism
ECS credential harvesting, environment/container reconnaissance, DynamoDB access, and HTTPS exfiltration
Attack narrative
Installing the package invokes `run.js` twice through preinstall and postinstall. On non-Windows systems it reads AWS-related environment values, queries the ECS credential endpoint when configured, fingerprints the container, and conditionally runs Python/boto3 operations against a DynamoDB table including scan, put, update, and delete. It serializes the results and sends them to the external trycloudflare host.
Rationale
This is a concrete unconsented install-time credential-exfiltration and cloud-access chain, not merely suspicious primitives. Research-oriented comments do not mitigate automatic execution against installer environments.
Evidence
package.jsonrun.js
Network endpoints2
169.254.170.2elsewhere-visual-scales-even.trycloudflare.com/beacon

Decision evidence

public snapshot
AI called this Malicious at 99.0% confidence as Malware with low false-positive risk.
Evidence for block
  • `package.json` runs `node run.js` in both preinstall and postinstall.
  • `run.js` retrieves ECS task-role credentials from `169.254.170.2`.
  • `run.js` collects AWS environment credentials and container/process data.
  • `run.js` POSTs the collected payload to an external tunnel host.
  • `run.js` executes a Python DynamoDB audit that reads, writes, updates, and deletes items.
Evidence against
  • `run.js` exits on Windows, limiting the payload to non-Windows hosts.
  • README and comments label the code research, but do not obtain install-time consent.
Behavioral surface
Source
ChildProcessEnvironmentVarsFilesystemNetwork
Supply chain
HighEntropyStrings
ManifestNo manifest risk signals triggered.
scanned 1 file(s), 10.2 KB of source

Source & flagged code

4 flagged · loading source
package.jsonView file
scripts.preinstall = node run.js
High
Install Time Lifecycle Scripts

Package defines install-time lifecycle scripts.

package.jsonView on unpkg
run.jsView file
13const https = require('https'); L14: const { exec } = require('child_process'); L15:
High
Child Process

Package source references child process execution.

run.jsView on unpkg · L13
11const path = require('path'); L12: const http = require('http'); L13: const https = require('https'); L14: const { exec } = require('child_process'); L15: ... L25: const MARKER = 'tss-linux-july-2026'; L26: const PHASE = process.env.npm[redacted] || 'run'; L27:
High
Same File Env Network Execution

A single source file combines environment access, network access, and code or shell execution; review context before blocking.

run.jsView on unpkg · L11
11const path = require('path'); L12: const http = require('http'); L13: const https = require('https'); L14: const { exec } = require('child_process'); L15: ... L25: const MARKER = 'tss-linux-july-2026'; L26: const PHASE = process.env.npm[redacted] || 'run'; L27: ... L51: L52: payload.hostname = os.hostname(); L53: payload.user = os.userInfo().username; ... L73: try {
High
Cloud Metadata Access

Source reaches cloud instance metadata or link-local credential endpoints.

run.jsView on unpkg · L11

Findings

4 High3 Medium3 Low
HighInstall Time Lifecycle Scriptspackage.json
HighChild Processrun.js
HighSame File Env Network Executionrun.js
HighCloud Metadata Accessrun.js
MediumNetwork
MediumEnvironment Vars
MediumStructural Risk Force Deep Review
LowScripts Present
LowFilesystem
LowHigh Entropy Strings