GitHub-kwetsbaarheden parallel onderzoek

Alle berichten

Vorige maand kwam ik tegen dit artikel van Dark Reading. Het zag er heel bekend uit. Het duurde niet lang voordat ik me realiseerde dat de in het artikel besproken kwetsbaarheid voor artefactvergiftiging door GitHub-cross-workflow een opvallende gelijkenis vertoonde met de GitHub-cross-workflow cache-vergiftiging kwetsbaarheid waarover we in maart 2022 berichtten. 

GitHub-workflows: een belangrijk onderdeel van GitHub CI/CD-pijplijnen

GitHub-workflows worden gebruikt om de specifieke acties te definiëren die moeten worden ondernomen als onderdeel van de CI/CD-pijplijn. Het zijn geautomatiseerde processen die kunnen worden geactiveerd door specifieke gebeurtenissen in een GitHub-repository. Dergelijke gebeurtenissen vinden bijvoorbeeld plaats wanneer code naar de repository wordt gepusht, wanneer een pull-verzoek wordt geopend of gesloten, of wanneer een nieuwe release wordt gepubliceerd. 

 

Werkstromen worden gemaakt met behulp van een YAML-bestand, dat de acties specificeert die moeten worden ondernomen wanneer de werkstroom wordt geactiveerd. Dergelijke acties kunnen door de ontwikkelaar worden geschreven of volledig van de GitHub-marktplaats worden gehaald, waar meer dan 10,000 vooraf gemaakte acties kunnen worden gedownload en gebruikt.

 

Workflows bestaan ​​uit een of meer taken, die zijn gedefinieerd als een reeks stappen. Stappen kunnen een verscheidenheid aan acties zijn, zoals het uitvoeren van tests, het implementeren van code of het publiceren van een pakket.

GitHub-workflows zijn een krachtig hulpmiddel dat ontwikkelaars kan helpen hun workflows te automatiseren en te stroomlijnen, waardoor tijd en moeite worden bespaard en de betrouwbaarheid van hun softwareontwikkelingsproces wordt verbeterd, maar ze zijn niet zonder ingebouwde gebreken. 

 

Er zijn verschillende potentiële beveiligingsproblemen die kunnen optreden bij het gebruik van GitHub-workflows. Hier zijn een paar veelvoorkomende:

 

  1. Onbevoegde toegang: Workflows die niet goed zijn geconfigureerd of beveiligd, kunnen mogelijk worden geopend en geactiveerd door ongeautoriseerde gebruikers. Hierdoor kunnen ze willekeurige code uitvoeren of andere ongeautoriseerde acties uitvoeren.
  2. Geheimen lekken: Workflows vereisen vaak het gebruik van geheimen, zoals API-sleutels of wachtwoorden, om toegang te krijgen tot externe bronnen of om bepaalde acties uit te voeren. Als deze geheimen niet goed worden beschermd, kunnen ze mogelijk lekken, wat tot beveiligingsinbreuken kan leiden.
  3. Onzekere afhankelijkheids: Workflows die afhankelijk zijn van externe bibliotheken of afhankelijkheden kunnen potentieel kwetsbaar zijn voor aanvallen als deze afhankelijkheden niet veilig zijn. Het is belangrijk om afhankelijkheden regelmatig te controleren en bij te werken om ervoor te zorgen dat ze veilig zijn.
  4. Gebrek aan invoervalidatie en opschoning: Workflows die invoer niet goed valideren, kunnen mogelijk worden misbruikt om willekeurige code uit te voeren of andere ongeautoriseerde acties uit te voeren.

 

Laten we de twee kwetsbaarheden in de werkstromen die in de bovengenoemde artikelen worden besproken eens nader bekijken.

Cross-workflow artefactvergiftiging

