AI Security Review
scanned 5d ago · by lpm-firewall-aiNo confirmed malicious attack surface in the inspected wrapper package. Install-time behavior is limited to replacing its own bin/pugi shim with a platform-specific optional dependency binary.
Static reason
One or more suspicious static signals were detected.
Trigger
npm install runs postinstall; users later invoke pugi CLI
Impact
Creates or replaces bin/pugi inside @pugi/cli; no evidence of exfiltration, persistence, or foreign control-surface mutation
Mechanism
platform binary shim installation
Rationale
The lifecycle script is package-aligned native-binary setup, scoped to the package install directory, with no network, secrets access, shell execution, or AI-agent control-surface mutation in the inspected source. Scanner suspicion is explained by the presence of a postinstall hook rather than concrete malicious behavior.
Evidence
package.jsonpostinstall.mjsbin/pugiREADME.md
Decision evidence
public snapshotAI called this Clean at 90.0% confidence as Benign with low false-positive risk.
Evidence for block
- package.json defines postinstall lifecycle script
- postinstall.mjs unlinks and links/copies a platform binary into bin/pugi during install
Evidence against
- postinstall.mjs only resolves @pugi/cli-${platform}-${arch} optionalDependency and writes within this package directory
- No fetch/http/client networking, credential/env harvesting, shell execution, eval/vm/Function, or agent control-surface writes found
- bin/pugi is an error stub used when postinstall is skipped
- README documents normal CLI install and user-invoked pugi commands
Behavioral surface
Filesystem
Source & flagged code
2 flagged · loading sourcepackage.jsonView file
•scripts.postinstall = node ./postinstall.mjs
High
Install Time Lifecycle Scripts
Package defines install-time lifecycle scripts.
package.jsonView on unpkg•scripts.postinstall = node ./postinstall.mjs
Medium
Ambiguous Install Lifecycle Script
Install-time lifecycle script is not statically allowlisted and needs review.
package.jsonView on unpkgFindings
1 High1 Medium2 Low
HighInstall Time Lifecycle Scriptspackage.json
MediumAmbiguous Install Lifecycle Scriptpackage.json
LowScripts Present
LowFilesystem