Malicious code in homekit-mcp (npm)
The npm package homekit-mcp contained malicious code that collected and exfiltrated developer identity information (email, username, hostname) to an attacker-controlled Zapier webhook via a postinstall hook, gated behind an interactive consent prompt. The package was falsely described as harmless security research by 'Capsule Security' and contained no actual HomeKit or MCP functionality.
- Disclosed
- Last updated
- Blast radius
- Developers who installed homekit-mcp and consented to the interactive prompt; developer identity data (email, username, hostname) exfiltrated to attacker-controlled Zapier webhook.
- Ecosystems
- Attack vectors
- Affected entities
- homekit-mcpnpm package published under a misleading HomeKit/MCP-suggestive name
The npm package homekit-mcp was published with a deceptive name suggesting HomeKit or MCP functionality, but contained no such code. Instead, it included a malicious postinstall hook that collected developer identity information.
The malicious code in lib/report.js resolved the installer's email through multiple sources: GitHub API (gh api user/emails), git configuration files (~/.gitconfig, ~/.config/git/config), npm configuration (npm config get email), and environment variables (GIT_*/EMAIL). It also collected the system hostname and username via os.hostname() and os.userInfo().username.
The collected data (email, username, hostname, run_count, package_name) was POSTed to a hardcoded Zapier webhook at https://hooks.zapier.com/hooks/catch/28124699/42vdpup/. Transmission was gated behind a one-time interactive y/N consent prompt presented during npx installation, stored in ~/.install-email-research.json. Users who answered yes had their developer identity uploaded to the attacker-controlled webhook.
The package.json falsely self-described the code as a 'harmless security research payload' by 'Capsule Security', masking the true malicious intent. The incident was identified and credited to the OpenSSF malicious-packages repository.
Indicators of compromise
- Packages
- homekit-mcp
- Domains
- hooks.zapier.com
Remediation
- Immediately uninstall homekit-mcp from all systems where it was installed
- Audit npm install logs and git configuration to identify if the package was installed
- Check ~/.install-email-research.json for evidence of consent being granted
- Assume developer identity (email, username, hostname) may have been exfiltrated if the package was installed and the consent prompt was accepted
- Review Zapier webhook logs if accessible to determine scope of data exfiltration
- Rotate credentials and review account activity for any unauthorized access
- Use npm audit to scan for other malicious packages and maintain strict package vetting practices
Sources
- GitHub Advisory GHSA-5pqv-wjpw-j4jr · GitHub Advisory Database
Cite this entry
"Malicious code in homekit-mcp (npm)." supplychainattack.org, Supply Chain Attack Incident Catalog. Disclosed August 19, 2026; last updated August 19, 2026. https://supplychainattack.org/incident/malicious-code-in-homekit-mcp-npm-15ba2n
Suggest a correction
Found an error or have a newer source? Corrections to factual errors take priority over new entries.
Related incidents
- containedcritical
Malicious code in 3-buildsight-web (npm)
The npm package 3-buildsight-web contains malicious code that fetches and executes arbitrary JavaScript from a remote Bitbucket URL on module load, granting full page privileges to an unverified third party.
npmCompromised package - resolvedcritical
Malicious code in @usaa-grp-personal-profile/personal-profile-common (npm)
Malicious package @usaa-grp-personal-profile/personal-profile-common version 999.0.0 published to public npm as a dependency-confusion attack targeting an organization's internal registry. The package contains preinstall and postinstall hooks that exfiltrate hostname, username, and working directory to an attacker-controlled OAST endpoint on every install.
npmDependency confusionCompromised package - resolvedcritical
Malicious code in create-coin (npm)
create-coin@20.1.1 on npm contained malicious postinstall code that collected sensitive environment variables, credentials, and host reconnaissance data. The package impersonated an esbuild platform build and exfiltrated data to a hardcoded endpoint.
npmCompromised packageTyposquatting - resolvedcritical
Malicious code in @syncraft-labs/vue (npm)
The npm package @syncraft-labs/vue version 0.4.1 contained malicious obfuscated code in its ESM build that implements a blockchain-hosted C2 dropper (EtherHiding pattern), enabling remote code execution on any consumer importing the package.
npmCompromised package