image

Onderzoeker compromitteert Apple en Microsoft via slim vernoemde packages

dinsdag 9 februari 2021, 19:55 door Redactie, 2 reacties

Een beveiligingsonderzoeker is erin geslaagd Apple, Microsoft, Shopify en tientallen andere techbedrijven en organisaties via slim vernoemde packages te compromitteren. Onderzoeker Alex Birsan ontving voor zijn aanval, die hij 'Dependency Confusion' noemt, in totaal 130.000 dollar aan beloningen.

Ondanks de hoge beloningen was de aanval vrij eenvoudig van opzet. Ontwikkelaars maken voor hun projecten gebruik van allerlei interne packages. De namen van deze interne packages zijn vaak in JavaScript-bestanden te vinden, zo ontdekte Birsan. De onderzoeker scande de domeinnamen van de bedrijven in kwestie op zoek naar dergelijke bestanden. Daarin vond hij honderden interne namen van JavaScript-packages waar de projecten gebruik van maakten.

Voor Python, de JavaScript-omgeving Node.js, Ruby, Azure en andere programmeertalen en platformen zijn er publieke repositories beschikbaar waar iedereen packages naar toe kan uploaden. Birsan ontdekte dat veel van de gevonden interne package-namen op de publieke repositories nog beschikbaar waren. Vervolgens registreerde hij deze namen bij de PyPI (Python Package Index), de npm-registry van Node.js, RubyGems en Azure Artifacts.

Vervolgens plaatste hij onder alle geregistreerde namen packages met een 'phone home' functie. Zodra de packages werden geïnstalleerd stuurden die de gebruikersnaam, hostnaam, installatiepad en extern ip-adres naar Birsan. Zo kon de onderzoeker zien dat zijn 'malafide' packages onder andere op interne systemen van Apple, Microsoft en Shopify waren uitgevoerd. Birsan waarschuwde de getroffen bedrijven. Die beloonden hem voor zijn melding met in totaal 130.000 dollar.

Birsan stelt dat in het geval van Python het probleem wordt veroorzaakt door een commandline-argument genaamd "--extra-index-url" die bij de installatie van packages kan worden gebruikt. In dit geval wordt eerst gekeken of de opgegeven package via een specifiek opgegeven (interne) package-index beschikbaar is. Is dat niet het geval, dan wordt erop de publieke Python Package Index gezocht. Vervolgens installeert de installer de package die wordt gevonden. Blijkt de packagenaam bij beide indexes aanwezig te zijn, wordt standaard de package met het hoogste versienummer geïnstalleerd.

Het meeste succes had de onderzoeker met npm-packages voor Node.js. "Npm staat het toe dat willekeurige code automatisch bij de installatie van een package wordt uitgevoerd", merkt Birsan op. Hij benadrukt dat Python en Ruby net zo kwetsbaar voor de aanval zijn. Birsan denkt dat het vinden van interne package-namen in de toekomst voor nog meer kwetsbare systemen zal zorgen. Naar aanleiding van het onderzoek heeft Microsoft een whitepaper over de risico's van 'private package feeds' gepubliceerd.

Reacties (2)
09-02-2021, 19:59 door spatieman
slechte zaak dus...
09-02-2021, 20:10 door Anoniem
Zo gemakkelijk om te doen,
ik ben bang dat dit al veel langer en op grotere schaal wordt gedaan.
Reageren

Deze posting is gelocked. Reageren is niet meer mogelijk.