Skip to content
Heist/ feed
Back to feed
Unrated

Malicious code in event-emitter-testmetest (npm)

Type: advisorySources: OSV

event-emitter-testmetest was published by npm account `testnewtestme2` on 2026-10-21, first to test the delivery chain of data-pipeline-testmetest 2.0.1 and then to ship it. 1.0.6 and 1.0.7 ship an obfuscated `index.js` loader that decrypts a filler stage and pipes it into Bun with the full environment: 1.0.6 runs it on load, 1.0.7 on `npm install` via a `binding.gyp` source `/dev/null 2>&1; echo stub.c)`. 4.1.0 and 5.0.0 ship rebuilds of the full stealer behind the same `binding.gyp` hook: inline in `index.js` in 4.1.0, and in an encrypted `data.bin` that `index.js` decrypts in 5.0.0. Other versions carry no executable payload. --- _-= Per source details. Do not edit below this line.=-_ ## Source: amazon-inspector (8d4e6bad5d24d9c63960e77cc82c054c3b14704bea931cd48c86025fa4dc45c9) The package's `main` (index.js) is a multi-layer obfuscated loader: a String.fromCharCode-reconstructed string is Caesar-shifted (k=19) and eval'd, which then AES-128-GCM-decrypts a hardcoded hex ciphertext using embedded key/iv/authTag and executes the plaintext via a dynamic `Function(module, require, process, Buffer, __filename, __dirname, )` call, giving the decrypted bytes full Node module, require, and process access. The payload is opaque to any installer. `binding.gyp` declares a target with no native source files and uses GYP command-expansion (`<!(env node index.js...)`) in `sources`, which runs the loader during `node-gyp rebuild` — npm invokes node-gyp automatically whenever `binding.gyp

Products
event-emitter-testmetest
Affected versions
1.0.6, 1.0.7, 4.1.0, 5.0.0
Fixed versions
Not specified
CVEs
Not specified
Confirmed fixed CVEs
Not specified
Updated in this feed
1 Nov 2026, 16:32 UTC · Revision 1

Source evidence

Malicious code in event-emitter-testmetest (npm)

core-osv · Original source

Published 21 Oct 2026, 16:00 UTC

event-emitter-testmetest was published by npm account `testnewtestme2` on 2026-10-21, first to test the delivery chain of data-pipeline-testmetest 2.0.1 and then to ship it. 1.0.6 and 1.0.7 ship an obfuscated `index.js` loader that decrypts a filler stage and pipes it into Bun with the full environment: 1.0.6 runs it on load, 1.0.7 on `npm install` via a `binding.gyp` source `/dev/null 2>&1; echo stub.c)`. 4.1.0 and 5.0.0 ship rebuilds of the full stealer behind the same `binding.gyp` hook: inline in `index.js` in 4.1.0, and in an encrypted `data.bin` that `index.js` decrypts in 5.0.0. Other versions carry no executable payload. --- _-= Per source details. Do not edit below this line.=-_ ## Source: amazon-inspector (8d4e6bad5d24d9c63960e77cc82c054c3b14704bea931cd48c86025fa4dc45c9) The package's `main` (index.js) is a multi-layer obfuscated loader: a String.fromCharCode-reconstructed string is Caesar-shifted (k=19) and eval'd, which then AES-128-GCM-decrypts a hardcoded hex ciphertext using embedded key/iv/authTag and executes the plaintext via a dynamic `Function(module, require, process, Buffer, __filename, __dirname, )` call, giving the decrypted bytes full Node module, require, and process access. The payload is opaque to any installer. `binding.gyp` declares a target with no native source files and uses GYP command-expansion (`<!(env node index.js...)`) in `sources`, which runs the loader during `node-gyp rebuild` — npm invokes node-gyp automatically whenever `binding.gyp

osv:MAL-2026-18178

event-emitter-testmetest

Fixed versions: Not specified

