Software Supply Chain-strategieën om afhankelijkheidsverwarringsaanvallen te pareren

Software Supply Chain-strategieën om afhankelijkheidsverwarringsaanvallen te pareren

Software Supply Chain-strategieën om afhankelijkheidsverwarringsaanvallen te pareren PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

"Wat zit er in een naam? Dat wat wij een roos noemen, met een andere naam, zou net zo zoet ruiken.’ Toen Shakespeare deze woorden (Romeo en Julia, Act 2, Scene 2) in 1596 schreef, zei hij dat een naam slechts een conventie is. Het heeft geen intrinsieke betekenis. Julia houdt van Romeo om wie hij is, niet om zijn naam.

Maar zonder het te weten beschreef Shakespeare ook aanvallen op afhankelijkheidsverwarring.

Er is sprake van afhankelijkheidsverwarring wanneer pakketten die u in uw code gebruikt, niet van u zijn. Ze hebben dezelfde naam, maar het is niet jouw code die in productie wordt uitgevoerd. Dezelfde naam, maar het ene pakje ruikt naar roos en het andere... stinkt.

Recente onderzoeksrapporten schatten dat 41% tot 49% van de organisaties risico loopt op afhankelijkheidsverwarringsaanvallen. Uit nieuw onderzoek van OX Security blijkt dat wanneer een organisatie risico loopt op een afhankelijkheidsverwarringsaanval, 73% van haar activa kwetsbaar is. Het onderzoek richtte zich op middelgrote en grote organisaties (1K+, 8K+, 80K+ werknemers) in een breed scala van sectoren – financiën, gaming, technologie en media – en ontdekten de risico’s in elke sector bij organisaties van elke omvang. Uit het onderzoek bleek ook dat bijna alle applicaties met meer dan 1 miljard gebruikers afhankelijkheden gebruiken die kwetsbaar zijn voor verwarring over afhankelijkheid.

Dit artikel is bedoeld om u te helpen verwarring over afhankelijkheid te begrijpen en hoe u deze kunt voorkomen.

Dubbel dubbel

Afhankelijkheden (ook wel pakketten genoemd) zijn de bouwstenen van uw software. Meestal voeren deze stukjes software, of ze nu door hele gemeenschappen of binnen een bedrijf zijn ontwikkeld, een gemeenschappelijke en noodzakelijke taak uit.

Pakketbeheerders worden vaak gebruikt om afhankelijkheden te installeren en up-to-date te houden. Ze scannen publieke en private registers op de naam van het pakket en selecteren, als alle andere zaken gelijk blijven, het hoogste versienummer. Aanvallers profiteren hiervan door een “dummy”-pakket met dezelfde naam maar een hogere versie in het openbare register te plaatsen.

Wanneer een pakketbeheerder twee identieke pakketten tegenkomt, één in een openbaar register en één in een privéregister, veroorzaakt dit verwarring – vandaar de naam ‘afhankelijkheidsverwarring’. Omdat de twee pakketten identiek zijn, zal de beheerder er automatisch voor kiezen om het pakket met een hogere versie te installeren - in dit geval het kwaadaardige pakket van de aanvaller.

Dit geeft kapers een achterdeur naar uw software. Vanaf dit punt kunnen ze datalekken plegen, intellectuele eigendomsdiefstal plegen en op andere wijze de vertrouwensketen van software in gevaar brengen. Ze kunnen ook overtredingen van de naleving introduceren die tot strenge wettelijke boetes kunnen leiden.

Pijn en moeite

