registry  /  voinznext  /  0.3.0

voinznext@0.3.0

Interactive CLI tool for scaffolding Next.js projects with your preferred tech stack

AI Security Review

scanned 3h ago · by lpm-firewall-ai

Install-time script fetches a latest-release native binary from GitHub and saves it under the package bin directory. The package JS does not contain direct exfiltration or persistence, but the published npm source delegates runtime behavior to an unpinned remote executable.

Static reason
One or more suspicious static signals were detected.
Trigger
npm install runs postinstall; invoking voinznext runs cli.js
Impact
Remote release binary can change independently of the npm tarball and becomes the actual executed CLI payload.
Mechanism
install-time remote binary download and later child_process spawn
Attack narrative
On install, install.js creates a bin directory, queries the latest GitHub release for VoinzzZ/VoinzNext, downloads the platform-specific asset, and chmods it executable on non-Windows. The npm CLI entrypoint then spawns a binary from that bin directory with user arguments. This is a package-aligned native binary bootstrapper, but it is unpinned and unauthenticated relative to the npm version.
Rationale
Static inspection shows no classic malicious harvesting, persistence, or agent hijack, but the lifecycle hook stages an unpinned remote executable that becomes the real runtime payload. That unresolved remote binary supply-chain risk warrants warning rather than publish blocking based on the packaged source alone.
Evidence
package.jsoninstall.jscli.jsbin/voinznext.exe
Network endpoints2
api.github.com/repos/VoinzzZ/VoinzNext/releases/latestgithub.com/VoinzzZ/VoinzNext/releases/download/${version}/${binaryName}

Decision evidence

public snapshot
AI called this Suspicious at 86.0% confidence as Dangerous Capability with medium false-positive risk.
Evidence for warning
  • package.json defines postinstall: node install.js.
  • install.js fetches https://api.github.com/repos/VoinzzZ/VoinzNext/releases/latest at install time.
  • install.js downloads a platform executable from GitHub releases into bin/ without checksum or version pin.
  • cli.js later spawns the downloaded executable with inherited stdio.
Evidence against
  • No credential/env/file harvesting code in packaged JS.
  • No AI-agent control-surface writes, persistence hooks, or shell startup changes found.
  • No eval/vm/Function or dynamic require/import in packaged JS.
  • Network endpoints are package-aligned GitHub repo/release URLs.
Behavioral surface
Source
ChildProcessFilesystemNetwork
Supply chain
UrlStrings
ManifestNo manifest risk signals triggered.
scanned 2 file(s), 3.43 KB of source, external domains: api.github.com, github.com

Source & flagged code

2 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

Findings

1 High2 Medium3 Low
HighInstall Time Lifecycle Scriptspackage.json
MediumAmbiguous Install Lifecycle Scriptpackage.json
MediumNetwork
LowScripts Present
LowFilesystem
LowUrl Strings