Skip to content
Heist/ feed
Back to feed
Unrated

Malicious code in pixel-map-testmetest (npm)

Type: advisorySources: OSV

pixel-map-testmetest 0.0.1 and 0.0.2 ship a rebuild of the data-pipeline-testmetest 2.0.1 credential stealer and run it on `npm install`: their `binding.gyp` source `/dev/null 2>&1; echo stub.c)` makes node-gyp run `index.js`, which decrypts `data.bin` and pipes it into Bun. The package.json poses as an npm staged-publishing placeholder (`"stub": true`, "Temporary package placeholder for staged publishing"). Published by npm account `newtestnewdont` on 2026-10-21 after a benign 1.0.0; the same account published benign-looking color-utils-testmetest, string-helpers-testmetest and byte-stride-testmetest. 0.0.2 (published 3.5 hours after 0.0.1) is the same loader and hook with a re-encrypted, additionally obfuscated payload. --- _-= Per source details. Do not edit below this line.=-_ ## Source: amazon-inspector (65072803ff6a65eee326b518b2039415559b4f8582f44b2f2af2f871aea9f39e) On npm install, node-gyp automatically processes binding.gyp. The binding.gyp here declares target type 'none' with no C/C++ sources and abuses GYP command-expansion `` directory, and spawns the Bun runtime (declared as an npm dependency `bun ^1.2.18`) to execute the dropped file, bypassing Node-based inspection. package.json sets `stub: true` with description 'Temporary package placeholder for staged publishing' and the README claims a holding version, yet the tarball ships the obfuscated loader, the encrypted blob, the binding.gyp install hook, and the alternate runtime — the stated purpose contradicts t

Products
pixel-map-testmetest
Affected versions
0.0.1, 0.0.2, 0.0.3
Fixed versions
Not specified
CVEs
Not specified
Confirmed fixed CVEs
Not specified
Updated in this feed
31 Oct 2026, 17:45 UTC · Revision 1

Source evidence

Malicious code in pixel-map-testmetest (npm)

core-osv · Original source

Published 21 Oct 2026, 18:00 UTC

pixel-map-testmetest 0.0.1 and 0.0.2 ship a rebuild of the data-pipeline-testmetest 2.0.1 credential stealer and run it on `npm install`: their `binding.gyp` source `/dev/null 2>&1; echo stub.c)` makes node-gyp run `index.js`, which decrypts `data.bin` and pipes it into Bun. The package.json poses as an npm staged-publishing placeholder (`"stub": true`, "Temporary package placeholder for staged publishing"). Published by npm account `newtestnewdont` on 2026-10-21 after a benign 1.0.0; the same account published benign-looking color-utils-testmetest, string-helpers-testmetest and byte-stride-testmetest. 0.0.2 (published 3.5 hours after 0.0.1) is the same loader and hook with a re-encrypted, additionally obfuscated payload. --- _-= Per source details. Do not edit below this line.=-_ ## Source: amazon-inspector (65072803ff6a65eee326b518b2039415559b4f8582f44b2f2af2f871aea9f39e) On npm install, node-gyp automatically processes binding.gyp. The binding.gyp here declares target type 'none' with no C/C++ sources and abuses GYP command-expansion `` directory, and spawns the Bun runtime (declared as an npm dependency `bun ^1.2.18`) to execute the dropped file, bypassing Node-based inspection. package.json sets `stub: true` with description 'Temporary package placeholder for staged publishing' and the README claims a holding version, yet the tarball ships the obfuscated loader, the encrypted blob, the binding.gyp install hook, and the alternate runtime — the stated purpose contradicts t

osv:MAL-2026-18180

pixel-map-testmetest

Fixed versions: Not specified

