Skip to content
Heist/ feed
Back to feed
Unrated

Malicious code in personio-pipeline-projen (npm)

Type: advisorySources: OSV

personio-pipeline-projen presents itself as an authorized dependency-confusion proof-of-concept; the evidence does not identify a copied public package. Its preinstall hook runs on install with `node canary.js`. The dependency-confusion probe encodes the installing machine's hostname and username, present CI-variable names, and root project and lifecycle identifiers in a DNS label under `db2su65ptuma8gfn6ing8e7dx7wp55zit.oast.fun`, and sends an HTTPS GET to `hrcv3zo9m3z70yr91ssdz669c0ir6ju8.oastify.com`. The npm account `reaperhackbot256f` published it on 2026-10-07 (UTC). --- _-= Per source details. Do not edit below this line.=-_ ## Source: amazon-inspector (9edcf2a339a16ea7096c68d06ec14250f3735eb3eb608f07bb2fe0004f8b9423) personio-pipeline-projen is an unscoped package on the public npm registry whose name mirrors an internal 'personio-*' dependency, positioning it to be resolved into Personio builds via dependency confusion. The package.json declares a preinstall hook `node canary.js`. On install, canary.js collects the machine hostname, OS username, the names of CI-related environment variables present on the host, and the installing project's name, and transmits them out-of-band via a DNS lookup to a subdomain of oast.fun (Interactsh collector) and an HTTPS GET to a subdomain of oastify.com (Burp Collaborator). The beacon fires unconditionally and before any installer consent. The README frames the package as authorized research, but the on-install behavior and name-col

Products
personio-pipeline-projen
Affected versions
1.171.31
Fixed versions
Not specified
CVEs
Not specified
Confirmed fixed CVEs
Not specified
Updated in this feed
28 Oct 2026, 08:58 UTC · Revision 1

Source evidence

Malicious code in personio-pipeline-projen (npm)

core-osv · Original source

Published 7 Oct 2026, 04:52 UTC

personio-pipeline-projen presents itself as an authorized dependency-confusion proof-of-concept; the evidence does not identify a copied public package. Its preinstall hook runs on install with `node canary.js`. The dependency-confusion probe encodes the installing machine's hostname and username, present CI-variable names, and root project and lifecycle identifiers in a DNS label under `db2su65ptuma8gfn6ing8e7dx7wp55zit.oast.fun`, and sends an HTTPS GET to `hrcv3zo9m3z70yr91ssdz669c0ir6ju8.oastify.com`. The npm account `reaperhackbot256f` published it on 2026-10-07 (UTC). --- _-= Per source details. Do not edit below this line.=-_ ## Source: amazon-inspector (9edcf2a339a16ea7096c68d06ec14250f3735eb3eb608f07bb2fe0004f8b9423) personio-pipeline-projen is an unscoped package on the public npm registry whose name mirrors an internal 'personio-*' dependency, positioning it to be resolved into Personio builds via dependency confusion. The package.json declares a preinstall hook `node canary.js`. On install, canary.js collects the machine hostname, OS username, the names of CI-related environment variables present on the host, and the installing project's name, and transmits them out-of-band via a DNS lookup to a subdomain of oast.fun (Interactsh collector) and an HTTPS GET to a subdomain of oastify.com (Burp Collaborator). The beacon fires unconditionally and before any installer consent. The README frames the package as authorized research, but the on-install behavior and name-col

osv:MAL-2026-17642

personio-pipeline-projen

Fixed versions: Not specified

