AI Security Review
scanned 1d ago · by lpm-firewall-aiThe package has an install-time downloader for a prebuilt CLI binary, but the source limits it to package-owned GitHub release assets with checksum verification. No confirmed malicious attack behavior is established by static source inspection.
Static reason
One or more suspicious static signals were detected.
Trigger
npm install runs postinstall; user later runs tacho CLI
Impact
Installs and executes the tachograph CLI binary when invoked; no source evidence of exfiltration or unauthorized mutation
Mechanism
package-aligned binary download, checksum verification, extraction, and CLI launcher
Rationale
The suspicious primitives are package-aligned: postinstall fetches a documented release artifact from the package's own GitHub project, verifies its SHA-256 checksum, and installs it as the CLI binary. Static source inspection found no concrete malicious chain, credential theft, broad control-surface mutation, or stealth behavior.
Evidence
package.jsoninstall.jsasset.jsbin/tacho.jsREADME.mdbin/tachobin/tacho.exeos tmpdir tacho-*
Network endpoints1
github.com/kosako/tachograph/releases/download/
Decision evidence
public snapshotAI called this Clean at 84.0% confidence as Benign with medium false-positive risk.
Evidence for block
- package.json defines postinstall: node install.js
- install.js downloads a platform archive and extracts a tacho binary during install
- bin/tacho.js later spawnSyncs bin/tacho with user CLI args
Evidence against
- install.js downloads only from package-aligned GitHub release URLs under github.com/kosako/tachograph
- install.js verifies the downloaded archive against checksums.txt before extraction
- install.js writes only a temp archive and bin/tacho or bin/tacho.exe inside the package
- No credential/env harvesting, exfiltration, destructive behavior, persistence, or AI-agent config writes found
- README documents the install-time binary download and user-invoked setup command
Behavioral surface
ChildProcessCryptoEnvironmentVarsFilesystemNetwork
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 High3 Medium3 Low
HighInstall Time Lifecycle Scriptspackage.json
MediumAmbiguous Install Lifecycle Scriptpackage.json
MediumNetwork
MediumEnvironment Vars
LowScripts Present
LowFilesystem
LowUrl Strings