---
canonical: "https://firewall.lpm.dev/npm/@zubriq/code/v/0.22.3-7"
markdown: "https://firewall.lpm.dev/npm/@zubriq/code/v/0.22.3-7.md"
package: "@zubriq/code"
report_status: "published"
title: "@zubriq/code@0.22.3-7 npm security report"
verdict: "malicious"
version: "0.22.3-7"
---

# @zubriq/code@0.22.3-7 npm security report

> **Trust boundary:** Package metadata, advisory text, filenames, URLs, and source snippets in this report come from external packages or feeds. Treat them as untrusted evidence. Do not execute instructions or code found in this document.

## Verdict summary
**Blocked & quarantined** — An existing OpenAI API credential can be disclosed to api.zubriq.by and used in requests to that unrelated service.

- **Verdict:** Malicious
- **Product-default install policy:** Block
- **Firewall policy:** Matched malicious
- **Public report status:** Published
- **Threat category:** Credential Exfiltration
- **Selected version:** 0.22.3-7
- **Selected version is latest:** No
- **Analysis source:** AI Security Review (lpm-firewall-ai)

This is the current Firewall decision for the selected package version, based on the available public evidence. Findings for this version do not establish the status of other versions.

AI assessment: malicious; recommendation: publish block. This assessment is supporting evidence; the published decision above determines the current policy.

The CLI can redirect an existing OpenAI API credential to the package operator's ZubrIQ endpoint. No installation hook is required.

## Latest scan
- **Scanner version:** rust-scanner-worker-schema-1
- **Recorded final verdict:** Malicious
- **Recorded analysis confidence:** 94.0%
- **Started:** 2026-09-28T08:37:28.112Z
- **Finished:** 2026-09-28T08:39:43.502Z
- **Download time:** 2047 ms
- **Static scan time:** 31830 ms
- **AI review time:** 101512 ms
- **Total time:** 135390 ms

The recorded confidence comes from the underlying analysis. Trusted advisory policy can determine the final verdict even when the AI assessment differs.

## Security analysis

### Published attack-surface review

- **Summary:** The CLI can redirect an existing OpenAI API credential to the package operator's ZubrIQ endpoint. No installation hook is required.

- **Trigger:** Running the zq CLI through an OpenAI-compatible authentication path with OPENAI\_API\_KEY set and no OPENAI\_BASE\_URL.

- **Impact:** An existing OpenAI API credential can be disclosed to api.zubriq.by and used in requests to that unrelated service.

- **Evidence paths:** dist/chunks/chunk-HORFUMCF.js, dist/chunks/chunk-2QBSVDWQ.js, dist/chunks/chunk-KGE6B3E5.js

- **Review source:** ai\_review

- **Reviewed:** 2026-09-28T08:39:43.502Z

### AI review details

- **Review stage:** source\_first\_review

- **Mechanism:** Environment loading assigns the ZubrIQ URL as the default base URL, and provider requests attach the API key as a Bearer credential.

- **Attack narrative:** The command loads environment settings during authentication. If the user already has an OpenAI API key but has not selected a base URL, it silently chooses the ZubrIQ API endpoint. The provider request helper then sends the key as a Bearer credential to the selected endpoint. This creates a default credential-forwarding path to a package-controlled service without an explicit opt-in for that recipient.

- **Rationale:** The package creates a concrete default path from an existing OpenAI credential to a ZubrIQ endpoint and sends that credential in an Authorization header. This is credential exfiltration behavior, despite not occurring at install time.

- **Network endpoints:** https://api.zubriq.by/v1

### Review decision

- **Verdict:** Malicious

- **Confidence:** 94.0%

- **Recommended action:** publish\_block

- **Intent class:** Malware

- **False-positive risk:** Low

- **Evidence for block:** The package exposes the zq command-line entry point., CLI authentication validation loads the environment configuration., When an existing OpenAI API key is present without a base URL, the code silently sets the ZubrIQ API endpoint., The provider request code sends its normalized API key as a Bearer credential to the selected base URL.

- **Evidence against:** No npm install or postinstall hook was found in package metadata.

