<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/chaindrop-worm-hits-444-npm-packages-css-gets-a-class-prefix-selector-6nviewibr" -->

---
title: ChainDrop worm hits 444 npm packages, CSS gets a class...
description: A supply-chain worm called ChainDrop has compromised 444 npm packages — including keyv, flat-cache, and cache-manager — covering roughly 2 billion downloads a...
canonical: https://daily.dev/posts/chaindrop-worm-hits-444-npm-packages-css-gets-a-class-prefix-selector-6nviewibr
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: ChainDrop worm hits 444 npm packages, CSS gets a class prefix selector | daily.dev
og:description: A supply-chain worm called ChainDrop has compromised 444 npm packages — including keyv, flat-cache, and cache-manager — covering roughly 2 billion downloads a...
og:url: https://daily.dev/posts/chaindrop-worm-hits-444-npm-packages-css-gets-a-class-prefix-selector-6nviewibr
og:image: https://api.daily.dev/og/posts/6NViEwiBr.png
og:image:alt: ChainDrop worm hits 444 npm packages, CSS gets a class prefix selector
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# ChainDrop worm hits 444 npm packages, CSS gets a class prefix selector

**[Web Digest](https://daily.dev/sources/webdev_digest)** · 4 min read · 0 upvotes · 0 comments

## Summary

A supply-chain worm called ChainDrop has compromised 444 npm packages — including keyv, flat-cache, and cache-manager — covering roughly 2 billion downloads a month, and it spreads through rebuilt tarballs with no git trace. On the CSS side, the Working Group resolved a new class prefix selector at their Berlin meeting, letting you target hyphenated class families like .btn-* with a single rule. UNPKG quietly crossed a scale milestone: 138.7 billion requests and 5.65 billion unique IPs in 30 days. Bun 1.4 also shipped, though the previous digest covered the bulk of that story.

## Content

**TLDR:** A supply-chain worm called ChainDrop has compromised 444 npm packages — including keyv, flat-cache, and cache-manager — covering roughly 2 billion downloads a month, and it spreads through rebuilt tarballs with no git trace. On the CSS side, the Working Group resolved a new class prefix selector at their Berlin meeting, letting you target hyphenated class families like .btn-* with a single rule. UNPKG quietly crossed a scale milestone: 138.7 billion requests and 5.65 billion unique IPs in 30 days. Bun 1.4 also shipped, though the previous digest covered the bulk of that story.

---

## ChainDrop worm compromises 444 npm packages including keyv and cache-manager

ChainDrop is a variant of the Shai-Hulud worm family and it's genuinely uncomfortable to read about. It hit keyv, flat-cache, cacheable-request, and cache-manager — packages that together pull around 2 billion downloads a month. What separates it from earlier attacks is that it propagates through rebuilt tarballs rather than source commits, so your git history looks clean. Once installed, it scans for npm tokens, GitHub credentials, cloud keys, Kubernetes and Vault secrets, and has been observed pulling OIDC tokens from GitHub Actions runner memory. The part that should make you pause: it plants malicious hooks in .claude/settings.json and .vscode/tasks.json, files developers routinely commit without a second look. Opening an infected branch in VS Code or starting a Claude Code session fires the hook automatically — no click required. [Read more](https://daily.dev/posts/5YJiXHGPg)

## CSS class prefix selector (.btn-*) resolved by Working Group in Berlin

The CSS Working Group resolved the class prefix selector proposal at their August 2026 face-to-face in Berlin, based on a pitch Lea Verou first made in 2024. The syntax lets you write .btn-* to match .btn-primary, .btn-secondary, .btn-danger, and any other class sharing that hyphenated prefix — replacing the more verbose [class^="btn-"] attribute selector. A few constraints worth knowing: it won't match an empty suffix (foo- alone doesn't qualify), it's hyphen-only with no support for underscores or camelCase, and wildcards can't appear mid-selector. No browser has implemented it yet — this is fresh spec text — so treat it as something to watch rather than something to use. [Read more](https://daily.dev/posts/ibbQpEI3h)

## UNPKG served 138.7 billion requests and 5.65 billion unique IPs in 30 days

UNPKG shared usage numbers that put its scale in perspective: 138.7 billion requests, 5.65 billion unique IPs, and 4.74 petabytes transferred in the past month. The team framed the IP count as equivalent to roughly 94% of the world's internet-connected population. It's a reminder of how much of the open web's JavaScript delivery runs through a single CDN that most developers never think about. [Read more](https://daily.dev/feed-by-ids?id=bSffO6326&id=Gxr9mnhio)

---

## Also notable

- **Halodoc open-sources Claude Code skill that upgraded 45 Angular repos in 20-45 minutes each:** Halodoc built a /angular-upgrade skill for Claude Code that ran clean upgrade MRs across 45 repos for the Angular 21 rollout, with only four needing manual intervention, cutting a roughly one-day-per-repo task to 20-45 minutes of unattended machine time — the skill is now open-sourced on GitHub. [Read more](https://daily.dev/posts/mMYjEplR8)
- **ESLint 10.9.0 fixes unsafe autofixes in no-var and prefer-template:** ESLint 10.9.0 patches unsafe autofixes in no-var (hoisted functions and catch-parameter shadowing) and prefer-template (tagged template calls), and adds a checkConditionalExpressions option to no-unmodified-loop-condition. [Read more](https://daily.dev/posts/dGa6svu6W)
- **Spline V2 ships MCP server letting AI agents edit live 3D scenes:** Spline's V2 rebuild bundles a local MCP server (macOS and Windows) that lets Claude Code, Cursor, Codex, and VS Code work directly inside live, editable 3D scenes, with exports to React, Three.js, Next.js, and React Three Fiber. [Read more](https://daily.dev/posts/QKizgsPyW)
- **Chrome Web Store caps publishers at two extension submissions amid submission flood:** Chrome Web Store is now limiting publishers to two extension submissions due to an overwhelming volume of new submissions, which will affect anyone managing multiple extensions under a single publisher account. [Read more](https://daily.dev/posts/2zHMe5KVk)
- **WordPress Accessibility Lab plugin proposed to bundle WCAG tooling outside Core:** WordPress is introducing an Accessibility Lab plugin modeled on the Performance Lab plugin, with modules including Troy Chaplin's Block Accessibility Checks for real-time WCAG validation and a new heading-order validation module, explicitly scoped to experiments too risky for Core rather than replacing direct bug fixes. [Read more](https://daily.dev/posts/MTEZVJNZU)

## Similar posts on daily.dev

- [ChainDrop worm crawls into npm supply chain, evades standard defenses](https://daily.dev/posts/chaindrop-worm-crawls-into-npm-supply-chain-evades-standard-defenses-vobyse76t) · The Register · 2 upvotes · 0 comments
- [Massive ChainDrop npm supply-chain attack infects hundreds of packages](https://daily.dev/posts/massive-chaindrop-npm-supply-chain-attack-infects-hundreds-of-packages-uhzbslfdu) · BleepingComputer · 3 upvotes · 1 comments

---

Tags: [#security](https://daily.dev/tags/security), [#cyber](https://daily.dev/tags/cyber), [#javascript](https://daily.dev/tags/javascript), [#css](https://daily.dev/tags/css), [#npm](https://daily.dev/tags/npm)

[View this post on daily.dev](https://daily.dev/posts/chaindrop-worm-hits-444-npm-packages-css-gets-a-class-prefix-selector-6nviewibr)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"DiscussionForumPosting","mainEntityOfPage":"https://daily.dev/posts/chaindrop-worm-hits-444-npm-packages-css-gets-a-class-prefix-selector-6nviewibr","headline":"ChainDrop worm hits 444 npm packages, CSS gets a class prefix selector","text":"A supply-chain worm called ChainDrop has compromised 444 npm packages — including keyv, flat-cache, and cache-manager — covering roughly 2 billion downloads a month, and it spreads through rebuilt tarballs with no git trace. On the CSS side, the Working Group resolved a new class prefix selector at their Berlin meeting, letting you target hyphenated class families like .btn-* with a single rule. UNPKG quietly crossed a scale milestone: 138.7 billion requests and 5.65 billion unique IPs in 30 days. Bun 1.4 also shipped, though the previous digest covered the bulk of that story.","url":"https://daily.dev/posts/chaindrop-worm-hits-444-npm-packages-css-gets-a-class-prefix-selector-6nviewibr","datePublished":"2026-08-22T04:17:57.082Z","dateModified":"2026-08-22T04:18:21.435Z","author":{"@type":"Organization","name":"Web Digest","logo":"https://media.daily.dev/image/upload/s--C833eNQW--/f_auto,q_auto/v1773839396/logos/webdev_digest?_a=BAMAMiiu0","url":"https://daily.dev/sources/webdev_digest"},"interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"isPartOf":{"@type":"WebPage","url":"https://daily.dev/sources/webdev_digest","name":"Web Digest"}}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Web Digest","item":"https://daily.dev/sources/webdev_digest"},{"@type":"ListItem","position":3,"name":"ChainDrop worm hits 444 npm packages, CSS gets a class prefix selector"}]}
```

