image

GitHub komt na reeks aanvallen met maatregelen om npm supply chain te beveiligen

dinsdag 23 september 2025, 10:29 door Redactie, 5 reacties

GitHub heeft na een reeks aanvallen, waarbij honderden npm packages van malware werden voorzien, maatregelen aangekondigd om de nmp supply chain te beveiligen. Zo komen er 'granular tokens' die maximaal zeven dagen werken, wordt tweefactorauthenticatie (2FA) voor local publishing verplicht en wordt er ingezet op Trusted publishing. Dat heeft GitHub via een blogposting aangekondigd.

Npm is de standaard package manager voor de JavaScript-omgeving Node.js en naar eigen zeggen het grootste softwarearchief ter wereld. Via de npm Registry biedt het een groot archief met openbare, besloten en commerciële packages. De afgelopen weken vonden er meerdere aanvallen plaats waarbij aanvallers npm packages van malware wisten te voorzien. Dit gebeurde onder andere via phishing en het stelen van tokens die toegang tot allerlei npm packages gaven. Zo was er de "Shai-Hulud" malware die automatisch npm packages met malware infecteerde. Eenmaal geïnstalleerd zoekt de malware op het systeem van de ontwikkelaar naar tokens waarmee toegang tot andere npm-packages van de betreffende ontwikkelaar kan worden verkregen. Vervolgens voegt de malware zichzelf aan deze packages toe.

Tal van npm packages hebben te maken met zogenoemde dependencies, waarbij er van andere npm packages gebruik wordt gemaakt. Eén malafide package kan zodoende allerlei andere softwareprojecten en ontwikkelaars raken. Naar aanleiding van de recente aanvallen kondigde npm-alternatief pnmp (Performant Node Package Manager) al maatregelen aan. Zo biedt het nu een optie om nieuw uitgebrachte dependencies pas op een later moment te installeren.

Npm-eigenaar GitHub heeft nu ook verschillende maatregelen aangekondigd om de npm supply chain te beveiligen. Zo wordt voor local publishing, wat ontwikkelaars gebruiken voor de lokale ontwikkelomgeving, tweefactorauthenticatie (2FA) verplicht. Verder zal er met granular access tokens worden gewerkt. Deze tokens hebben een korte levensduur en geven beperkte toegang. In het geval van een gestolen token zou dit de impact moeten beperken. Als laatste wordt er ingezet op Trusted Publishing. Daarbij wordt gebruik gemaakt van OpenID Connect (OIDC) authenticatie voor het publiceren van packages, in plaats van "long-lived" npm tokens.

Om deze maatregelen door te voeren gaat GitHub onder andere stoppen met legacy classic tokens. Ook wordt er gestopt met time-based one-time password (TOTP) 2FA. In plaats daarvan wordt FIDO-gebaseerde 2FA verplicht. Tevens wordt de levensduur van granular tokens met publicatierechten verkort. Verder zal de optie om 2FA te omzeilen voor het lokaal publiceren van packages verdwijnen. GitHub stelt dat sommige van deze aanpassingen ervoor zorgen dat ontwikkelaars hun workflows moeten aanpassen. Het platform gaat de aanpassingen dan ook geleidelijk doorvoeren om zo de impact voor ontwikkelaars te beperken.

Reacties (5)
23-09-2025, 11:28 door musiman
Ik vind het wel een beetje laat. Al jaren zijn er meldingen van npm packages die malicious zijn en bijvoorbeeld de id_rsa files gingen stelen.
23-09-2025, 15:59 door Anoniem
Ook wordt er gestopt met time-based one-time password (TOTP) 2FA. In plaats daarvan wordt FIDO-gebaseerde 2FA verplicht.
2FA is al irritant genoeg. TOTP 2FA nog meer omdat die tijdelijke cijfercombinatie altijd weer net verlopen is nadat je het ingevoerd hebt. En dan nog erger een 2FA dat aan een apparaatje gebonden is waarmee ook van alles kan gebeuren.
Hoewel de impact bij sommige packages inderdaad groot is, lijkt mij zo'n maatregel over-the-top voor menig hobbyproject.
23-09-2025, 16:15 door Anoniem
Door Anoniem:
Ook wordt er gestopt met time-based one-time password (TOTP) 2FA. In plaats daarvan wordt FIDO-gebaseerde 2FA verplicht.
2FA is al irritant genoeg. TOTP 2FA nog meer omdat die tijdelijke cijfercombinatie altijd weer net verlopen is nadat je het ingevoerd hebt. En dan nog erger een 2FA dat aan een apparaatje gebonden is waarmee ook van alles kan gebeuren.
Hoewel de impact bij sommige packages inderdaad groot is, lijkt mij zo'n maatregel over-the-top voor menig hobbyproject.

Alleen - wanneer is een package geen 'hobbyproject gebruikt toch niemand' meer, maar iets "belangrijks" ?

Als de developer zegt "is maar hobby, geen garantie, eigen risico" ?
Best een hoop dingen die "iedereen" gebruiken hangen nog steeds op z'n soort disclaimer .
23-09-2025, 17:04 door Anoniem
Hoe lang duurt het voordat Microsoft de door hun geprefereerde 2FA oplossing verplicht voor heel GitHub.

Wat gebeurt er met ontwikkelaars die hier niet aan mee willen werken? Blijft hun code op GitHub staan? Gaan ze ergens anders naar toe? Stoppen ze met het schrijven van code? Wat gebeurt er met gratis projecten zonder overgebleven ontwikkelaars?
23-09-2025, 20:27 door MathFox
Door Anoniem:
Wat gebeurt er met ontwikkelaars die hier niet aan mee willen werken? Blijft hun code op GitHub staan? Gaan ze ergens anders naar toe? Stoppen ze met het schrijven van code? Wat gebeurt er met gratis projecten zonder overgebleven ontwikkelaars?
Wat een individuele ontwikkelaar doet is zhaar keuze. Het voordeel van git is dat deze ontwikkelaar ook lokaal een kopie heeft van de codegeschiedenis en die triviaal kan uploaden naar een andere website.
Voor Open Source software zonder beheerder kan een willekeurig persoon de broncode pakken en verder ontwikkelen (en misschien de nieuwe beheerder worden). Bij Closed Source geldt: weg is weg.
Reageren
Ondersteunde bbcodes
Bold: [b]bold text[/b]
Italic: [i]italic text[/i]
Underline: [u]underlined text[/u]
Quote: [quote]quoted text[/quote]
URL: [url]https://www.security.nl[/url]
Config: [config]config text[/config]
Code: [code]code text[/code]

Je bent niet en reageert "Anoniem". Dit betekent dat Security.NL geen accountgegevens (e-mailadres en alias) opslaat voor deze reactie. Je reactie wordt niet direct geplaatst maar eerst gemodereerd. Als je nog geen account hebt kun je hier direct een account aanmaken. Wanneer je Anoniem reageert moet je altijd een captchacode opgeven.