GitHub-werkstroomartefacten zijn het product van het werk dat is gedaan in de CI/CD-pijplijnen. Normaal gesproken krijgt elke workflow zijn eigen bucket voor het opslaan van dergelijke artefacten, maar soms moeten workflows toegang hebben tot artefacten die door andere workflows zijn gemaakt. GitHub staat niet toe dat workflows direct toegang krijgen tot opslag/artefacten uit verschillende workflows. Om dit te omzeilen is er een door GitHub goedgekeurde API waarmee artefacten kunnen worden gedownload op basis van basisfiltering. Het probleem is dat de API geen onderscheid maakt tussen artefacten die zijn geüpload door gevorkte repository's en artefacten die zijn geüpload door de basisrepository's. Dat betekent dat het uploaden van mogelijk vergiftigde artefacten die zijn gemaakt door gevorkte opslagplaatsen een reëel en aanwezig gevaar is. 

 

Om dit probleem op te lossen, is GitHub begonnen met het verstrekken van aanvullende informatie, evenals metagegevens van artefacten bij het downloaden van artefacten. Deze informatie is bedoeld om de auteur te helpen ervoor te zorgen dat hij of zij het juiste artefact downloadt. Het basisprobleem van cross-workflow-artefacten wordt op dit moment door GitHub niet als een probleem beschouwd. Voor meer informatie over dit probleem kunt u terecht op de dit artikel hierboven vermeld.

Cross-workflow cache-vergiftiging

GitHub maakt het cachen van artefacten en pakketten mogelijk om de CI/CD-pijplijn te versnellen. In plaats van de benodigde artefacten en pakketten keer op keer te downloaden voor elke workflow waarin ze nodig zijn, kunnen ze in de cache worden opgeslagen en in verschillende workflows worden gebruikt. 

 

Omdat de cache wordt gedeeld tussen workflows, is er maar één inbreuk nodig in een workflow waarbij de cache wordt gebruikt met de toestemming om deze te wijzigen, en die cache kan worden vergiftigd voor al het volgende workflow-gebruik. Omdat de cache alleen wordt bijgewerkt als er een nieuw artefact of pakket is om te downloaden, betekent dit dat een enkele vergiftigde cache lange tijd actief kan zijn, wat van invloed kan zijn op talloze iteraties van softwarebuilds die in die pijplijn worden uitgevoerd.

 

GitHub beschouwt het probleem van een mogelijk vergiftigde cache niet als een probleem. De cache is een nuttige functie en de mogelijkheid om deze tussen workflows te delen wordt op dit moment niet als een bug of een regelrecht beveiligingsprobleem beschouwd. Voor meer informatie over dit probleem kunt u terecht op de dit artikel hierboven vermeld.

Afbeelding van GitHub-cachevergiftiging

Andere minder bekende GitHub-kwetsbaarheden en hoe u zich daartegen kunt verdedigen

GitHub is een van de populairste Source Control Management (SCM)-systemen ter wereld. Als zodanig wordt het ook veel gebruikt om software te bouwen en te distribueren met behulp van de CI/CD-pijplijn, acties en workflows.

Mensen moeten niet vergeten dat GitHub is gemaakt om het delen van codes en gezamenlijke ontwikkeling te vergemakkelijken. Het was oorspronkelijk ontworpen voor open-sourceontwikkelaars en de zakelijke en organisatorische accountmogelijkheden werden later toegevoegd. In de kern was beveiliging geen groot probleem van het systeem. Het feit dat je een speciale opstelling op GitHub om beveiligingsfuncties voor je account in te schakelen, betekent dat het idee dat je door het gebruik van Git inherent veiliger bent slechts een illusie is.   

Later deze maand zal Scribe hosten Tzachi Zornstain, hoofd van Software Supply Chain bij Checkmarx in een webinar om te praten over enkele van dergelijke potentiële valkuilen voor de software supply chain in GitHub.  

Als je meer wilt weten over deze minder bekende klasse van kwetsbaarheden en hoe je je hiertegen kunt verdedigen, luister dan naar deze on-demand Webinar.

 

banner

Deze inhoud wordt u aangeboden door Scribe Security, een toonaangevende aanbieder van end-to-end software supply chain-beveiligingsoplossingen die state-of-the-art beveiliging levert voor codeartefacten en codeontwikkelings- en leveringsprocessen in de software supply chain. Meer informatie.