AI Security Review
scanned 6d ago · by lpm-firewall-aiThe package uses an install-time downloader to fetch and install a platform native executable. Source JS does not show exfiltration, persistence, or foreign AI-agent control-surface mutation, but the fetched binary is outside the inspected package contents.
Static reason
One or more suspicious static signals were detected.
Trigger
npm install runs postinstall; user runs gurtcli CLI
Impact
Unverified native binary is installed into the package and can run when the CLI is invoked
Mechanism
install-time remote binary download and CLI wrapper spawn
Attack narrative
On npm install, postinstall runs install.js, which chooses the current OS/architecture, downloads a matching gurtcli release archive from GitHub, extracts it into ./bin, and marks it executable. cli.js is a thin wrapper that checks for that binary and spawns it with inherited stdio when the user invokes gurtcli.
Rationale
Static package JS shows a package-aligned remote binary installer with no confirmed malicious behavior, exfiltration, persistence, or unconsented foreign agent-surface mutation. Because the executable payload is fetched at install time and is not present for source inspection, this remains a warn-level staged payload risk rather than clean or publish-block malware.
Evidence
package.jsoninstall.jscli.jsbin/gurtclibin/gurtcli.exeos.tmpdir()/gurtcli-*
Network endpoints1
github.com/gru/gurtcli/releases/download/v0.5.1/gurtcli_0.5.1_<platform>_<arch>.tar.gz
Decision evidence
public snapshotAI called this Suspicious at 82.0% confidence as Dangerous Capability with medium false-positive risk.
Evidence for warning
- package.json defines postinstall: node install.js
- install.js downloads a platform archive from GitHub releases at install time
- install.js extracts the archive with tar and chmods bin/gurtcli executable
- cli.js later spawns bin/gurtcli with user arguments
Evidence against
- No credential/env harvesting patterns found in package JS
- No AI-agent control-surface writes such as CLAUDE.md, .mcp.json, or settings files
- Network endpoint is package-aligned GitHub release URL for gru/gurtcli v0.5.1
- Only package bin directory and temp install directory are written by inspected JS
- No install-time execution of the downloaded gurtcli binary observed
Behavioral surface
ChildProcessFilesystemNetwork
UrlStrings
Source & flagged code
2 flagged · loading sourcepackage.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 unpkgFindings
1 High2 Medium3 Low
HighInstall Time Lifecycle Scriptspackage.json
MediumAmbiguous Install Lifecycle Scriptpackage.json
MediumNetwork
LowScripts Present
LowFilesystem
LowUrl Strings