---
id: "MAL-2026-18377"
kind: "package"
aliases: ["MAL-2026-18377"]
title: "Malicious code in spectral-core (npm)"
severity: "critical"
cvss: null
epss: null
exploited: false
status: "open"
category: "package"
products: [{"name": "spectral-core", "fixed": [], "affected": "= 3.0.6; = 3.0.4; = 3.0.10; = 3.0.5; = 3.0.3; = 3.0.11; = 3.0.7; = 3.0.12; = 3.0.9; = 3.0.2", "ecosystem": "npm"}]
ecosystems: ["npm"]
tags: ["malicious", "package"]
not_affected_if: []
published_at: "2026-10-29T14:57:43+00:00"
first_seen_at: "2026-10-29T16:25:02+00:00"
updated_at: "2026-10-29T18:39:10+00:00"
sources: [{"source": "osv-malicious", "url": "https://osv.dev/vulnerability/MAL-2026-18377", "first_seen_at": "2026-10-29T16:25:02+00:00"}]
---

# Malicious code in spectral-core (npm)

## Affected

- npm:spectral-core affected = 3.0.6; = 3.0.4; = 3.0.10; = 3.0.5; = 3.0.3; = 3.0.11; = 3.0.7; = 3.0.12; = 3.0.9; = 3.0.2 fixed ?

## Timeline

- 2026-10-29T16:25:02+00:00 osv-malicious https://osv.dev/vulnerability/MAL-2026-18377

## From the sources

---
_-= Per source details. Do not edit below this line.=-_

## Source: amazon-inspector (451c36f03e81be0ff6c85334587d7ff401de1e5134e179557ec4bc454cd7ba76)
The tarball ships only package.json and binding.gyp (plus a markdown file), with gypfile: true set in package.json so npm invokes node-gyp rebuild on install. binding.gyp declares a 'none'-type target with no native source files; its sole purpose is an inline action that runs `node -e` with an embedded script. At install time that script reads /proc/1/environ and /proc/self/environ (container/pod entrypoint environment variables, which routinely contain CI/CD secrets and cloud credentials), collects DNS/socket/ARP/route reconnaissance output, queries the AWS EC2 instance metadata service at 169.254.169.254 for user-data and meta-data, and POSTs the collected data to the hardcoded collector https://webhook.site/d6092bdc-05c0-45da-a280-c343ea6d6156. The package exposes no library functionality — main: index.js is declared but index.js is not shipped — so the binding.gyp exists solely as a vehicle for install-time code execution and credential exfiltration. The name resembles the legitimate @stoplight/spectral-core project but the shipped contents are unrelated to it.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
