registry  /  jinzd-ai-cli  /  0.4.205

jinzd-ai-cli@0.4.205

Cross-platform REPL-style AI CLI with multi-provider support

Static Scan Results

scanned 2d ago · by rust-scanner

Static analysis flagged 18 finding(s) at 72.0% confidence. This version is warn-only unless an AI or security-team review confirms malicious behavior.

Static reason
One or more suspicious static signals were detected.

Decision evidence

public snapshot
Behavioral surface
Source
ChildProcessCryptoDynamicRequireEnvironmentVarsFilesystemNetworkShellWebSocket
Supply chain
HighEntropyStringsMinifiedObfuscatedUrlStrings
ManifestNo manifest risk signals triggered.
scanned 75 file(s), 2.50 MB of source, external domains: 127.0.0.1, ai.dev, api.deepseek.com, api.minimaxi.com, api.moonshot.ai, api.openai.com, cn.bing.com, console.cloud.google.com, github.com, mths.be, ollama.com, open.bigmodel.cn, openrouter.ai, programmablesearchengine.google.com, registry.npmjs.org, tailwindcss.com, twitter.com, www.googleapis.com

Source & flagged code

9 flagged · loading source
dist/chunk-ZSC4YLEJ.jsView file
16// src/mcp/client.ts L17: import { spawn } from "child_process"; L18: var McpClient = class {
High
Child Process

Package source references child process execution.

dist/chunk-ZSC4YLEJ.jsView on unpkg · L16
692package = jinzd-ai-cli; repositoryIdentity = ai-cli; dependency = undici L692: try { L693: const { ProxyAgent, setGlobalDispatcher } = await import("undici"); L694: setGlobalDispatcher(new ProxyAgent({ uri: proxyUrl }));
High
Copied Package Dependency Bridge

Package metadata claims a different repository identity while copied source loads a runtime dependency bridge.

dist/chunk-ZSC4YLEJ.jsView on unpkg · L692
dist/chunk-43MWRT2C.jsView file
205return { L206: shell: "powershell.exe", L207: args: ["-NoProfile", "-NonInteractive", "-Command", WIN_UTF8_PREAMBLE + command]
High
Shell

Package source references shell execution.

dist/chunk-43MWRT2C.jsView on unpkg · L205
1010} L1011: const { readFile: readFile2 } = await import("fs/promises"); L1012: const buf = size > 1048576 ? await readFile2(normalizedPath) : readFileSync2(normalizedPath);
Medium
Dynamic Require

Package source references dynamic require/import behavior.

dist/chunk-43MWRT2C.jsView on unpkg · L1010
44// src/tools/builtin/bash.ts L45: import { spawn } from "child_process"; L46: import { existsSync as existsSync2, readdirSync, statSync } from "fs"; ... L209: } L210: return { shell: process.env["SHELL"] ?? "/bin/bash", args: ["-c", command] }; L211: } L212: function decodeWindowsBuffer(buf) { L213: const utf8 = buf.toString("utf-8"); L214: if (!utf8.includes("\uFFFD")) return utf8; ... L229: if (!cwd) { L230: cwd = process.cwd(); L231: cwdBySession.set(key, cwd);
Medium
Install Persistence

Source writes installer persistence such as shell profile or service configuration.

dist/chunk-43MWRT2C.jsView on unpkg · L44
dist/chunk-CKH4KQ4E.jsView file
52function indexDir() { L53: return path.join(os.homedir(), ".aicli", INDEX_DIR_NAME); L54: } ... L66: const raw = fs.readFileSync(p, "utf-8"); L67: const parsed = JSON.parse(raw); L68: if (parsed.version !== SYMBOL_INDEX_VERSION) return null;
Low
Weak Crypto

Package source references weak cryptographic algorithms.

dist/chunk-CKH4KQ4E.jsView on unpkg · L52
dist/electron-server.jsView file
84// 可选:直接在此写 key(也可通过 apiKeys 字段或环境变量提供) L85: baseUrl: z.string(), L86: // OpenAI 兼容 API 的 base URL(必填) ... L434: try { L435: const raw = JSON.parse(readFileSync(this.configPath, "utf-8")); L436: return ConfigSchema.parse(raw); ... L4725: // src/tools/builtin/bash.ts L4726: import { spawn } from "child_process"; L4727: import { existsSync as existsSync4, readdirSync as readdirSync2, statSync } from "fs";
High
Remote Agent Bridge

Source exposes local file and command tools to a remote model endpoint.

dist/electron-server.jsView on unpkg · L84
59Detached bundled service listener: dist/electron-server.js launches a Node helper and exposes a broad-bound HTTP listener. L59: import express from "express"; L60: import { createServer } from "http"; L61: import { WebSocketServer } from "ws"; L62: import { join as join17, dirname as dirname6, resolve as resolve6, relative as relative3, sep as sep3 } from "path"; L63: import { existsSync as existsSync23, readFileSync as readFileSync16, readdirSync as readdirSync11, statSync as statSync9, realpathSync } from "fs"; ... L336: if (fixedEnvVar && fixedEnvVar !== dynamicEnvVar) { L337: const fixedVal = process.env[fixedEnvVar]; L338: const dynVal = process.env[dynamicEnvVar]; L339: if (fixedVal && dynVal && fixedVal !== dynVal) { L340: process.stderr.write(`[warn] env var collision: ${fixedEnvVar} and ${dynamicEnvVar} have different values for provider "${providerId}". Using ${fixedEnvVar}. L341: `); ... L422: constructor(configDir) {
High
Spawned Bundled Service Listener

Source launches a detached bundled service that exposes a broad-bound HTTP listener.

dist/electron-server.jsView on unpkg · L59
dist/wasm/tree-sitter-go.wasmView file
path = dist/wasm/tree-sitter-go.wasm kind = wasm_module sizeBytes = 217182 magicHex = [redacted]
Medium
Ships Wasm Module

Package ships WebAssembly modules.

dist/wasm/tree-sitter-go.wasmView on unpkg

Findings

5 High6 Medium7 Low
HighChild Processdist/chunk-ZSC4YLEJ.js
HighShelldist/chunk-43MWRT2C.js
HighRemote Agent Bridgedist/electron-server.js
HighCopied Package Dependency Bridgedist/chunk-ZSC4YLEJ.js
HighSpawned Bundled Service Listenerdist/electron-server.js
MediumDynamic Requiredist/chunk-43MWRT2C.js
MediumNetwork
MediumEnvironment Vars
MediumInstall Persistencedist/chunk-43MWRT2C.js
MediumShips Wasm Moduledist/wasm/tree-sitter-go.wasm
MediumStructural Risk Force Deep Review
LowNon Install Lifecycle Scripts
LowScripts Present
LowWeak Cryptodist/chunk-CKH4KQ4E.js
LowFilesystem
LowObfuscated
LowHigh Entropy Strings
LowUrl Strings