Complete source record
{
  "id": "66d6839534a252340ee20c313c72d6b4799d07af6682c1e5037c85e36fca069e",
  "url": "https://osv.dev/vulnerability/MAL-2026-17642",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Malicious code in personio-pipeline-projen (npm)",
    "summary": "personio-pipeline-projen presents itself as an authorized dependency-confusion proof-of-concept; the evidence does not identify a copied public package. Its preinstall hook runs on install with `node canary.js`. The dependency-confusion probe encodes the installing machine's hostname and username, present CI-variable names, and root project and lifecycle identifiers in a DNS label under `db2su65ptuma8gfn6ing8e7dx7wp55zit.oast.fun`, and sends an HTTPS GET to `hrcv3zo9m3z70yr91ssdz669c0ir6ju8.oastify.com`. The npm account `reaperhackbot256f` published it on 2026-10-07 (UTC). --- _-= Per source details. Do not edit below this line.=-_ ## Source: amazon-inspector (9edcf2a339a16ea7096c68d06ec14250f3735eb3eb608f07bb2fe0004f8b9423) personio-pipeline-projen is an unscoped package on the public npm registry whose name mirrors an internal 'personio-*' dependency, positioning it to be resolved into Personio builds via dependency confusion. The package.json declares a preinstall hook `node canary.js`. On install, canary.js collects the machine hostname, OS username, the names of CI-related environment variables present on the host, and the installing project's name, and transmits them out-of-band via a DNS lookup to a subdomain of oast.fun (Interactsh collector) and an HTTPS GET to a subdomain of oastify.com (Burp Collaborator). The beacon fires unconditionally and before any installer consent. The README frames the package as authorized research, but the on-install behavior and name-col",
    "evidence": "osv:MAL-2026-17642",
    "products": [
      {
        "name": {
          "value": "personio-pipeline-projen",
          "evidence": "/affected/0/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [],
        "affected_versions": [
          {
            "value": "1.171.31",
            "evidence": "/affected/0/versions"
          }
        ]
      }
    ],
    "severity": "unknown",
    "structured": {
      "id": "MAL-2026-17642",
      "aliases": [
        "MAL-2026-17642"
      ],
      "affected": [
        {
          "package": {
            "name": "personio-pipeline-projen",
            "purl": "pkg:npm/personio-pipeline-projen",
            "ecosystem": "npm"
          },
          "versions": [
            "1.171.31"
          ],
          "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."
              }
            ],
            "source": "https://github.com/ossf/malicious-packages/blob/main/osv/malicious/npm/personio-pipeline-projen/MAL-2026-17642.json",
            "indicators": {
              "evidence_files": [
                {
                  "path": "canary.js",
                  "tlsh": "242179bf8368565025e0b6f0118f1025e6abf41767c67ad1789dc3655e517380353cfd",
                  "sha256": "88fdfbfbc5982045f7fdc7a4f6097031b64689d1003c1a592156f37921db63f6"
                },
                {
                  "path": "package.json",
                  "tlsh": "53e0ca148f0055231ce455b508f5764210304c475f1d6e39f25b8048470db9317fb357",
                  "sha256": "9047c11dc81dda0e8120f6777cb88678eaa0d7c995adb8d069731ab6b85f9a1e"
                }
              ],
              "package_integrity": [
                {
                  "hashes": {
                    "sha1": "77e63fe2acaf37ccfc33160bcee2801aac68012b",
                    "sha512_sri": "sha512-GBQhBYyBDlBPTFr73hw4pN+iMRIy8KCROB5KTM0ZZEMPyNFvSQeug05zrAmYnLRdrSI4aexcnDJtCnna/bq5YA=="
                  },
                  "filename": "personio-pipeline-projen-1.171.31.tgz"
                }
              ]
            }
          }
        }
      ],
      "modified": "2026-10-08T04:00:04.249068782Z",
      "provider": "osv",
      "references": [
        "https://www.npmjs.com/package/personio-pipeline-projen",
        "https://www.npmjs.com/package/personio-pipeline-projen/v/1.171.31"
      ],
      "provider_metadata": {
        "iocs": {
          "urls": [
            "https://hrcv3zo9m3z70yr91ssdz669c0ir6ju8.oastify.com/h"
          ],
          "files": [
            {
              "note": "preinstall script: node canary.js",
              "paths": [
                "package.json"
              ],
              "source": "PACKAGE_ARCHIVE",
              "digests": {
                "sha256": "9047c11dc81dda0e8120f6777cb88678eaa0d7c995adb8d069731ab6b85f9a1e"
              }
            },
            {
              "note": "Executed by the preinstall script of personio-pipeline-projen@1.171.31.",
              "paths": [
                "canary.js"
              ],
              "source": "PACKAGE_ARCHIVE",
              "digests": {
                "sha256": "88fdfbfbc5982045f7fdc7a4f6097031b64689d1003c1a592156f37921db63f6"
              }
            }
          ],
          "domains": [
            "db2su65ptuma8gfn6ing8e7dx7wp55zit.oast.fun",
            "hrcv3zo9m3z70yr91ssdz669c0ir6ju8.oastify.com"
          ]
        },
        "malicious-packages-origins": [
          {
            "id": "IN-MAL-2026-021124",
            "sha256": "9edcf2a339a16ea7096c68d06ec14250f3735eb3eb608f07bb2fe0004f8b9423",
            "source": "amazon-inspector",
            "versions": [
              "1.171.31"
            ],
            "import_time": "2026-10-08T03:50:29.463804527Z",
            "modified_time": "2026-10-08T03:39:34Z"
          }
        ]
      }
    },
    "related_cves": [],
    "security_relevant": true,
    "severity_evidence": null
  },
  "source_id": "core-osv",
  "document_id": 98430,
  "published_at": "2026-10-07T04:52:26+00:00"
}