registry / @apilift/cli / 1.5.11
@apilift/cli@1.5.11
AI Security Review
scanned 11d ago · by lpm-firewall-aiThe package manifest has no install hook, and the inspected executable excerpts did not confirm the scanner's credential-redirection or remote-execution claims. The review supports marking this version clean.
Static reason
One or more suspicious static signals were detected.
Trigger
Running the CLI or its separately invoked helper binaries.
Impact
No confirmed attack impact was established.
Mechanism
The inspected code supports configured app connections and local service communication; no confirmed malicious credential transfer or remote code execution path was found.
AI rationale
The package manifest has no install hook, and the inspected executable excerpts did not confirm the scanner's credential-redirection or remote-execution claims. The review supports marking this version clean.
Decision evidence
public snapshotAI called this Clean at 86.0% confidence as Benign with medium false-positive risk.
Evidence for AI clean decision
- package.json lists CLI binaries and build/test scripts, with no install lifecycle hook.
- The main bundle implements configured app connections and sends calls to a local loopback service; inspected code did not establish credential forwarding to an unrelated recipient.
- The capture-server bundle begins with package version and server setup code; searches did not find the flagged remote-response execution pattern.
- Inspected dependency manifests identify keyring, pricing-data, and schema-validation libraries; no package attack behavior was established in the reviewed excerpts.
Evidence against
- Static hints flagged dynamic execution, a credential redirect, and remote response execution, but inspected source did not substantiate those findings.
Behavioral surface
ChildProcessCryptoEnvironmentVarsEvalFilesystemNetwork
HighEntropyStringsPossibleObfuscation
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.11.
See all versions of @apilift/cli for other recorded verdicts.
- Review the evidence and your use of @apilift/cli@1.5.11 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.