Op 22 april 2024 dook een kwaadaardige versie van Bitwarden’s command-line interface (CLI) op in de npm-registry onder de officiële pakketnaam @bitwarden/[email protected]. Gedurende 93 minuten ontvingen ontwikkelaars die de tool via npm installeerden een backdoorged exemplaar in plaats van de legitieme versie. Bitwarden detecteerde de compromittering snel, verwijderde de malafide pakket en gaf aan dat er geen bewijs was dat aanvallers toegang hadden tot gebruikerskluizen of productiesystemen.
Onderzoekers van beveiligingsbedrijf JFrog analyseerden de schadelijke payload en ontdekten dat de malware niet gericht was op Bitwarden-kluizen, maar op gevoelige inloggegevens voor andere systemen. Het doelwit waren onder meer GitHub-tokens, npm-tokens, SSH-sleutels, AWS-, GCP- en Azure-referenties, GitHub Actions-secrets en configuratiebestanden voor AI-tools. Deze gegevens bepalen hoe teams hun infrastructuur bouwen, implementeren en beheren.
Waarom deze gegevens zo waardevol zijn
De volgende tabel toont de verschillende soorten gestolen gegevens, waar ze meestal worden opgeslagen en waarom ze operationeel zo belangrijk zijn:
| Soort gegevens | Locatie | Belang |
|---|---|---|
| GitHub-tokens | Ontwikkelaarslaptops, lokale configuratie, CI-omgevingen | Toegang tot repositories, misbruik van workflows, listing van secrets en laterale beweging via automatisering |
| npm-tokens | Lokale configuratie, release-omgevingen | Mogelijkheid om malafide pakketten te publiceren of releaseprocessen te wijzigen |
| SSH-sleutels | Ontwikkelaarsmachines, build-hosts | Toegang tot servers, interne repositories en infrastructuur |
| Shell-geschiedenis | Lokale machines | Onthult gekopieerde secrets, commando’s, interne hostnamen en workflow-details |
| AWS-referenties | Lokale configuratiebestanden, omgevingsvariabelen, CI-secrets | Expositie van cloudworkloads, opslag en implementatiesystemen |
| GCP-referenties | Lokale configuratiebestanden, omgevingsvariabelen, CI-secrets | Expositie van cloudprojecten, services en automatiseringspijplijnen |
| Azure-referenties | Lokale configuratiebestanden, omgevingsvariabelen, CI-secrets | Expositie van cloudinfrastructuur, identiteitssystemen en implementatiepaden |
| GitHub Actions-secrets | CI/CD-omgevingen | Toegang tot automatisering, build-outputs, implementaties en downstream-secrets |
| AI-tools/configuratiebestanden | Projectmappen, lokale ontwikkelomgevingen | Expositie van API-sleutels, interne endpoints, modelsettings en gerelateerde referenties |
Hoe de malware werkte
JFrog’s analyse toont aan dat de malafide pakket zowel de preinstall-hook als de bw-binaire ingangspunt had herschreven. Deze wijzigingen zorgden ervoor dat bij installatie en uitvoering een loader werd gestart die de Bun-runtime ophaalde en een geobfusceerd payload activeerde. Een organisatie kon de besmette CLI draaien zonder dat er wachtwoorden werden aangeraakt, terwijl de malware stelselmatig de referenties voor CI-pijplijnen, cloudaccounts en implementatieautomatisering verzamelde.
Beveiligingsbedrijf Socket meldt dat de aanval mogelijk gebruikmaakte van een gecompromitteerde GitHub Action in Bitwarden’s CI/CD-pijplijn. Dit past in een patroon dat onderzoekers van Checkmarx al enige tijd volgen. Bitwarden bevestigde dat het incident verband houdt met een bredere supply-chaincampagne die door Checkmarx wordt onderzocht.
Het vertrouwensprobleem bij npm
De npm-registry heeft een vertrouwd publicatiemodel ontwikkeld om dit soort risico’s te beperken. Door langdurige npm-publish-tokens te vervangen door OIDC-gebaseerde CI/CD-authenticatie, wordt één van de kwetsbaarheden in de toeleveringsketen weggenomen. Toch blijft de vraag hoe ontwikkelaars veilig gebruik kunnen maken van populaire tools zonder onbedoeld hun infrastructuur te compromitteren.