AI Security Review
scanned 1d ago · by lpm-firewall-aiInstall time downloads an executable release asset and stores it as `bin/.ocv`; explicit `ocv` use executes it. Source contains no payload integrity verification, so the fetched binary is an uninspected remote-code stage.
Static reason
One or more suspicious static signals were detected.
Trigger
npm install runs postinstall; invoking `ocv` executes the downloaded binary.
Impact
A compromised release asset or overridden release-base environment variable could supply executable code.
Mechanism
postinstall remote binary bootstrap followed by CLI execution
Rationale
The package has a real install-time remote executable acquisition chain with no payload verification, warranting a warning. The inspected source does not establish a concrete malicious action.
Evidence
package.jsonpostinstall.cjsbin/ocvREADME.mdbin/.ocv
Network endpoints1
github.com/leohenon/opencode-vim/releases/download
Decision evidence
public snapshotAI called this Suspicious at 88.0% confidence as Dangerous Capability with medium false-positive risk.
Evidence for warning
- `package.json` runs `postinstall.cjs` during install.
- `postinstall.cjs` fetches a platform binary from GitHub without a checksum or signature verification.
- `postinstall.cjs` writes the downloaded payload to `bin/.ocv` and makes it executable.
- `bin/ocv` later launches `bin/.ocv` with inherited CLI arguments.
Evidence against
- Default download URL is package-aligned: `github.com/leohenon/opencode-vim/releases/download`.
- The lifecycle script only detects platform/CPU details and downloads a named release asset.
- No credential harvesting, environment enumeration, exfiltration, destructive operations, or AI-agent config writes were found.
- `child_process` use is limited to local platform detection and explicit binary launching.
Behavioral surface
ChildProcessEnvironmentVarsFilesystemNetwork
UrlStrings
Source & flagged code
2 flagged · loading sourcepackage.jsonView file
•scripts.postinstall = node ./postinstall.cjs
High
Install Time Lifecycle Scripts
Package defines install-time lifecycle scripts.
package.jsonView on unpkg•scripts.postinstall = node ./postinstall.cjs
Medium
Ambiguous Install Lifecycle Script
Install-time lifecycle script is not statically allowlisted and needs review.
package.jsonView on unpkgFindings
1 High3 Medium3 Low
HighInstall Time Lifecycle Scriptspackage.json
MediumAmbiguous Install Lifecycle Scriptpackage.json
MediumNetwork
MediumEnvironment Vars
LowScripts Present
LowFilesystem
LowUrl Strings