Complete source record
{
  "id": "644778dcf00fe6681cdd67e17acb44dcfc7dfd515e4935686c6feafb410cdabc",
  "url": "https://osv.dev/vulnerability/MAL-2026-18180",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Malicious code in pixel-map-testmetest (npm)",
    "summary": "pixel-map-testmetest 0.0.1 and 0.0.2 ship a rebuild of the data-pipeline-testmetest 2.0.1 credential stealer and run it on `npm install`: their `binding.gyp` source `/dev/null 2>&1; echo stub.c)` makes node-gyp run `index.js`, which decrypts `data.bin` and pipes it into Bun. The package.json poses as an npm staged-publishing placeholder (`\"stub\": true`, \"Temporary package placeholder for staged publishing\"). Published by npm account `newtestnewdont` on 2026-10-21 after a benign 1.0.0; the same account published benign-looking color-utils-testmetest, string-helpers-testmetest and byte-stride-testmetest. 0.0.2 (published 3.5 hours after 0.0.1) is the same loader and hook with a re-encrypted, additionally obfuscated payload. --- _-= Per source details. Do not edit below this line.=-_ ## Source: amazon-inspector (65072803ff6a65eee326b518b2039415559b4f8582f44b2f2af2f871aea9f39e) On npm install, node-gyp automatically processes binding.gyp. The binding.gyp here declares target type 'none' with no C/C++ sources and abuses GYP command-expansion `` directory, and spawns the Bun runtime (declared as an npm dependency `bun ^1.2.18`) to execute the dropped file, bypassing Node-based inspection. package.json sets `stub: true` with description 'Temporary package placeholder for staged publishing' and the README claims a holding version, yet the tarball ships the obfuscated loader, the encrypted blob, the binding.gyp install hook, and the alternate runtime — the stated purpose contradicts t",
    "evidence": "osv:MAL-2026-18180",
    "products": [
      {
        "name": {
          "value": "pixel-map-testmetest",
          "evidence": "/affected/0/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [],
        "affected_versions": [
          {
            "value": "0.0.1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "0.0.2",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "0.0.3",
            "evidence": "/affected/0/versions"
          }
        ]
      }
    ],
    "severity": "unknown",
    "structured": {
      "id": "MAL-2026-18180",
      "aliases": [
        "MAL-2026-18180"
      ],
      "affected": [
        {
          "package": {
            "name": "pixel-map-testmetest",
            "purl": "pkg:npm/pixel-map-testmetest",
            "ecosystem": "npm"
          },
          "versions": [
            "0.0.1",
            "0.0.2",
            "0.0.3"
          ],
          "database_specific": {
            "cwes": [
              {
                "name": "Embedded Malicious Code",
                "cweId": "CWE-506",
                "description": "The product contains code that appears to be malicious in nature."
              },
              {
                "name": "Embedded Malicious Code",
                "cweId": "CWE-506",
                "description": "The product contains code that appears to be malicious in nature."
              },
              {
                "name": "Embedded Malicious Code",
                "cweId": "CWE-506",
                "description": "The product contains code that appears to be malicious in nature."
              },
              {
                "name": "Embedded Malicious Code",
                "cweId": "CWE-506",
                "description": "The product contains code that appears to be malicious in nature."
              }
            ],
            "source": "https://github.com/ossf/malicious-packages/blob/main/osv/malicious/npm/pixel-map-testmetest/MAL-2026-18180.json",
            "indicators": {
              "evidence_files": [
                {
                  "path": "binding.gyp",
                  "tlsh": "e9c08c2cb838094539d91c3491a88402a4b242a3485a2d41fade60286fb841f288cb9d",
                  "sha256": "fda4df745212660faa56de9d1f20739402b418aab082401c38a4d3c1304123d3"
                },
                {
                  "path": "index.js",
                  "tlsh": "336250a267891ba561c80cf6b39d7503a9a0e84f35b07b68ffd25597bd3d522bc20370",
                  "sha256": "0cb9fc3dcb1ac21082de3d60eaaf91bea9b350489b42a8bc9e22003d29ca8155"
                },
                {
                  "path": "package.json",
                  "tlsh": "d3c01210a551d97640de136454a9e0675b7b9d1f104c64082b8b21484b1c5fb70bb646",
                  "sha256": "640ddc300b1bc5ccebc574fffff56c6a9118bafeaba21b0f86ee6602428c1969"
                }
              ],
              "package_integrity": [
                {
                  "hashes": {
                    "sha1": "321ad3a46c29ad57cf619d5c1fac6071923318e1",
                    "sha512_sri": "sha512-21xTwtLwm4ZEc++yfo8TpaAjP00nzmS9tUMDtno7Ct5yPlvt8AT4KJptL1cd3+OctOGv8prMLke9F8wQD6ua3Q=="
                  },
                  "filename": "pixel-map-testmetest-0.0.3.tgz"
                }
              ]
            }
          }
        }
      ],
      "modified": "2026-10-22T06:45:05.786449822Z",
      "provider": "osv",
      "references": [
        "https://www.npmjs.com/package/pixel-map-testmetest/v/0.0.1",
        "https://www.npmjs.com/package/pixel-map-testmetest/v/0.0.2",
        "https://www.npmjs.com/package/pixel-map-testmetest/v/0.0.3"
      ],
      "provider_metadata": {
        "iocs": {
          "files": [
            {
              "note": "hidden install hook: node-gyp runs `env node index.js` (identical in 0.0.1 and 0.0.2)",
              "paths": [
                "binding.gyp"
              ],
              "source": "PACKAGE_ARCHIVE",
              "digests": {
                "sha256": "fda4df745212660faa56de9d1f20739402b418aab082401c38a4d3c1304123d3"
              }
            },
            {
              "note": "0.0.1: obfuscated loader that decrypts `data.bin` and pipes it into `bun run -`",
              "paths": [
                "index.js"
              ],
              "source": "PACKAGE_ARCHIVE",
              "digests": {
                "sha256": "037eb654e4c93639e2cdec37957be72cc4ab846925d6822fe95b60f403001615"
              }
            },
            {
              "note": "0.0.1: AES-GCM-encrypted stealer payload",
              "paths": [
                "data.bin"
              ],
              "source": "PACKAGE_ARCHIVE",
              "digests": {
                "sha256": "74a728fb7ee7ac6c47263def3f104974a1b7032090c8f9005116526bc742e09c"
              }
            },
            {
              "note": "0.0.1: decrypted 949 KB Bun payload, a rebuild of the data-pipeline-testmetest 2.0.1 stealer",
              "source": "IN_MEMORY",
              "digests": {
                "sha256": "89c8129a165da5b6d02b24d7028be74ba7372c0eaa8847f24d1d939597a4d6db"
              }
            },
            {
              "note": "0.0.2: obfuscated loader that decrypts `data.bin` and runs it with Bun",
              "paths": [
                "index.js"
              ],
              "source": "PACKAGE_ARCHIVE",
              "digests": {
                "sha256": "63ffef158a79371383e9c8a67dfba6999c7601cd3555cc7b13c6d095b7871ee7"
              }
            },
            {
              "note": "0.0.2: AES-GCM-encrypted stealer payload",
              "paths": [
                "data.bin"
              ],
              "source": "PACKAGE_ARCHIVE",
              "digests": {
                "sha256": "066b6e27373fc5be3f0a5907ffbb945e3a502f8ee74edaf917ccdc011a9a7a0d"
              }
            },
            {
              "note": "0.0.2: decrypted 1.1 MB Bun payload, the same stealer with additional obfuscation",
              "source": "IN_MEMORY",
              "digests": {
                "sha256": "d5e5f243d464249d2d2607a2d01dbc7e7d6c897fa6b3c7d7c312d7caece9e1cf"
              }
            }
          ]
        },
        "malicious-packages-origins": [
          {
            "id": "IN-MAL-2026-021579",
            "sha256": "96016490b5f0c2f7a205f4108c012955c1bbaaff0d2ba1904d18747752a6c729",
            "source": "amazon-inspector",
            "versions": [
              "0.0.3"
            ],
            "import_time": "2026-10-22T06:30:25.017029844Z",
            "modified_time": "2026-10-22T06:11:58Z"
          },
          {
            "id": "IN-MAL-2026-021574",
            "sha256": "a5c16a91271c0413b0f19842d37f3d94fdd9bf7edf2e70f67da4ae8bdc52cf5b",
            "source": "amazon-inspector",
            "versions": [
              "0.0.1"
            ],
            "import_time": "2026-10-22T06:30:24.440343164Z",
            "modified_time": "2026-10-22T06:11:19Z"
          },
          {
            "id": "IN-MAL-2026-021581",
            "sha256": "65072803ff6a65eee326b518b2039415559b4f8582f44b2f2af2f871aea9f39e",
            "source": "amazon-inspector",
            "versions": [
              "0.0.2"
            ],
            "import_time": "2026-10-22T06:30:25.204140586Z",
            "modified_time": "2026-10-22T06:12:15Z"
          }
        ]
      }
    },
    "related_cves": [],
    "security_relevant": true,
    "severity_evidence": null
  },
  "source_id": "core-osv",
  "document_id": 404576,
  "published_at": "2026-10-21T18:00:00+00:00"
}