Er zijn verschillende benaderingen voor een afhankelijkheidsverwarringsaanval.

  • Naamafstand. Door een kwaadaardige softwarebibliotheek te uploaden naar een openbaar register, zoals de Python Package Index (PyPI) of JavaScript npm-register - dat is op dezelfde manier genoemd naar een vertrouwde, intern gebruikte bibliotheek kunnen systemen die een naamruimte-/URL-controle achterwege laten of het ophalen uit een privéregister niet forceren, per ongeluk de schadelijke code binnenhalen. De recent PyTorch-afhankelijkheidsverwarringsincident is zo'n voorbeeld.
  • DNS-spoofing. Door een techniek als DNS-spoofing te gebruiken, kunnen systemen ertoe worden aangezet afhankelijkheden uit kwaadaardige repository's te halen en tegelijkertijd legitieme interne URL's/paden weer te geven.
  • Scripten. Door build-/install-scripts aan te passen of continue integratie/continue levering (CI/CD) pijplijnconfiguraties kunnen systemen ertoe worden verleid software-afhankelijkheden te downloaden van een kwaadaardige bron in plaats van uit een lokale opslagplaats.

Dingen goed en met zorg gedaan

Om u te beschermen tegen verwarring door afhankelijkheid, voert u deze praktijken in.

  • Stel beleid in in pakketbeheer. Zorg ervoor dat pakketbeheerders geen prioriteit kunnen geven aan een openbaar pakket boven een privépakket.
  • Voeg altijd een .npmrc-bestand toe. Als u de populaire NPM als pakketbeheerder gebruikt, neem dan altijd een .npmrc-bestand op dat specificeert waar pakketten binnen een specifiek organisatiebereik moeten worden opgehaald.
  • Reserveer de pakketnaam in een openbaar register. Een andere manier om je te beschermen tegen aanvallen door afhankelijkheidsverwarring is door de pakketnaam in een openbaar register te reserveren, zodat kapers deze niet kunnen gebruiken en daarom de pakketbeheerder niet kunnen “verleiden” om een ​​kwaadaardig pakket te installeren.

Om zich volledig te beschermen tegen aanvallen op afhankelijkheidsverwarring moeten organisaties altijd gebruik maken van organisatiebereiken voor alle interne pakketten, zelfs wanneer u naar uw interne register publiceert. Organisatiescopes moeten ook worden geregistreerd in het openbare register van NPM, zodat niemand de scope kan kapen en misbruik kan maken van de verwarring.

Pakketnamen moeten ook openbaar worden geregistreerd. Als een organisatie de populaire PIP bijvoorbeeld gebruikt als pakketbeheerder voor Python-afhankelijkheden, moet deze interne pakketten maken met een strikt achtervoegsel dat herkenbaar is en voor alle projecten werkt. Upload een leeg pakket met dezelfde naam naar het openbare register PyPI als tijdelijke aanduiding.

Een andere reden om de pakketnaam in een openbaar register te reserveren is omdat als iemand anders deze reserveert (kwaadwillig of niet), ontwikkelaars alle pakketnamen in het privéregister zullen moeten veranderen in een naam die nog moet worden gereserveerd in het openbare register. Dit kan een lang en moeizaam proces zijn.

Het is belangrijk op te merken dat niet alle pakketregisters gebruikers toestaan ​​pakketnamen te reserveren, dus zorg ervoor dat u er een vindt die dat wel doet.

Exit, achtervolgd door een beer

Afhankelijkheidsverwarringsaanvallen vormen een ernstige en dreigende cyberveiligheidsdreiging voor organisaties over de hele wereld. Ongeveer de helft van alle organisaties loopt risico en 73% van de activa van die organisaties is blootgesteld. Om deze groeiende dreiging het hoofd te bieden, moeten organisaties robuuste preventieve maatregelen implementeren en best practices op het gebied van cyberbeveiliging toepassen.

De rozen van Shakespeare hebben misschien al honderden jaren het risico van afhankelijkheidsverwarring voorspeld, maar een ander citaat van de bard kan enige wijsheid bevatten om ertegen te beschermen: “Laat ieder oog voor zichzelf onderhandelen en vertrouw geen enkele agent.” (Veel ophef om niets, tweede bedrijf, scène 2)

Tijdstempel:

Meer van Donkere lezing