registry / @apilift/cli / 1.5.0
@apilift/cli@1.5.0
AI Security Review
scanned 19d ago · by lpm-firewall-aiThe manifest declares no install hook. The dynamic execution matches are generated schema compilation, credential use is directed to the configured Apilift service, and the inspected agent setup is user-invoked.
Static reason
One or more suspicious static signals were detected.
Trigger
A user invokes the CLI; plugin installation occurs through setup continuation.
Impact
No credential theft, remote code execution, unconsented install-time mutation, or other attack behavior was established.
Mechanism
The CLI authenticates to the configured Apilift service. Account-enabled analytics sends filtered usage events to its configured analytics host; the local capture server requires a bearer token and binds to loopback.
AI rationale
The manifest declares no install hook. The dynamic execution matches are generated schema compilation, credential use is directed to the configured Apilift service, and the inspected agent setup is user-invoked.
Network endpoints2
apilift.deveu.i.posthog.com
Decision evidence
public snapshotAI called this Clean at 92.0% confidence as Benign with low false-positive risk.
Evidence for AI clean decision
- package.json lists only build, typecheck, and test scripts; it has no install lifecycle hook.
- CLI bearer credentials go to the configured Apilift site, which defaults to https://apilift.dev; the native host uses that same configured site.
- The dynamic function call compiles locally generated schema-validation code; the inspected source does not pass remote responses to it.
- The collector reads agent session paths to reconcile usage, filters analytics fields, and sends analytics only when the account-provided identity is enabled.
- The flagged session-audit location contains embedded token fragments and byte values, not an agent settings write.
- The capture server requires a bearer token and listens only on 127.0.0.1; agent plugin setup is reached through the explicit setup continuation command.
Evidence against
Behavioral surface
ChildProcessCryptoEnvironmentVarsEvalFilesystemNetwork
Source & flagged code
5 flaggeddist/apilift.jsView file
76const {workerData}=require('node:worker_threads');
L77: const {spawn}=require('node:child_process');
L78: const state=new Int32Array(workerData.memory,0,4), value=new Float64Array(workerData.memory,16,1);
High
23778sourceCode = this.opts.code.process(sourceCode, sch);
L23779: const makeValidate = new Function(`${names_1.default.self}`, `${names_1.default.scope}`, sourceCode);
L23780: const validate2 = makeValidate(this, this.scope.get());
High
•Manifest-reachable source captures an API credential, sends it to a fixed unofficial gateway, and persists that redirection in agent or shell configuration.
dist/apilift.js:
script = `$ErrorActionPreference='Stop'; while ($null -ne ($line=[Console]::ReadLine())) { $parts=$line.Split('|'); try { $p=[System.Diagnostics.Process]::GetProcessById([int]$part...
import { mkdirSync as mkdirSync2, readFileSync as readFileSync2, rmSync, writeFileSync } from "node:fs";
writeFileSync(join(directory, "owner.json"), JSON.stringify(owner), { flag: "wx", mode: 384 });
transportDefinitionSchema = external_exports.strictObject({ title, description: requiredDescription, mode: external_exports.enum(["direct", "browser"]), baseUrl: requestUrlSchema.o...
if (v.mode === "direct" && !v.baseUrl)
ctx.addIssue({ cod
Findings
1 Critical4 High3 Medium6 Low
CriticalRemote Response Code Executiondist/apilift-capture-server.js
HighChild Processdist/apilift.js
HighEvaldist/apilift.js
HighCredential Redirect Persistencedist/apilift.js
HighCross File Remote Execution Contextdist/apilift.js
MediumNetwork
MediumEnvironment Vars
MediumStructural Risk Force Deep Review
LowScripts Present
LowFilesystem
LowHigh Entropy Strings
LowTelemetry
LowUrl Strings
LowNo License
Affected versions and remediation
This report applies to @apilift/cli@1.5.0.
See all versions of @apilift/cli for other recorded verdicts.
- Review the evidence and your use of @apilift/cli@1.5.0 before allowing it. Restrict the permissions described in this report.
- Choose an independently verified alternative or release. This report does not establish that other versions are safe.
Evidence last updated: .
Think this verdict is wrong? Dispute it on GitHub or read how reports are produced.