What Happened
In November 2025, researchers detected a surge in NPM package publications. Thousands of packages appeared within a 48-hour period, all following similar naming patterns and structural templates. These packages averaged only 18 monthly downloads and contained scripts referencing tea.xyz, an outdated cryptocurrency reward scheme that had already shut down.
Initial analysis raised concerns about a potential supply-chain worm. However, the reality was different: someone had automated package publication at scale, flooding the registry with benign but pointless code. No confirmed downstream dependency compromise has been reported, but the incident exposed critical gaps in how you monitor and respond to registry anomalies.
Timeline
November 2025: Researchers identify the publication surge. The packages share structural similarities—standardized metadata, minimal functionality, and references to the defunct tea.xyz reward program.
Investigation Phase: Security teams analyze the packages. The code itself performs no malicious actions. The packages don't exploit vulnerabilities or exfiltrate data. They're simply present.
Current Status: The packages remain published and continue to accumulate minimal downloads. Registry operators have not removed them en masse because they don't violate technical policies.
Which Controls Failed or Were Missing
Rate-Limiting on Package Publication: NPM's registry allowed one actor to publish thousands of packages quickly without triggering automated throttling or review. Your dependency management system should flag bulk publication events, especially when packages share structural patterns.
Behavioral Analysis: Traditional security tools focus on malicious code detection. This incident required pattern recognition—identifying anomalous publication behavior rather than analyzing code for exploits. If your monitoring relies solely on static analysis of package contents, you'll miss coordinated publication campaigns.
Metadata Validation: The packages referenced a defunct reward scheme. Registry operators could have flagged packages linking to known-dead domains or deprecated services. Your intake process should validate external references, not just scan for malware.
Download-Based Risk Scoring: The 18-download average meant these packages flew under the radar of tools that prioritize high-download packages. A package with zero downloads today could become a dependency tomorrow. Your risk model needs to account for publication patterns, not just current usage.
What the Relevant Standard Requires
ISO/IEC 27001:2022 Control 8.31 (Security of information in development and support processes) requires you to establish security requirements for software acquired from external sources. This includes monitoring the integrity of your dependency sources. You can't verify integrity if you don't have visibility into publication anomalies.
NIST Cybersecurity Framework v2.0 under the Identify function (ID.AM-02) requires you to maintain an inventory of software platforms and applications. That inventory isn't static—it needs continuous validation. When 18,000 new packages appear in your ecosystem's registry, your inventory process should detect the shift.
PCI DSS v4.0.1 Requirement 6.3.2 mandates that custom software be developed based on industry standards and incorporate information security throughout the software development lifecycle. If you're pulling dependencies from public registries, you need controls that prevent untrusted or anomalous packages from entering your build pipeline.
SOC 2 Type II under the Common Criteria CC6.6 requires logical and physical access restrictions. In a supply-chain context, that extends to your dependency sources. You should restrict which packages can enter your environment based on publication patterns, maintainer reputation, and behavioral signals.
Lessons and Action Items for Your Team
Implement Publication-Pattern Monitoring: Deploy tools that track publication velocity in your dependency ecosystem. Set alerts for coordinated uploads, especially when packages share naming conventions or structural templates. Platforms like Snyk offer registry monitoring features—configure them to flag bulk publication events, not just known vulnerabilities.
Adopt Automated Dependency Pinning: Lock your dependencies to specific versions and hashes. When you update, your CI/CD pipeline should validate that the new version matches expected publication patterns. If a package suddenly has 50 new versions published in an hour, your automation should block the update and flag it for manual review.
Build a Package Allowlist, Not Just a Blocklist: Maintain an approved dependency list. New packages require explicit approval before they enter your build environment. This creates friction, but it prevents supply-chain drift.
Monitor for Dead-Domain References: Scan your dependencies for links to defunct services, expired domains, or deprecated schemes. A package that references a dead cryptocurrency reward program today might reference a hijacked domain tomorrow. Your static analysis should flag external references and validate their current status.
Separate Publication Recency from Risk: Configure your dependency management to flag packages published within narrow time windows, especially when they share maintainers or structural patterns. Treat publication velocity as a risk indicator.
Establish Registry-Level Monitoring: If you operate an internal package registry, implement rate limits on publication. One maintainer should not be able to publish thousands of packages without triggering review. If you rely on public registries, deploy monitoring that tracks ecosystem-wide publication patterns and alerts your team to anomalies.
Document Your Dependency Intake Process: ISO/IEC 27001:2022 requires documented procedures for software acquisition. Write down how you evaluate new dependencies, what signals trigger rejection, and who approves exceptions. When the next publication surge happens—and it will—your team needs a playbook, not an ad-hoc response.
The IndonesianFoods campaign was benign. The next one might not be. The gap between "harmless spam" and "supply-chain compromise" is smaller than you think, and it closes the moment someone automates malicious code into the same publication pattern.



