GitHub en PyPI voeren nieuwe maatregelen in om softwareontwikkelaars beter te beschermen tegen aanvallen via de software supply-chain. Beide platforms kiezen daarbij voor een opvallende strategie: tijd. Door updates niet direct beschikbaar te maken of wijzigingen aan oudere releases te blokkeren, willen ze voorkomen dat kwaadaardige code zich snel via populaire softwarepakketten verspreidt.
De maatregelen volgen op een reeks incidenten waarbij aanvallers misbruik maakten van open source-pakketten om malware of achterdeurtjes bij ontwikkelaars terecht te laten komen. Aanvallen via onder meer de npm-pakketten chalk en debug, de s1ngularity-operatie, de Shai-Hulud-campagne en GhostAction maakten duidelijk hoe kwetsbaar het ecosysteem kan zijn. Dit stelt BleepingComputer.
GitHub past daarvoor zijn dependencybeheerder Dependabot aan. Deze dienst controleert automatisch of projecten gebruikmaken van verouderde softwarebibliotheken. Vervolgens maakt Dependabot een pull request aan om een nieuwere versie te installeren.
Nieuw is dat Dependabot standaard 72 uur wacht voordat een zojuist verschenen pakketversie wordt voorgesteld. Volgens GitHub is die afkoelperiode lang genoeg om beveiligingsonderzoekers en pakketbeheerders de kans te geven een eventueel kwaadaardig pakket te ontdekken en uit distributie te halen. Ontwikkelaars lopen daardoor niet lang achter op nieuwe releases.
‘Wachttijd’ verkleint risico’s
Bij diverse recente aanvallen bleek schadelijke code al binnen enkele minuten na publicatie te worden ontdekt. Toch bleef er daarna vaak nog een periode over waarin projecten de besmette pakketten konden downloaden. Dit omdat verwijdering en waarschuwingen tijd kosten. De nieuwe wachttijd verkleint dat risico.
Organisaties die sneller of juist voorzichtiger willen updaten, kunnen de wachttijd zelf aanpassen. GitHub benadrukt daarnaast dat de maatregel slechts één onderdeel van een bredere beveiligingsstrategie is. Het bedrijf adviseert ontwikkelaars onder meer afhankelijkheden vast te leggen met lockfiles, tokens met beperkte rechten te gebruiken en onnodige installatiescripts in CI-omgevingen uit te schakelen.
Ook PyPI, de centrale pakketrepository voor Python, scherpt zijn beveiliging aan. Beheerders kunnen voortaan geen nieuwe bestanden meer toevoegen aan een release die langer dan veertien dagen geleden is gepubliceerd. Daarmee wil het platform voorkomen dat aanvallers na het buitmaken van publicatietokens alsnog kwaadaardige bestanden toevoegen aan een oudere, vertrouwde versie van een pakket.
Volgens PyPI komt het in de praktijk nauwelijks voor dat ontwikkelaars nog nieuwe bestanden uploaden naar een release die ouder is dan twee weken. De nieuwe beperking heeft daardoor weinig gevolgen voor reguliere ontwikkelprocessen. Ondertussen wordt een potentieel aanvalsscenario afgesloten.
Opvallend is dat PyPI aangeeft geen bevestigde aanvallen te kennen waarbij deze zogenoemde release poisoning-techniek daadwerkelijk is toegepast. De maatregel is daarom vooral preventief bedoeld. Door de mogelijkheid nu al weg te nemen, hopen de beheerders te voorkomen dat aanvallers deze route in de toekomst gaan benutten.