{
  "schema_version": "1.6.0",
  "id": "CLR-2026-2989",
  "modified": "2026-06-30T23:20:00Z",
  "published": "2026-06-30T23:20:00Z",
  "summary": "Anatomy of an npm registry-hijack: /etc/hosts redirection and publish-token theft",
  "details": "A supply-chain technique that redirects a victim's npm registry to an attacker-controlled host via /etc/hosts, harvests the npm _authToken, and enables silent package substitution — the \"coral-wraith\" pattern. codelake's scanner independently detected and classified the specimen from the live npm feed. Note: the specimen analysed here (cursed-modules) is a CTF/red-team reproduction of the technique; the underlying campaign it mirrors is real and documented.",
  "affected": [
    {
      "package": {
        "ecosystem": "npm",
        "name": "coral-wraith"
      },
      "versions": [
        "1.0.8"
      ]
    }
  ],
  "references": [
    {
      "type": "ADVISORY",
      "url": "https://research.codelake.dev/advisories/clr-2026-2989-coral-wraith-npm-hijack"
    },
    {
      "type": "WEB",
      "url": "https://osv.dev/vulnerability/MAL-2026-6698"
    },
    {
      "type": "WEB",
      "url": "https://osv.dev/vulnerability/MAL-2026-5682"
    }
  ],
  "credits": [
    {
      "name": "Sascha Klein, codelake Research",
      "type": "FINDER",
      "contact": [
        "https://research.codelake.dev"
      ]
    }
  ],
  "database_specific": {
    "caseId": "CLR-2026-2989",
    "kind": "malware",
    "class": "Registry hijack",
    "severity": "Critical",
    "status": "Confirmed malicious · technique dissection",
    "iocs": {
      "ips": [
        "154.57.164.70",
        "154.57.164.76"
      ],
      "hashes": [
        "sha256:d30d718f0746f15cb7234fd16bc79a2e62afab6c75a2d240c5025172377cc3bc"
      ],
      "indicators": [
        "154.57.164.70:32447 (validated routable)",
        "154.57.164.76:30728 (validated routable — same /24 as the coral-wraith campaign)",
        "registry.spectral-corsair.htb (CTF registry stand-in injected into /etc/hosts)",
        "/etc/hosts rewrite → registry redirect → npm _authToken harvest → package substitution",
        "cursed-modules (npm) — removed; replaced by 0.0.1-security tombstone. Specimen SHA below (v1.0.8)",
        "d30d718f0746f15cb7234fd16bc79a2e62afab6c75a2d240c5025172377cc3bc"
      ]
    }
  }
}