Incident Overview
Attackers compromised the node-ipc npm package by exploiting an expired domain linked to a maintainer's account. They published malicious versions (11.0.0, 11.1.0, and 12.0.0) containing credential-stealing malware. The package, with nearly 700K weekly downloads, is a dependency for 424 other projects. The malware exfiltrated data via DNS TXT queries to a domain mimicking Microsoft's Azure Static Web Apps infrastructure.
Researchers at Socket.dev discovered the attack, pinpointing the vulnerability: the maintainer's npm account used an email on an expired domain. Once attackers registered the domain, they reset the account password and gained publishing rights.
Attack Timeline
The timeline of the attack includes:
- Maintainer's email domain expired (date unknown)
- Attackers registered the expired domain
- Attackers reset the npm account password
- Attackers published three malicious versions
- Socket.dev detected the compromise and alerted npm
- npm removed the malicious versions from the registry
The period between domain expiration and detection is critical for your dependency scanning to catch such compromises.
Failed or Missing Controls
Domain Monitoring: No system flagged the expired domain. Your team should implement automated alerts for domain expirations related to maintainer accounts.
Account Activity Monitoring: The npm account lacked monitoring to flag unusual behavior, such as a password reset followed by package publishing. Implement automated holds or multi-factor verification for such patterns.
Dependency Management: Projects using node-ipc lacked controls to prevent automatic updates to compromised versions. Use hash verification or version pinning to avoid immediate propagation of malicious code.
DNS Exfiltration Detection: The attack used DNS TXT queries for data exfiltration. Network monitoring should inspect DNS traffic for unusual patterns to detect such attacks.
Package Signing: npm does not require mandatory package signing. If maintainers used cryptographic signing with separate keys, attackers couldn't publish valid packages even with account access.
Compliance Standards
PCI DSS v4.0.1 Requirement 6.3.2 mandates maintaining an inventory of software and third-party components, including:
- Component names and versions
- Source repositories and maintainer contact information
- Domain registrations associated with maintainer accounts
- Update frequency and last verified publication date
NIST 800-53 Rev 5 Control SA-12 requires integrity verification mechanisms for software components, including:
- Cryptographic hash verification before integrating dependencies
- Monitoring for unauthorized changes to packages
- Establishing trust relationships with suppliers
ISO/IEC 27001:2022 Annex A.5.19 requires defining security requirements with suppliers, translating to:
- Documented criteria for dependency selection
- Regular security assessments of critical dependencies
- Contingency plans for compromised packages
SOC 2 Type II CC6.1 applies to npm maintainer accounts as access points to your supply chain, requiring:
- Multi-factor authentication
- Periodic access reviews
- Deprovisioning procedures for inactive accounts
Action Items for Your Team
Implement Dependency Pinning: Lock your package.json to specific versions with verified hashes. Use npm ci instead of npm install in production builds to prevent automatic ingestion of compromised updates.
Build a Domain Monitoring System: Track all domains associated with critical dependencies' maintainers. Use a monitoring service or script to alert you 90 days before expiration. Set reminders for your projects at 180, 90, and 30 days before renewals.
Establish Dependency Update Procedures: Treat updates like code changes. Include:
- Reviewing changelogs and commit history
- Checking for unusual maintainer activity
- Running updates in isolated test environments
- Monitoring for unexpected network traffic
- Waiting 72 hours after a release before updating production systems
Deploy DNS Query Monitoring: Configure network monitoring to flag unusual DNS TXT query patterns. Set alerts for:
- High-volume TXT queries to unknown domains
- TXT queries with long response payloads
- TXT queries to domains with Base64-like patterns
Require MFA for Publishing Accounts: Enable multi-factor authentication on npm or other registries. Use hardware security keys and document recovery codes in your team's password manager.
Audit Critical Dependencies: Identify packages with over 100K weekly downloads or dependencies for more than 50 projects. Verify maintainer contact information, check last commit dates, review security policies, and identify alternatives.
Create an Incident Response Playbook: Document steps for responding to compromised dependencies, including:
- Identifying affected applications
- Rollback procedures
- Communication templates for stakeholders
- Criteria for patching forward or rolling back
The node-ipc attack highlights the need for robust domain management and account monitoring in open-source projects to prevent supply chain attacks. Your domain renewals, account security, and dependency monitoring are essential controls that standards require and attackers exploit.