Complete source record
{
  "id": "428d579b77143e321baaf37f42d612664b8297185b0658c71ae40bd2c4724ca7",
  "url": "https://osv.dev/vulnerability/MAL-2026-18178",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Malicious code in event-emitter-testmetest (npm)",
    "summary": "event-emitter-testmetest was published by npm account `testnewtestme2` on 2026-10-21, first to test the delivery chain of data-pipeline-testmetest 2.0.1 and then to ship it. 1.0.6 and 1.0.7 ship an obfuscated `index.js` loader that decrypts a filler stage and pipes it into Bun with the full environment: 1.0.6 runs it on load, 1.0.7 on `npm install` via a `binding.gyp` source `/dev/null 2>&1; echo stub.c)`. 4.1.0 and 5.0.0 ship rebuilds of the full stealer behind the same `binding.gyp` hook: inline in `index.js` in 4.1.0, and in an encrypted `data.bin` that `index.js` decrypts in 5.0.0. Other versions carry no executable payload. --- _-= Per source details. Do not edit below this line.=-_ ## Source: amazon-inspector (8d4e6bad5d24d9c63960e77cc82c054c3b14704bea931cd48c86025fa4dc45c9) The package's `main` (index.js) is a multi-layer obfuscated loader: a String.fromCharCode-reconstructed string is Caesar-shifted (k=19) and eval'd, which then AES-128-GCM-decrypts a hardcoded hex ciphertext using embedded key/iv/authTag and executes the plaintext via a dynamic `Function(module, require, process, Buffer, __filename, __dirname, )` call, giving the decrypted bytes full Node module, require, and process access. The payload is opaque to any installer. `binding.gyp` declares a target with no native source files and uses GYP command-expansion (`<!(env node index.js...)`) in `sources`, which runs the loader during `node-gyp rebuild` — npm invokes node-gyp automatically whenever `binding.gyp",
    "evidence": "osv:MAL-2026-18178",
    "products": [
      {
        "name": {
          "value": "event-emitter-testmetest",
          "evidence": "/affected/0/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [],
        "affected_versions": [
          {
            "value": "1.0.6",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.0.7",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "4.1.0",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "5.0.0",
            "evidence": "/affected/0/versions"
          }
        ]
      }
    ],
    "severity": "unknown",
    "structured": {
      "id": "MAL-2026-18178",
      "aliases": [
        "MAL-2026-18178"
      ],
      "affected": [
        {
          "package": {
            "name": "event-emitter-testmetest",
            "purl": "pkg:npm/event-emitter-testmetest",
            "ecosystem": "npm"
          },
          "versions": [
            "1.0.6",
            "1.0.7",
            "4.1.0",
            "5.0.0"
          ],
          "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."
              },
              {
                "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/event-emitter-testmetest/MAL-2026-18178.json",
            "indicators": {
              "evidence_files": [
                {
                  "path": "binding.gyp",
                  "tlsh": "5db09b5d75185e995cd448e0e1d4d94594e61577445a0540c5d6581166643045848b55",
                  "sha256": "98caee01817cc52eb5a2ca2307ec039a47ed771d2c34cd7a4b0d174f3423a6fa"
                },
                {
                  "path": "index.js",
                  "tlsh": "e45251536b891be49d74cce6b348b697b0f1c97f394231b8a5924b77fc1de129920a30",
                  "sha256": "4de3a8983136dd984ddb7356617902cc28a288f7c8a263ce54bdd925446045f4"
                }
              ],
              "package_integrity": [
                {
                  "hashes": {
                    "sha1": "3d23a5d5f0b6c3c2eb21a30957efd622bd6acc4d",
                    "sha512_sri": "sha512-zDpX7h8EPnU2NwhVIePKnpjFKoS+Nfr26afk3t//MXrmcTq9XG7aDTT3AyM9W9ddDhq+fHrcwbfGAF8JlCiGdA=="
                  },
                  "filename": "event-emitter-testmetest-5.0.0.tgz"
                }
              ]
            }
          }
        }
      ],
      "modified": "2026-10-26T19:00:41.769478008Z",
      "provider": "osv",
      "references": [
        "https://www.npmjs.com/package/event-emitter-testmetest",
        "https://www.npmjs.com/package/event-emitter-testmetest/v/5.0.0",
        "https://www.npmjs.com/package/event-emitter-testmetest/v/4.1.0",
        "https://www.npmjs.com/package/event-emitter-testmetest/v/1.0.7",
        "https://www.npmjs.com/package/event-emitter-testmetest/v/1.0.6"
      ],
      "provider_metadata": {
        "iocs": {
          "files": [
            {
              "note": "1.0.7, 4.1.0 and 5.0.0: hidden install hook, node-gyp runs `env node index.js`",
              "paths": [
                "binding.gyp"
              ],
              "source": "PACKAGE_ARCHIVE",
              "digests": {
                "sha256": "98caee01817cc52eb5a2ca2307ec039a47ed771d2c34cd7a4b0d174f3423a6fa"
              }
            },
            {
              "note": "1.0.6 and 1.0.7: obfuscated loader that pipes a decrypted stage into `bun run -`",
              "paths": [
                "index.js"
              ],
              "source": "PACKAGE_ARCHIVE",
              "digests": {
                "sha256": "46763d5e3db0c9743a1d140372fd84bfdf870996558d0dd87138a5ec62c8aed3"
              }
            },
            {
              "note": "5.0.0: obfuscated loader that decrypts `data.bin` and pipes it into `bun run -`",
              "paths": [
                "index.js"
              ],
              "source": "PACKAGE_ARCHIVE",
              "digests": {
                "sha256": "4de3a8983136dd984ddb7356617902cc28a288f7c8a263ce54bdd925446045f4"
              }
            },
            {
              "note": "5.0.0: AES-GCM-encrypted, gzipped stealer payload",
              "paths": [
                "data.bin"
              ],
              "source": "PACKAGE_ARCHIVE",
              "digests": {
                "sha256": "e90337816d729e7ef99b1a265add0a1d7bc79c465a98dafd1317fafcec498239"
              }
            },
            {
              "note": "5.0.0: decrypted 948 KB Bun payload, a rebuild of the data-pipeline-testmetest 2.0.1 stealer",
              "source": "IN_MEMORY",
              "digests": {
                "sha256": "ca312e76344ef3fd61f6b2c70004f18b2550e8685032a202d895760c87ccbb72"
              }
            },
            {
              "note": "4.1.0: obfuscated loader with the encrypted stealer inline, piped into `bun run -`",
              "paths": [
                "index.js"
              ],
              "source": "PACKAGE_ARCHIVE",
              "digests": {
                "sha256": "36b2d7337ed694601f9aec854351aaa57da44084a7eac55f7bdbe45e3a07d1ef"
              }
            },
            {
              "note": "4.1.0: decrypted 941 KB Bun payload, a rebuild of the data-pipeline-testmetest 2.0.1 stealer",
              "source": "IN_MEMORY",
              "digests": {
                "sha256": "1fc5f1ba027654aae3d5a86e1704a7ae793e4b27da989c4d3e4380e29cb9c15b"
              }
            }
          ]
        },
        "malicious-packages-origins": [
          {
            "id": "IN-MAL-2026-021569",
            "sha256": "9b30c3392dbf88773f8915f1ce7c184fbab6cea4404fdcb90b7ee99282c75875",
            "source": "amazon-inspector",
            "versions": [
              "5.0.0"
            ],
            "import_time": "2026-10-22T06:30:23.935568739Z",
            "modified_time": "2026-10-22T06:10:40Z"
          },
          {
            "id": "IN-MAL-2026-021567",
            "sha256": "6e34a6ed35dcc77f426c23b9fe66a0ffef71d25de9be144510bc40a9a2f18730",
            "source": "amazon-inspector",
            "versions": [
              "4.1.0"
            ],
            "import_time": "2026-10-22T06:30:23.673885142Z",
            "modified_time": "2026-10-22T06:10:26Z"
          },
          {
            "id": "IN-MAL-2026-021568",
            "sha256": "8d4e6bad5d24d9c63960e77cc82c054c3b14704bea931cd48c86025fa4dc45c9",
            "source": "amazon-inspector",
            "versions": [
              "1.0.7"
            ],
            "import_time": "2026-10-22T06:30:23.763084189Z",
            "modified_time": "2026-10-22T06:10:32Z"
          },
          {
            "id": "IN-MAL-2026-021816",
            "sha256": "061ff2842cee28231d21a2c401f06152fa9030b27d20936a4517b167ab521064",
            "source": "amazon-inspector",
            "versions": [
              "1.0.6"
            ],
            "import_time": "2026-10-26T18:56:20.578800765Z",
            "modified_time": "2026-10-26T18:37:03Z"
          }
        ]
      }
    },
    "related_cves": [],
    "security_relevant": true,
    "severity_evidence": null
  },
  "source_id": "core-osv",
  "document_id": 458000,
  "published_at": "2026-10-21T16:00:00+00:00"
}