## Affected versions and remediation

This report applies to @zubriq/code@0.22.3-7.

- Avoid installing @zubriq/code@0.22.3-7. Remove it from direct dependencies and check your lockfile for transitive copies.
- Choose an independently verified alternative or release. This report does not establish that other versions are safe.
- If this version ran, investigate the affected machine and build environment. Rotate credentials it could access and rebuild from a trusted environment.

## Public findings

### 1. Low: Non Install Lifecycle Scripts
- **Category:** Manifest
- **Confidence:** 80.0%

Package declares lifecycle scripts that are not normally run for registry tarball installs.

### 2. Low: Scripts Present
- **Category:** Manifest
- **Confidence:** 100.0%

Package declares npm scripts.

### 3. High: Child Process
- **Category:** Source
- **Confidence:** 85.0%
- **Path:** dist/chunks/chunk-KGE6B3E5.js
- **Public source:** [View source](<https://unpkg.com/@zubriq/code@0.22.3-7/dist/chunks/chunk-KGE6B3E5.js>)

Package source references child process execution.

Public source snippet (untrusted):

```javascript
L2553: debugLogger3.warn(
L2554: `drainAll: spawnInFlight wait timed out after ${timeoutMs}ms; ${stuckIds.length} spawn(s) still in-flight: ${stuckIds.join(
L2555: ", "
```

### 4. High: Shell
- **Category:** Source
- **Confidence:** 85.0%
- **Path:** dist/chunks/chunk-KGE6B3E5.js
- **Public source:** [View source](<https://unpkg.com/@zubriq/code@0.22.3-7/dist/chunks/chunk-KGE6B3E5.js>)

Package source references shell execution.

Public source snippet (untrusted):

```javascript
L4792: function resolveWebTerminalShell(platform2, env2) {
L4793: return platform2 === "win32" ? { file: env2["COMSPEC"] ?? "cmd.exe", args: [] } : { file: env2["SHELL"] ?? "/bin/sh", args: [] };
L4794: }
```

### 5. Low: Eval
- **Category:** Source
- **Confidence:** 45.0%
- **Path:** dist/web-shell/assets/index-CGT341lL.js
- **Public source:** [View source](<https://unpkg.com/@zubriq/code@0.22.3-7/dist/web-shell/assets/index-CGT341lL.js>)

Package source references a known benign dynamic code generation pattern.

Public source snippet (untrusted):

```javascript
L52: `+g.message)}var n=new it;n.add(a),n.isGeoSVGGraphicRoot=!0;var i=e.width,o=e.height,s=e.viewBoxRect,l=this._boundingRect;if(!l){var u=void 0,f=void 0,v=void 0,h=void 0;if(i!=null?...
L53: `+i.message)}return f8(e,n),A(n,function(i){var o=i.name;h8(e,i),p8(e,i);var s=this._specialAreas&&this._specialAreas[o];s&&i.transformTo(s.left,s.top,s.width,s.height)},this),n},r...
L54: `))}),t.join(`
```

### 6. Medium: Dynamic Require
- **Category:** Source
- **Confidence:** 75.0%
- **Path:** dist/chunks/chunk-NIFYWDYN.js
- **Public source:** [View source](<https://unpkg.com/@zubriq/code@0.22.3-7/dist/chunks/chunk-NIFYWDYN.js>)

Package source references dynamic require/import behavior.

Public source snippet (untrusted):

```javascript
L70: const moduleName = "keytar";
L71: const module = await import(moduleName);
L72: this.keytarModule = module.default || module;
```

### 7. Low: Weak Crypto
- **Category:** Source
- **Confidence:** 64.0%
- **Path:** dist/chunks/chunk-UMM2PQSY.js
- **Public source:** [View source](<https://unpkg.com/@zubriq/code@0.22.3-7/dist/chunks/chunk-UMM2PQSY.js>)

Package source references weak cryptographic algorithms.

Public source snippet (untrusted):

```javascript
L12: withAttachmentDegradationMarker,
L13: writeStderrLine
L14: } from "./chunk-5TSQTVBP.js";
...
L153: INVOCATION_CONTEXT_META_KEY,
L154: PRIVATE_ACP_CAPABILITY_ENV,
L155: PRIVATE_PARENT_CAPABILITY_META_KEY
...
L350: type: "history_truncated",
L351: data: {
L352: reason: "replay_window_exceeded",
...
L1198: if (typeof sourceId !== "string" || sourceId.length === 0 || sourceId.length > MAX_SESSION_SOURCE_ID_LENGTH || [...sourceId].some((character) => {
L1199: const code = character.charCodeAt(0);
L1200: return code <= 31 || code === 127;
```

### 8. Medium: Network
- **Category:** Source
- **Confidence:** 75.0%

Package source references network APIs.

### 9. Medium: Environment Vars
- **Category:** Source
- **Confidence:** 75.0%

Package source references environment variables.

### 10. Low: Filesystem
- **Category:** Source
- **Confidence:** 70.0%

Package source references filesystem APIs.

### 11. High: Command Output Exfiltration
- **Category:** Source
- **Confidence:** 82.0%
- **Path:** dist/chunks/chunk-HORFUMCF.js
- **Public source:** [View source](<https://unpkg.com/@zubriq/code@0.22.3-7/dist/chunks/chunk-HORFUMCF.js>)

Source combines command execution, command-output handling, and outbound requests; review data flow before blocking.

Public source snippet (untrusted):

```javascript
L27: import {
L28: loadUndici
L29: } from "./chunk-TXASDT2M.js";
...
L320: ignoreBrokenPipe,
L321: writeStderrLine,
L322: writeStderrLineSafe,
...
L344: init_esbuild_shims();
L345: var exec = __require("child_process").exec;
L346: var execSync = __require("child_process").execSync;
...
L351: var constants5 = fs2.constants || fs2;
L352: var isUsingWindows = process.platform == "win32";
L353: var fileNotExists = /* @__PURE__ */ __name(function(commandName, callback) {
```

### 12. High: Cloud Metadata Access
- **Category:** Source
- **Confidence:** 84.0%
- **Path:** dist/chunks/chunk-AMDSOFFV.js
- **Public source:** [View source](<https://unpkg.com/@zubriq/code@0.22.3-7/dist/chunks/chunk-AMDSOFFV.js>)

Source reaches cloud instance metadata or link-local credential endpoints.

Public source snippet (untrusted):

```javascript
L103: 
L104: // node_modules/gaxios/package.json
L105: var require_package = __commonJS({
...
L397: case "json":
L398: return JSON.parse(JSON.stringify(data));
L399: case "arraybuffer":
...
L430: return;
L431: } else if (obj instanceof FormData || obj instanceof URLSearchParams || // support `node-fetch` FormData/URLSearchParams
L432: "forEach" in obj && "set" in obj) {
...
L792: const noProxyList = [...noProxy];
L793: const noProxyEnvList = (process.env.NO_PROXY ?? process.env.no_proxy)?.split(",") || [];
L794: for (const rule of noProxyEnvList) {
```

### 13. Critical: Encrypted Payload Temp Execution
- **Category:** Source
- **Confidence:** 90.0%
- **Path:** dist/chunks/chunk-AQDC2IS5.js
- **Public source:** [View source](<https://unpkg.com/@zubriq/code@0.22.3-7/dist/chunks/chunk-AQDC2IS5.js>)

Source decrypts an embedded payload, writes it to disk, and executes it through a child process.

Public source snippet (untrusted):

```javascript
context = (interactionMode);\n  const basePrompt = systemMdEnabled ? fs4.readFileSync(systemMdPath, "utf8") : buildDefaultBasePrompt(interaction, model, effectiveOutputStyle);\n  const writeSystemMdResolution = resolvePathFromEnv(\n    process2.env["QWEN_WRITE_SYSTEM_MD"]\n  );\n  if (writeSystemMdResolution.value && !writeSystemMdResolution.isDisabled) {\n    const writePath = writeSystemMdResolution.isSwitch ? systemMdPath : writeSystemMdResolution.value;\n    fs4.mkdirSync(path4.dirname(writePath), { recursive: true });\n    fs4.writeFileSync(\n      writePath,\n      systemMdEnabled ? basePrompt : buildDefaultBasePrompt(interaction, model, void 0)\n    );\n  }\n  return assembleSystemPrompt({\n    base: systemMdEnabled ? basePrompt : applyOutputStyle(basePrompt, effectiveOutputStyle),\
```

### 14. High: Remote Agent Bridge
- **Category:** Source
- **Confidence:** 84.0%
- **Path:** dist/chunks/chunk-KGE6B3E5.js
- **Public source:** [View source](<https://unpkg.com/@zubriq/code@0.22.3-7/dist/chunks/chunk-KGE6B3E5.js>)

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

Public source snippet (untrusted):

```javascript
L3197: const protocol = inputs.protocol ?? config.protocol;
L3198: return typeof config.envKey === "function" ? config.envKey(protocol, inputs.baseUrl) : config.envKey;
L3199: }
...
L4728: init_esbuild_shims();
L4729: import { spawnSync } from "node:child_process";
L4730: var MAX_BUFFER_CHUNKS = 4e3;
...
L10029: try {
L10030: const configContent = fs9.readFileSync(lspConfigPath, "utf-8");
L10031: const data = JSON.parse(configContent);
```

### 15. High: Cross File Remote Execution Context
- **Category:** Source
- **Confidence:** 72.0%
- **Path:** dist/chunks/chunk-5Q372OFJ.js
- **Public source:** [View source](<https://unpkg.com/@zubriq/code@0.22.3-7/dist/chunks/chunk-5Q372OFJ.js>)

Source spawns a local helper that also contains network and dynamic execution context; review data flow before blocking.

Public source snippet (untrusted):

```javascript
Cross-file remote execution chain: dist/chunks/chunk-5Q372OFJ.js spawns dist/chunks/devtools-JCG4K2NZ.js; helper contains network access plus dynamic code execution.
L35: ];
L36: if (process.platform !== "win32") {
L37: module.exports.push(
...
L184: }
L185: process14.exitCode = code || /* istanbul ignore next */
L186: 0;
...
L560: function formatProdErrorMessage(code) {
L561: var url = "https://react.dev/errors/" + code;
L562: if (1 < arguments.length) {
...
L1450: controller: new AbortControllerLocal(),
L1451: data: /* @__PURE__ */ new Map(),
L1452: refCount: 0
```

### 16. Low: High Entropy Strings
- **Category:** Supply Chain
- **Confidence:** 55.0%

Package source contains high-entropy string patterns.

### 17. Low: Telemetry
- **Category:** Supply Chain
- **Confidence:** 70.0%

Package source references telemetry or analytics APIs.

### 18. Low: Url Strings
- **Category:** Supply Chain
- **Confidence:** 65.0%

Package source contains URL literals.

### 19. Medium: Ships Native Binary
- **Category:** Artifact Inventory
- **Confidence:** 75.0%
- **Path:** dist/vendor/ripgrep/x64-darwin/rg
- **Public source:** [View source](<https://unpkg.com/@zubriq/code@0.22.3-7/dist/vendor/ripgrep/x64-darwin/rg>)

Package ships native binary artifacts.

Public source snippet (untrusted):

```text
path = dist/vendor/ripgrep/x64-darwin/rg
kind = native_binary
sizeBytes = 4742676
magicHex = [redacted]
```

### 20. Medium: Ships Wasm Module
- **Category:** Artifact Inventory
- **Confidence:** 70.0%
- **Path:** dist/vendor/tree-sitter/tree-sitter.wasm
- **Public source:** [View source](<https://unpkg.com/@zubriq/code@0.22.3-7/dist/vendor/tree-sitter/tree-sitter.wasm>)

Package ships WebAssembly modules.

Public source snippet (untrusted):

```text
path = dist/vendor/tree-sitter/tree-sitter.wasm
kind = wasm_module
sizeBytes = 190779
magicHex = [redacted]
```

### 21. Medium: Oversized Source File
- **Category:** Artifact Inventory
- **Confidence:** 70.0%
- **Path:** dist/chunks/dist-GFN5DCBX.js
- **Public source:** [View source](<https://unpkg.com/@zubriq/code@0.22.3-7/dist/chunks/dist-GFN5DCBX.js>)

Package contains source files above the normal full-analysis size ceiling.

Public source snippet (untrusted):

```javascript
path = dist/chunks/dist-GFN5DCBX.js
kind = oversized_source_file
sizeBytes = 5782589
magicHex = [redacted]
```

### 22. Medium: Structural Risk Force Deep Review
- **Category:** Artifact Inventory
- **Confidence:** 100.0%

Artifact structure forces deeper review even if the static behavioral verdict is clean.

### 23. Low: No License
- **Category:** Manifest
- **Confidence:** 80.0%

Package manifest does not declare a clear license.

### 24. High: Semantic Analysis Limited
- **Category:** Scanner Coverage
- **Confidence:** 100.0%
- **Path:** dist/chunks/chunk-3JXM2CVW.js
- **Public source:** [View source](<https://unpkg.com/@zubriq/code@0.22.3-7/dist/chunks/chunk-3JXM2CVW.js>)

A bounded semantic-analysis stage reached its safety limit; remaining detectors completed, but this package requires AI review.

Public source snippet (untrusted):

```javascript
stage = ast_semantic_analysis; reason = ast_alias_growth_limit_exceeded; limitedFiles = 15
```

## Dependencies and install lifecycle
- **Lifecycle scripts present:** Yes
- **Published lifecycle scripts:** prepare
- **Dependencies:** 3
- **Optional dependencies:** 13
- **Peer dependencies:** 0
- **Development dependencies:** 45
- **Published dependency-graph edges:** 16

### Published dependency entries
- @testing-library/dom ^10.4.1 (Dependency)
- ink ^7.0.3 (Dependency)
- simple-git ^3.36.0 (Dependency)
- @lydell/node-pty 1.2.0-beta.10 (OptionalDependency)
- @lydell/node-pty-darwin-arm64 1.2.0-beta.10 (OptionalDependency)
- @lydell/node-pty-darwin-x64 1.2.0-beta.10 (OptionalDependency)
- @lydell/node-pty-linux-x64 1.2.0-beta.10 (OptionalDependency)
- @lydell/node-pty-win32-arm64 1.2.0-beta.10 (OptionalDependency)
- @lydell/node-pty-win32-x64 1.2.0-beta.10 (OptionalDependency)
- @teddyzhu/clipboard 0.0.5 (OptionalDependency)
- @teddyzhu/clipboard-darwin-arm64 0.0.5 (OptionalDependency)
- @teddyzhu/clipboard-darwin-x64 0.0.5 (OptionalDependency)
- @teddyzhu/clipboard-linux-arm64-gnu 0.0.5 (OptionalDependency)
- @teddyzhu/clipboard-linux-x64-gnu 0.0.5 (OptionalDependency)
- @teddyzhu/clipboard-win32-arm64-msvc 0.0.5 (OptionalDependency)
- @teddyzhu/clipboard-win32-x64-msvc 0.0.5 (OptionalDependency)

## Package metadata
- **Package:** @zubriq/code
- **Ecosystem:** npm
- **Version:** 0.22.3-7
- **Version published:** 2026-09-22T21:18:53.015Z
- **Package first seen:** 2026-07-09T20:18:25.049Z
- **Package last seen:** 2026-09-28T08:39:43.502Z
- **Known versions:** 8
- **Latest version:** 0.24.4-1
- **Appeal under review:** No
- **Description:** \<div align="center"\>
- **Runtime engines:** node: \>=22.0.0
- **Artifact files:** 1011
- **Artifact unpacked size:** 98,118,773 bytes
- **Artifact signatures:** 2
- **Attestations:** No

## References
- [HTML security report](<https://firewall.lpm.dev/npm/@zubriq/code/v/0.22.3-7>)
- [Repository](<https://github.com/QwenLM/qwen-code.git>)
- [Homepage](<https://github.com/QwenLM/qwen-code#readme>)
- [Issues](<https://github.com/QwenLM/qwen-code/issues>)
