15.000 Go Module-opslagplaatsen op GitHub kwetsbaar voor repojacking-aanval

Uit nieuw onderzoek is gebleken dat meer dan 15.000 Go-modulerepository’s op GitHub kwetsbaar zijn voor een aanval die repojacking wordt genoemd.

“Meer dan 9.000 repository’s zijn kwetsbaar voor repojacking als gevolg van wijzigingen in de gebruikersnaam van GitHub”, zegt Jacob Baines, chief technology officer bij VulnCheck, in een rapport gedeeld met The Hacker News. “Meer dan 6.000 opslagplaatsen waren kwetsbaar voor repojacking vanwege het verwijderen van accounts.”

Gezamenlijk zijn deze repositories goed voor maar liefst 800.000 Go-moduleversies.

Repojacking, een samenvoeging van ‘repository’ en ‘kaping’, is een aanvalstechniek waarmee een slechte actor kan profiteren van wijzigingen en verwijderingen van accountgebruikersnamen om een ​​repository te creëren met dezelfde naam en de reeds bestaande gebruikersnaam om open source te creëren aanvallen op de software supply chain.

Eerder dit jaar onthulde cloudbeveiligingsbedrijf Aqua dat miljoenen softwareopslagplaatsen op GitHub waarschijnlijk kwetsbaar zijn voor de dreiging, en drong er bij organisaties die naamswijzigingen ondergaan op aan om ervoor te zorgen dat ze nog steeds hun vorige naam als tijdelijke aanduiding gebruiken om dergelijk misbruik te voorkomen.

Modules die in de programmeertaal Go zijn geschreven, zijn bijzonder gevoelig voor repojacking, omdat ze, in tegenstelling tot andere pakketbeheeroplossingen zoals npm of PyPI, gedecentraliseerd zijn vanwege het feit dat ze worden gepubliceerd op versiebeheerplatforms zoals GitHub of Bitbucket.

“Iedereen kan dan de Go-modulespiegel en pkg.go.dev opdracht geven om de details van de module in het cachegeheugen op te slaan”, aldus Baines. “Een aanvaller kan de nieuw ongebruikte gebruikersnaam registreren, de modulerepository dupliceren en een nieuwe module publiceren op proxy.golang.org en go.pkg.dev.”

Om te voorkomen dat ontwikkelaars mogelijk onveilige pakketten verwijderen, heeft GitHub een tegenmaatregel ingevoerd, genaamd populaire repository naamruimte pensionering, die pogingen blokkeert om repository’s te maken met de namen van gepensioneerde naamruimten die meer dan 100 keer zijn gekloond voordat de accounts van de eigenaren werden hernoemd of verwijderd.

Maar VulnCheck merkte op dat deze bescherming niet nuttig is als het gaat om Go-modules, omdat deze in de cache worden opgeslagen door de modulespiegel, waardoor de noodzaak voor interactie met of het klonen van een repository wordt vermeden. Met andere woorden, er kunnen populaire Go-gebaseerde modules zijn die minder dan 100 keer zijn gekloond, wat resulteert in een soort bypass.

“Helaas is het beperken van al deze repojackings iets dat Go of GitHub op zich zal moeten nemen”, aldus Baines. “Een derde partij kan redelijkerwijs niet 15.000 GitHub-accounts registreren. Tot die tijd is het belangrijk voor Go-ontwikkelaars om op de hoogte te zijn van de modules die ze gebruiken, en de staat van de repository waar de modules vandaan komen.”

De onthulling komt ook op het moment dat Lasso Security zei dat het 1.681 blootgestelde API-tokens op Hugging Face en GitHub heeft ontdekt, inclusief die geassocieerd met Google, Meta, Microsoft en VMware, die mogelijk kunnen worden uitgebuit om de toeleveringsketen te organiseren, gegevensvergiftiging te trainen en modeldiefstal te plegen. aanvallen.

Thijs Van der Does