Affected Systems

npm registry and public mirrors (UNPKG, npmmirror). Organizations using these mirrors to serve package content. At least 24 malicious packages identified hosting fake Cloudflare CAPTCHA pages. No direct infection of developer systems; packages used solely for hosting malicious HTML redirectors.

Exploitation Status

Active campaign confirmed. Malicious packages observed in July and August 2026, with some redirect URLs still functional. Attackers using dynamic redirect infrastructure (api.keyval.org) to change destination URLs without republishing packages. Earlier redirects targeted Microsoft Outlook login; current redirects point to inactive domains or legitimate sites (ChatGPT) as placeholders.

Business Impact

Phishing infrastructure hosted on trusted npm mirror domains (unpkg.com, npmmirror.com) may bypass URL filtering and security tools that whitelist these developer resources. Employees clicking links to these mirrors could be redirected to credential harvesting pages impersonating Microsoft, Cloudflare, or other services. Packages may persist on mirrors even after npm registry removal, extending campaign lifespan. No direct supply chain risk to developers installing packages, but organizational web filters and email gateways may not flag npm mirror URLs as suspicious.

Urgency

🟡 Within a week

Recommended Actions

  • Review web proxy and email gateway policies to flag or inspect direct HTML file requests to npm mirror domains (unpkg.com, npmmirror.com, jsdelivr.net) especially URLs ending in .html
  • Monitor for user access to npm mirror URLs outside normal development workflows; alert on HTML file requests from non-developer endpoints
  • Block or alert on the specific malicious domains identified: microcloud[.]homes, login[.]microsofte[.]live, and monitor for similar typosquatting domains
  • Educate developers and end users that legitimate Cloudflare CAPTCHA pages do not appear on npm mirror domains; report suspicious verification pages
  • If using npm mirrors internally, consider implementing allow-lists for known-good packages rather than open access to all mirror content