Naarmate de softwareontwikkeling vordert in de levenscyclus van de softwaretoeleveringsketen, komt de pakketfase naar voren als een cruciaal moment, waarbij de broncode wordt omgezet in uitvoerbare artefacten die zijn voorbereid voor distributie. Deze kritieke fase is echter niet immuun voor kwetsbaarheden, waardoor het een belangrijk doelwit is voor kwaadwillende actoren die de integriteit en beveiliging van software willen ondermijnen. Deze blogpost gaat dieper in op de heersende bedreigingen die zich tijdens deze fase kunnen voordoen en schetst effectieve strategieën om deze te beperken. Deze inhoud dient als een voortzetting van onze blogserie over verkennen software supply chain security over de SDLC.
De pakketfase in de levenscyclus van softwareontwikkeling
De pakketfase van de levenscyclus van de softwareleveringsketen omvat het proces van het verpakken en voorbereiden van software voor distributie aan gebruikers. Deze fase omvat het maken van installatiepakketten, het beheren van afhankelijkheden en het genereren van metagegevens voor de software.
Bedreigingen voor de build-integriteit zijn kwetsbaarheden waardoor aanvallers tijdens het verpakkingsproces ongeautoriseerde wijzigingen in de software kunnen aanbrengen. Deze bedreigingen kunnen via verschillende methoden worden geïntroduceerd, zoals het compromitteren van het pakketregister, het misbruiken van kwetsbaarheden in verpakkingstools of het manipuleren van afhankelijkheden van derden.
De totale afhankelijkheid van open-sourcecomponenten in moderne software maakte deze fase de meest voorkomende SSCA target. Het introduceren van stealth-malware in een populaire open-sourcecomponent is een droom voor veel cybercriminelen. Daarom is meer dan In 245,000 werden 2023 kwaadaardige pakketten gevonden.
Voorbeelden Software Supply Chain Security Bedreigingen in de pakketfase
Gebruik een gecompromitteerd pakket
Dit verwijst naar het inzetten of gebruiken van een softwarepakket waarmee door een tegenstander is geknoeid of gewijzigd.
Dit kan gebeuren nadat het pakket het officiële pakketregister heeft verlaten, hetzij door directe toegang tot het systeem van de gebruiker, hetzij door middel van social engineering-tactieken die de gebruiker ertoe verleiden een kwaadaardig pakket te downloaden of te installeren. Een voorbeeld van deze vector was de Browser typosquatting Aanval.
Een aanvaller, die Linux- en Mac-systemen wilde compromitteren, infiltreerde in het ontwikkelingsproces van een populaire Node.js-bibliotheek genaamd Browserify. De aanvaller heeft kwaadaardige code in de broncode van het project gestopt, met de bedoeling deze via het NPM-pakketregister te verspreiden. Zodra het besmette Browserify-pakket naar NPM was geüpload, zouden nietsvermoedende ontwikkelaars het downloaden en installeren, in de overtuiging dat het de legitieme versie was. De kwaadaardige code, ingebed in het pakket, zou stil werken, waardoor de integriteit van de geïnfecteerde systemen in gevaar zou komen. Dit kan leiden tot gegevensdiefstal, systeeminstabiliteit of zelfs externe toegang voor de aanvaller.
Compromispakketregister
Een gecompromitteerd pakketregister is een softwareopslagplaats die is geïnfiltreerd door een tegenstander die ongeautoriseerde toegang heeft verkregen tot de administratieve interface of infrastructuur van het register.
Hierdoor kan de tegenstander legitieme softwarepakketten wijzigen of vervangen door kwaadaardige pakketten, die vervolgens kunnen worden verspreid onder nietsvermoedend geïnstalleerde gebruikers. Een voorbeeld van dit soort bedreiging was de Aanval op pakketspiegels: Een onderzoeker, met de bedoeling open-sourcesoftware te promoten, heeft verschillende populaire pakketregisters gecompromitteerd, waaronder Maven Central, NPM en RubyGems. Door toegang te krijgen tot deze registers kon de onderzoeker mirrors en replica's van de oorspronkelijke repository's maken, wat voor ontwikkelaars een handig alternatief vormde om pakketten te downloaden.
Deze spiegels hadden echter een sinister doel. De gecompromitteerde spiegels dienden als kanalen voor de onderzoeker om kwaadaardige pakketten te verspreiden. Deze pakketten vervingen legitieme pakketten, onopgemerkt door de primaire registers, en nietsvermoedende ontwikkelaars downloadden en installeerden ze onbewust. Eenmaal geïnstalleerd, ontketenden deze kwaadaardige pakketten hun lading, voerden willekeurige code uit, stalen gevoelige gegevens of verstoorden de activiteiten.
Gewijzigd pakket uploaden
Een tegenstander uploadt een aangepast pakket naar een opslagplaats of distributiekanaal dat kwaadaardige code of payloads bevat. Dit kan worden gedaan door de broncode, verpakking of metagegevens van het pakket te wijzigen.
Een van de meest beruchte van dit soort bedreigingen was de CodeCov-aanval in 2021. Een aanvaller die softwareprojecten probeert te compromitteren met behulp van CodeCov, een populaire continue integratie- en continue leveringsmethode (CI/CD) tool, gebruikte gelekte inloggegevens om ongeautoriseerde toegang te krijgen tot de Google Cloud Storage (GCS)-bucket van een project. Zodra de aanvaller toegang had tot de GCS-bucket, uploadden ze een kwaadaardig artefact, een aangepaste versie van het CodeCov-pakket, dat vervolgens via de CodeCov-service naar gebruikers werd gedistribueerd. Nietsvermoedende ontwikkelaars, die vertrouwden op de functie voor automatische updates, zouden het kwaadaardige pakket downloaden en installeren, in de veronderstelling dat het het legitieme pakket was. Na installatie zou de kwaadaardige code stilletjes worden uitgevoerd, waardoor de integriteit van de geïnfecteerde systemen in gevaar kwam. Dit zou kunnen leiden tot gegevensdiefstal, systeeminstabiliteit of zelfs externe toegang voor de aanvaller.
Aanvallen op de pakketregisters komen zo vaak voor dat sommige aanvalspatronen een naam hebben gekregen:
In typosquatting, uploadt de slechte actor meerdere kwaadaardige pakketten naar het register met kleine typefouten of soortgelijke namen als legitieme, populaire, in de hoop dat ontwikkelaars de beoogde pakketnaam verkeerd zullen spellen met een kwaadaardige. Vaak doet het kwaadaardige pakket zich voor als het legitieme pakket dat onopgemerkt blijft, waardoor de kans groter wordt dat je door de sterren wordt getroffen.
Afhankelijkheid verwarring maakt gebruik van de manier waarop sommige pakketbeheerders de aangevraagde pakketten uit meerdere registers oplossen. Wanneer een organisatie interne componenten gebruikt die in een intern register zijn gepubliceerd, kan een aanvaller die hiervan op de hoogte is, een kwaadaardig onderdeel met dezelfde naam in een openbaar register publiceren. Als de naam die voor de interne component wordt gebruikt niet binnen het bereik valt, halen sommige pakketbeheerders de kwaadaardige component op in plaats van de interne.
Met Troyan-pakketten, vermomt de cybercrimineel malware onder nuttige, geldige code. Dit kan worden gebruikt door de echte auteur, of door een bijdrager die zichzelf aanbiedt het pakket te onderhouden. Dit staat ook bekend als Pakketkaping. Aanvallers gebruikten veel technieken om een bestaand pakket te kapen, zoals Domeinovername waarbij een verlaten verlopen domein werd ingenomen door de aanvaller die het oude e-mailadres van de beheerder opnieuw maakte en wachtwoordherstel uitvoerde om het beheerdersaccount over te nemen.
Laatste opmerkingen
Nu organisaties steeds meer softwareontwikkelingsmethodologieën adopteren die prioriteit geven aan automatisering en continue levering, is het belang van het beveiligen van de softwarepakketfase nog nooit zo belangrijk geweest. Door gedurende deze kritieke fase robuuste beveiligingsmaatregelen te implementeren, kunnen organisaties het risico aanzienlijk beperken dat ze ten prooi vallen aan kwaadaardige aanvallen die de integriteit en veiligheid van hun software in gevaar kunnen brengen.
De strategieën die in deze blogpost worden uiteengezet, samen met de gegeven voorbeelden, dienen als een duidelijke herinnering dat de pakketfase een kwetsbaar punt binnen de softwaretoeleveringsketen vertegenwoordigt. Organisaties moeten acht slaan op deze bedreigingen en de noodzakelijke beveiligingsmaatregelen implementeren om hun software tegen aanvallen te beschermen. Door dit te doen kunnen ze de integriteit, veiligheid en betrouwbaarheid van hun software voor hun gebruikers en klanten garanderen.
Sluit u aan bij onze reis naar een veilig software-ecosysteem
Mis de kans niet om een stap voor te blijven op het gebied van software supply chain security. Schrijf u vandaag nog in op onze blog en ontvang als een van de eersten onze nieuwste inzichten, zodat uw organisatie veerkrachtig en veilig blijft te midden van evoluerende bedreigingen. Samen kunnen we een robuuster en veiliger software-ecosysteem voor iedereen opbouwen.
Vergeet niet, software supply chain security is een voortdurende reis, geen bestemming. Door voortdurend beveiligingspraktijken te evalueren en aan te passen om opkomende bedreigingen aan te pakken, kunnen organisaties hun softwaretoeleveringsketen beveiligen en betrouwbare software aan hun gebruikers leveren.
Bekijk onze videodemo





