@galicia-toolkit/spa-build-confignpm
Advisory published Updated
@galicia-toolkit/spa-build-config is a confirmed malicious npm package (MAL-2026-17690) that steals credentials and exfiltrates sensitive data (malicious versions 999.0.3, 999.0.5, 999.0.6). Do not install it — remove it immediately and rotate any exposed credentials.
Malicious code in @galicia-toolkit/spa-build-config (npm)
What this malware does
@galicia-toolkit/[email protected] and @galicia-toolkit/[email protected] claim the @galicia-toolkit scope and describe themselves as dependency-confusion PoCs. Their postinstall hook runs on npm install with node postinstall.js || true. The script collects package and host environment data, sends it by HTTP to oob.s4yhii.com:9999, and sends DNS queries to subdomains of oob.s4yhii.com, making it a dependency-confusion probe; it also connects to 66.94.100.203:9999. The npm account s4yhii_ published version 999.0.5 on 2026-10-08; 999.0.6 runs the same command on install, sends the same DNS queries, and connects to the same address.
The package's postinstall script runs automatically on npm install and collects installer-side host and credential data: hostname, username, network interfaces, the full list of process.env keys, and the values of credential-grade environment variables including AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN, GITHUB_TOKEN, NPM_TOKEN, NODE_AUTH_TOKEN, ACTIONS_ID_TOKEN_REQUEST_TOKEN, ACTIONS_ID_TOKEN_REQUEST_URL, and ACTIONS_RUNTIME_TOKEN. The collected JSON blob is POSTed to oob.s4yhii.com on port 9999 at path /dep-confusion, and hostname/username are additionally beaconed via DNS subdomain lookups under *.dc.oob.s4yhii.com. The package name shape and version (999.0.6) are consistent with a dependency-confusion lure targeting an internal scope. A self-declared 'bug bounty PoC' framing in package metadata does not change the behavior: these credentials grant AWS account access, GitHub repository write, npm publish rights, and GitHub Actions OIDC token exchange on the installing CI system.
Any computer that has this package installed or running should be considered fully compromised. All secrets and keys stored on that computer should be rotated immediately from a different computer. The package should be removed, but as full control of the computer may have been given to an outside entity, there is no guarantee that removing the package will remove all malicious software resulting from installing it.
Malicious versions
Indicators of compromise (SHA-256)
Detection & response playbook
Credential / info stealerFind it
Search your lockfiles and build artifacts for @galicia-toolkit/spa-build-config (3 malicious versions).
If you installed it — respond
@galicia-toolkit/spa-build-config is built to steal secrets, so assume every credential the build or runtime could read is compromised. Remove it from your project and lockfile, then rotate ALL exposed secrets — npm/registry tokens, cloud keys, CI/CD secrets, SSH keys, and any .env values — from a known-clean machine. Audit logs for unauthorized use of those credentials.
Did it already run?
If @galicia-toolkit/spa-build-config was installed, its post-install payload may already have run. Removing the package does not undo that — check outbound connections and credential use from the install window onward.
Frequently asked questions
Campaign
References
Credits
- Amazon Inspector · finder
- InvisiRisk, Inc. · finder
Detect & block this
O3 blocks @galicia-toolkit/spa-build-config-class packages before install and in CI — and if it already ran, its runtime egress monitoring catches the credential exfiltration and severs the channel.