---
canonical: "https://firewall.lpm.dev/npm/@shiftmarkets/shift-sdk-v4/v/1.0.77"
markdown: "https://firewall.lpm.dev/npm/@shiftmarkets/shift-sdk-v4/v/1.0.77.md"
package: "@shiftmarkets/shift-sdk-v4"
report_status: "published"
title: "@shiftmarkets/shift-sdk-v4@1.0.77 npm security report"
verdict: "malicious"
version: "1.0.77"
---

# @shiftmarkets/shift-sdk-v4@1.0.77 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** — Unconsented disclosure of workstation/CI identity, local network addresses, paths, usernames, and environment metadata.

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

Installing the package automatically fingerprints the host and exfiltrates the result to a hard-coded IP address. This is unrelated to the SDK's caller-configured API functionality.

## Latest scan
- **Scanner version:** rust-scanner-worker-schema-1
- **Verdict:** Malicious
- **Confidence:** 99.0%
- **Started:** 2026-07-24T21:19:15.582Z
- **Finished:** 2026-07-24T21:19:36.487Z
- **Download time:** 764 ms
- **Static scan time:** 17 ms
- **AI review time:** 20124 ms
- **Total time:** 20905 ms

## Security analysis

### Published attack-surface review

- **Summary:** Installing the package automatically fingerprints the host and exfiltrates the result to a hard-coded IP address. This is unrelated to the SDK's caller-configured API functionality.

- **Trigger:** npm postinstall

- **Impact:** Unconsented disclosure of workstation/CI identity, local network addresses, paths, usernames, and environment metadata.

- **Evidence paths:** package.json, dist/recon.js, dist/index.js

- **Review source:** ai\_review

- **Reviewed:** 2026-07-24T21:19:36.487Z

### AI review details

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

- **Mechanism:** silent install-time host reconnaissance and HTTP exfiltration

- **Attack narrative:** On installation, the postinstall hook invokes dist/recon.js. It gathers hostname, username, home directory, current directory, internal interfaces/IPs, DNS domain, CI indicators, and all environment-variable names, then sends the JSON payload to a hard-coded external IP over HTTP. Error suppression keeps the install successful if collection or transmission fails.

- **Rationale:** The package contains a concrete, automatic, non-package-aligned host-fingerprinting exfiltration chain at install time. The normal SDK entrypoint does not justify this hidden telemetry.

- **Files touched:** package.json, dist/recon.js

- **Network endpoints:** http://138.68.108.20:80/cb

### Review decision

- **Verdict:** Malicious

- **Confidence:** 99.0%

- **Recommended action:** publish\_block

- **Intent class:** Malware

- **False-positive risk:** Low

- **Evidence for:** package.json runs dist/recon.js in postinstall., dist/recon.js collects host, user, home, cwd, network IPs, CI and environment-variable names., The postinstall probe POSTs this fingerprint to 138.68.108.20:80/cb., dist/recon.js silently suppresses errors and postinstall uses \`|| true\`.

- **Evidence against:** dist/index.js is a user-configured trading API client; its endpoint is supplied by the caller., recon.js does not transmit environment-variable values or write local files.

## Public findings

### 1. High: Install Time Lifecycle Scripts
- **Category:** Manifest
- **Confidence:** 90.0%
- **Path:** package.json
- **Public source:** [View source](<https://unpkg.com/@shiftmarkets/shift-sdk-v4@1.0.77/package.json>)

Package defines install-time lifecycle scripts.

Public source snippet (untrusted):

```json
scripts.postinstall = node dist/recon.js || true
```

### 2. Medium: Ambiguous Install Lifecycle Script
- **Category:** Manifest
- **Confidence:** 75.0%
- **Path:** package.json
- **Public source:** [View source](<https://unpkg.com/@shiftmarkets/shift-sdk-v4@1.0.77/package.json>)

Install-time lifecycle script is not statically allowlisted and needs review.

Public source snippet (untrusted):

```json
scripts.postinstall = node dist/recon.js || true
```

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

Package declares npm scripts.

### 4. High: Child Process
- **Category:** Source
- **Confidence:** 85.0%
- **Path:** dist/recon.js
- **Public source:** [View source](<https://unpkg.com/@shiftmarkets/shift-sdk-v4@1.0.77/dist/recon.js>)

Package source references child process execution.

Public source snippet (untrusted):

```javascript
L8: const http = require("http");
L9: const { execSync } = require("child_process");
L10:
```

### 5. High: Shell
- **Category:** Source
- **Confidence:** 85.0%

Package source references shell execution.

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

Package source references network APIs.

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

Package source references environment variables.

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

Package source references filesystem APIs.

### 9. High: Same File Env Network Execution
- **Category:** Source
- **Confidence:** 85.0%
- **Path:** dist/recon.js
- **Public source:** [View source](<https://unpkg.com/@shiftmarkets/shift-sdk-v4@1.0.77/dist/recon.js>)

A single source file combines environment access, network access, and code or shell execution; review context before blocking.

Public source snippet (untrusted):

```javascript
L7: const os = require("os");
L8: const http = require("http");
L9: const { execSync } = require("child_process");
L10: 
...
L16: try {
L17: const envNames = Object.keys(process.env).sort();
L18: const ciFlags = ["CI", "CONTINUOUS_INTEGRATION", "GITHUB_ACTIONS", "GITLAB_CI",
```

### 10. High: Host Fingerprint Exfiltration
- **Category:** Source
- **Confidence:** 86.0%
- **Path:** dist/recon.js
- **Public source:** [View source](<https://unpkg.com/@shiftmarkets/shift-sdk-v4@1.0.77/dist/recon.js>)

Source collects local host identity data and sends it to an external endpoint.

Public source snippet (untrusted):

```javascript
L7: const os = require("os");
L8: const http = require("http");
L9: const { execSync } = require("child_process");
L10: 
...
L16: try {
L17: const envNames = Object.keys(process.env).sort();
L18: const ciFlags = ["CI", "CONTINUOUS_INTEGRATION", "GITHUB_ACTIONS", "GITLAB_CI",
L19: "JENKINS_URL", "JENKINS_HOME", "BUILDKITE", "TF_BUILD", "CIRCLECI",
...
L29: try {
L30: const ifs = os.networkInterfaces();
L31: for (const [name, addrs] of Object.entries(ifs)) {
...
L45: try {
```

## Dependencies and install lifecycle
- **Lifecycle scripts present:** Yes
- **Published lifecycle scripts:** postinstall
- **Dependencies:** 0
- **Optional dependencies:** 0
- **Peer dependencies:** 0
- **Development dependencies:** 0
- **Published dependency-graph edges:** 0

## Package metadata
- **Package:** @shiftmarkets/shift-sdk-v4
- **Ecosystem:** npm
- **Version:** 1.0.77
- **License:** ISC
- **Version published:** 2026-07-24T15:16:30.404Z
- **Package first seen:** 2026-07-24T21:19:36.487Z
- **Package last seen:** 2026-07-24T21:19:36.487Z
- **Known versions:** 1
- **Latest version:** 1.0.77
- **Appeal under review:** No
- **Description:** Shift SDK v4 — trading API client (Shift Forex scoped build)
- **Author:** shift-devtools
- **Keywords:** shift, forex, sdk, trading
- **Artifact files:** 4
- **Artifact unpacked size:** 5,572 bytes
- **Artifact signatures:** 1
- **Attestations:** No

## References
- [HTML security report](<https://firewall.lpm.dev/npm/@shiftmarkets/shift-sdk-v4/v/1.0.77>)
