Software Supply Chain-strategier til at parere afhængighedsforvirringsangreb

Software Supply Chain-strategier til at parere afhængighedsforvirringsangreb

Software Supply Chain Strategies to Parry Dependency Confusion Attacks PlatoBlockchain Data Intelligence. Vertical Search. Ai.

"Hvad er i et navn? Det, som vi kalder en rose ved et hvilket som helst andet navn, ville lugte sødt." Da Shakespeare skrev disse ord (Romeo og Julie, Act 2, Scene 2) i 1596, sagde han, at et navn bare er en konvention. Det har ingen iboende betydning. Juliet elsker Romeo for den han er, ikke for sit navn.

Men uden at vide det, beskrev Shakespeare også afhængighedsforvirringsangreb.

Afhængighedsforvirring er, når pakker, du bruger i din kode, ikke er dine. De har samme navn, men det er ikke din kode, der kører i produktionen. Samme navn, men den ene pakke lugter af en rose og den anden … stinker.

Nylige forskningsrapporter anslår, at 41 % til 49 % af organisationerne er i risiko for afhængighedsforvirringsangreb. Ny forskning fra OX Security viser, at når en organisation er i fare for et afhængighedsforvirringsangreb, er 73 % af dens aktiver sårbare. Forskningen fokuserede på mellemstore og store organisationer (1K+, 8K+, 80K+ ansatte) på tværs af en bred vifte af sektorer - finans, spil, teknologi og medier - og fandt risikoen i enhver sektor på tværs af organisationer af alle størrelser. Forskningen fandt også, at næsten alle applikationer med mere end 1 milliard brugere bruger afhængigheder, der er sårbare over for afhængighedsforvirring.

Denne artikel har til formål at hjælpe dig med at forstå afhængighedsforvirring, og hvordan du kan forhindre det.

Dobbelt, dobbelt

Afhængigheder (også kaldet pakker) er byggestenene i din software. Typisk udfører disse stykker software, uanset om de er udviklet af hele samfund eller inden for en virksomhed, en fælles og nødvendig opgave.

Pakkeadministratorer bruges ofte til at installere afhængigheder og holde dem opdaterede. De scanner offentlige og private registre for pakkens navn og vælger alt andet lige det højeste versionsnummer. Angribere udnytter dette ved at placere en "dummy"-pakke i det offentlige register med samme navn, men en højere version.

Når en pakkeadministrator støder på to identiske pakker, en i et offentligt register og en i et privat register, forårsager det forvirring - deraf navnet "afhængighedsforvirring." Da de to pakker er identiske, vil administratoren automatisk vælge at installere den med en højere version i dette tilfælde angriberens ondsindede pakke.

Dette giver flykaprere en bagdør til din software. Fra dette tidspunkt kan de udføre databrud, udføre tyveri af intellektuel ejendom og på anden måde kompromittere softwareforsyningskæden. De kan også indføre overtrædelser af overholdelse, der vil udløse alvorlige reguleringsmæssige sanktioner.

Slid og besvær

Der er forskellige tilgange til et afhængighedsforvirringsangreb.

  • Navneafstand. Ved at uploade et ondsindet softwarebibliotek til et offentligt register - såsom Python Package Index (PyPI) eller JavaScript's npm registreringsdatabasen - det er navngivet tilsvarende til et betroet, internt brugt bibliotek, kan systemer, der udelader et navneområde/URL-tjek eller ikke tvinger hentning fra et privat register, ved en fejl trække den ondsindede kode ind. Det nylig PyTorch-afhængighedsforvirringshændelse er et sådant eksempel.
  • DNS-spoofing. Ved at bruge en teknik som DNS-spoofing kan systemer dirigeres til at trække afhængigheder fra ondsindede lagre, mens de viser, hvad der ligner legitime interne URL'er/stier.
  • Scripting. Ved at ændre build/install scripts eller kontinuerlig integration/kontinuerlig levering (CI/CD) pipeline-konfigurationer, kan systemer narre til at downloade softwareafhængigheder fra en ondsindet kilde i stedet for et lokalt lager.

Ting gjort godt og med omhu

For at beskytte mod afhængighedsforvirring, indled disse praksisser.

  • Indstil politikker i pakkehåndteringen. Tillad pakkeadministratorer at prioritere en offentlig pakke frem for en privat pakke.
  • Inkluder altid en .npmrc-fil. Hvis du bruger den populære NPM som pakkehåndtering, skal du altid inkludere en .npmrc-fil, der angiver, hvor pakker skal hentes under et specifikt organisationsomfang.
  • Reserver pakkenavn i et offentligt register. En anden måde at beskytte mod afhængighedsforvirringsangreb er at reservere pakkenavnet i et offentligt register, så flykaprere ikke kan bruge det og derfor ikke kan "narre" pakkeadministratoren til at installere en ondsindet pakke.

For fuldt ud at beskytte mod afhængighedsforvirringsangreb bør organisationer altid bruge organisationsomfang for alle interne pakker, selv når du udgiver til dit interne register. Organisation scopes bør også registreres i NPM's offentlige register, hvilket forhindrer nogen i at kapre scopes og drage fordel af forvirringen.

Pakkenavne bør også registreres offentligt. Hvis en organisation bruger den populære PIP som pakkemanager for Python-afhængigheder, for eksempel, bør den oprette interne pakker med et strengt suffiks, der er genkendeligt og vil fungere på tværs af alle projekter. Upload en tom pakke med samme navn til det offentlige register PyPI som en pladsholder.

En anden grund til at reservere pakkenavnet i et offentligt register er, at hvis en anden reserverer det (med ondskab eller ej), bliver udviklere nødt til at ændre alle pakkenavne i det private register til et, der endnu ikke er reserveret i det offentlige register. Dette kan være en lang og kedelig proces.

Det er vigtigt at bemærke, at ikke alle pakkeregistre tillader brugere at reservere pakkenavne, så sørg for at finde et, der gør.

Udgang, forfulgt af en bjørn

Afhængighedsforvirringsangreb udgør en alvorlig og overhængende cybersikkerhedstrussel mod organisationer globalt. Omkring halvdelen af ​​alle organisationer er i fare, og 73 % af disse organisationers aktiver er eksponerede. For at imødegå denne voksende trussel skal organisationer implementere robuste forebyggende foranstaltninger og vedtage bedste praksis for cybersikkerhed.

Shakespeares roser kan have forudsagt risikoen for afhængighedsforvirringsangreb i hundreder af år, men et andet citat fra Bard kan indeholde visdom til at beskytte mod dem: "Lad ethvert øje forhandle for sig selv og stol på ingen agent." (Much Ado About Nothing, Act 2, Scene 1)

Tidsstempel:

Mere fra Mørk læsning