Een afhankelijkheidsaanval maakt uitvoering van code mogelijk bij PayPal, Microsoft, Apple, Netflix, Uber en 30 andere bedrijven

Paar dagen geleden er is een verrassend eenvoudige methode uitgebracht waarmee afhankelijkheden in applicaties kunnen worden aangevallen die zijn ontwikkeld met behulp van interne pakketrepository's. De onderzoekers die het probleem hebben geïdentificeerd ze konden uw code uitvoeren op de interne servers van 35 bedrijven, waaronder PayPal, Microsoft, Apple, Netflix, Uber, Tesla en Shopify.

De hacks werden uitgevoerd als onderdeel van de Bug Bounty-programma's, in samenwerking met de aangevallen bedrijven, en de daders hebben al $ 130.000 aan bonussen ontvangen voor het identificeren van kwetsbaarheden.

De methode is gebaseerd op het feit dat veel bedrijven gebruiken standaard repository-afhankelijkheden van NPM, PyPI en RubyGems in hun interne applicaties, evenals interne afhankelijkheden die niet openbaar worden verspreid of gedownload vanuit hun eigen repositories.

Het probleem is dat pakketbeheerders zoals npm, pip en gem ze proberen de interne afhankelijkheden van de bedrijven te downloaden, zelfs uit de openbare repositories. Voor een aanval, definieer gewoon de namen van de pakketten met interne afhankelijkheden en maak uw eigen pakketten met dezelfde namen in de openbare repositories van NPM, PyPI en RubyGems.

Het probleem is niet specifiek voor NPM, PyPI en RubyGems, en manifesteert zich ook op andere systemen, zoals NuGet, Maven en Yarn.

Het idee voor de voorgestelde methode kwam nadat een onderzoeker per ongeluk had opgemerkt dat in openbaar beschikbare code die op GitHub werd gepost, veel bedrijven verwijderen de vermelding van aanvullende afhankelijkheden niet uit hun manifestbestanden gebruikt in interne projecten of bij het implementeren van uitgebreide functionaliteiten. Vergelijkbare sporen zijn gevonden in JavaScript-code voor webservices, evenals in de Node.JS-, Python- en Ruby-projecten van veel bedrijven.

De belangrijkste lekken hadden betrekking op de inbedding van de inhoud uit de package.json-bestanden in openbaar beschikbare JavaScript-code tijdens het bouwproces, evenals met het gebruik van daadwerkelijke padelementen in vereist () aanroepen, die kunnen worden gebruikt om namen van afhankelijkheden te beoordelen.

Het scannen van enkele miljoenen bedrijfsdomeinen leverde duizenden JavaScript-pakketnamen op die niet in de NPM-repository stonden. Nadat hij een database met interne pakketnamen had samengesteld, besloot de onderzoeker een experiment uit te voeren om de infrastructuur van bedrijven die deelnemen aan de Bug Bounty-programma's te hacken. De resultaten waren verrassend effectief en de onderzoeker kon zijn code op veel ontwikkelingscomputers en servers draaien die verantwoordelijk waren voor het bouwen of testen op basis van continue integratiesystemen.

Bij het downloaden van afhankelijkheden installeerden de pakketbeheerders npm, pip en gem voornamelijk pakketten uit de primaire openbare repositories NPM, PyPI en RubyGems, die als hogere prioriteit werden beschouwd.

De aanwezigheid van vergelijkbare pakketten met dezelfde namen in de opslagplaatsen van particuliere bedrijven werd genegeerd zonder enige waarschuwing te tonen of crashes te veroorzaken dat de aandacht van bestuurders zou kunnen trekken. In PyPI werd de downloadprioriteit beïnvloed door het versienummer (ongeacht de repository werd de meest recente versie van het pakket gedownload). In NPM en RubyGems was de prioriteit alleen afhankelijk van de repository.

De onderzoeker heeft pakketten in repositories van NPM, PyPI en RubyGems geplaatst die de namen van de gevonden interne afhankelijkheden kruisen, code toevoegen aan het script dat vóór de installatie wordt uitgevoerd (vooraf geïnstalleerd in NPM) om informatie over het systeem te verzamelen en de ontvangen informatie te verzenden naar de externe host.

Om informatie over het succes van de hack over te brengen, omzeilt u firewalls die extern verkeer blokkeren, de methode om geheime kanaalcommunicatie te organiseren via het DNS-protocol. De code die werd uitgevoerd, loste de host op in het aanvallende domein onder de controle van het aanvallende domein, waardoor informatie kon worden verzameld over succesvolle bewerkingen op de DNS-server. Informatie over host, gebruikersnaam en huidig ​​pad is doorgegeven.

75% van alle geregistreerde code-uitvoeringen waren geassocieerd met NPM-pakketdownloads, voornamelijk vanwege het feit dat er aanzienlijk meer interne JavaScript-modulenamen waren dan Python- en Ruby-afhankelijkheidsnamen.

bron: https://medium.com/


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Miguel Ángel Gatón
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.