registry  /  @bifrost-proxy/bifrost  /  0.0.131

@bifrost-proxy/bifrost@0.0.131

High-performance HTTP/HTTPS/SOCKS5 proxy server written in Rust

AI Security Review

scanned 6d ago · by lpm-firewall-ai

No confirmed malicious attack surface was established by source inspection. The install script performs package-aligned native binary acquisition and validation fallback for a Rust proxy CLI.

Static reason
One or more suspicious static signals were detected.
Trigger
npm install runs postinstall; CLI use runs bin/bifrost
Impact
Installs or runs the bifrost proxy binary supplied by same-scope platform packages; risk depends on those binary packages, not malicious wrapper code here.
Mechanism
platform-specific binary resolution, optional dependency fallback install/download, and CLI delegation
Rationale
The suspicious primitives are consistent with a common native binary wrapper: postinstall verifies/installs the matching platform package or downloads its npm tarball, and the bin shim delegates to that binary. I found no source evidence of credential harvesting, arbitrary exfiltration, persistence, destructive actions, or unconsented AI-agent control mutation.
Evidence
package.jsoninstall.jslib/index.jslib/platform.jsbin/bifrostnpm-install/package.jsondownloaded-<platform-package>-<binary>
Network endpoints1
registry.npmjs.org/${pkg}/-/${tarballName}-${packageJSON.version}.tgz

Decision evidence

public snapshot
AI called this Clean at 90.0% confidence as Benign with medium false-positive risk.
Evidence for block
  • package.json defines postinstall: node install.js
  • install.js uses child_process.execSync to npm install platform-specific @bifrost-proxy package if optional dependency is missing
  • install.js downloads https://registry.npmjs.org/${pkg}/-/${tarballName}-0.0.131.tgz and writes extracted binary fallback
  • bin/bifrost executes the resolved platform binary with user CLI arguments and inherited environment
Evidence against
  • package.json optionalDependencies are same-scope @bifrost-proxy platform packages pinned to 0.0.131
  • install.js network endpoint is npm registry tarball for expected platform package, not an arbitrary host
  • install.js writes only npm-install temp package.json and downloaded-* binary path under package directory, then removes temp install dir
  • lib/index.js only resolves installed or downloaded platform binary path; no credential/file harvesting observed
  • lib/platform.js shell use is limited to ldd --version for libc detection
  • No AI-agent control-surface writes, persistence, destructive behavior, obfuscation, or exfiltration logic found
Behavioral surface
Source
ChildProcessDynamicRequireEnvironmentVarsFilesystemNetworkShell
Supply chain
UrlStrings
ManifestNo manifest risk signals triggered.
scanned 3 file(s), 10.1 KB of source, external domains: registry.npmjs.org

Source & flagged code

5 flagged · loading source
package.jsonView file
scripts.postinstall = node install.js
High
Install Time Lifecycle Scripts

Package defines install-time lifecycle scripts.

package.jsonView on unpkg
scripts.postinstall = node install.js
Medium
Ambiguous Install Lifecycle Script

Install-time lifecycle script is not statically allowlisted and needs review.

package.jsonView on unpkg
install.jsView file
5const https = require("https"); L6: const child_process = require("child_process"); L7: const { getPlatformKey } = require("./lib/platform.js");
High
Child Process

Package source references child process execution.

install.jsView on unpkg · L5
78fs.writeFileSync(path.join(installDir, "package.json"), "{}"); L79: child_process.execSync( L80: `npm install --loglevel=error --prefer-offline --no-audit --progress=false ${pkg}@${packageJSON.version}`, L81: { cwd: installDir, stdio: "pipe", env }
High
Runtime Package Install

Package source invokes a package manager install command at runtime.

install.jsView on unpkg · L78
1const fs = require("fs"); L2: const os = require("os");
Medium
Dynamic Require

Package source references dynamic require/import behavior.

install.jsView on unpkg · L1

Findings

4 High5 Medium3 Low
HighInstall Time Lifecycle Scriptspackage.json
HighChild Processinstall.js
HighShell
HighRuntime Package Installinstall.js
MediumAmbiguous Install Lifecycle Scriptpackage.json
MediumDynamic Requireinstall.js
MediumNetwork
MediumEnvironment Vars
MediumStructural Risk Force Deep Review
LowScripts Present
LowFilesystem
LowUrl Strings