@azure-growth/signup-ux-components@2.9.9
Malicious code in @azure-growth/signup-ux-components (npm)
Analysis
The package is a hollow shell whose only executed code is its preinstall hook, which performs a DNS-based victim-identity callback at install time. package.json declares "preinstall": "node index.js"; index.js reads the local username (os.userInfo().username) and hostname (os.hostname()), strips non-alphanumeric characters, embeds both into the subdomain of a collaborator host — msrc-poc.<username>.<hostname>.dbg6vplohjpkmtolbi6g18ekofkxjzm4s[.]oast[.]fun — and resolves it with dns.lookup(), discarding the result. Because the host identity travels entirely in a DNS query, the install-time beacon uses no HTTP request at all. The tarball ships no real library code: besides index.js and a minimal package.json it only contains a third-party signup browser bundle under evidence/ and evidence/bundle-grep-output.txt naming @azure-growth/azure-growth-signup-sdk and @azure-growth/signup-ux-components, used to make the package look like part of an Azure signup SDK. The "msrc-poc" prefix labels the callback as a proof-of-concept while the actual behaviour is an attacker-controlled DNS callback that leaks the installer's username and hostname. IOC: DNS callback domain dbg6vplohjpkmtolbi6g18ekofkxjzm4s[.]oast[.]fun (subdomain labels oast[.]fun), invoked from index.js via the preinstall lifecycle hook.
- analyzed by
- Leitwacht
- first seen
- Oct 27, 2026, 11:22 AM
- analyzed
- Oct 27, 2026, 11:22 AM
Related advisories
- @azure-growth/signup-ux-components@1.2.3 same package
- @eforms/forms-api@1.99.0
- @capsense/core-ui@99.99.100
- @capsense/ccx-welcome-page@99.99.100
- regex-linter@12.0.0
- @galicia-toolkit/spa-build-config@999.0.6
- @galicia-toolkit/tag-manager@999.0.6
- @galicia-toolkit/spa-build-config@999.0.5
Independently detected by the Leitwacht supply-chain probe. IOCs are defanged. Published CC0. Think this is a mistake? See the dispute policy.