Software Supply Chain Strategier för att parera beroendeförvirringsattacker

Software Supply Chain Strategier för att parera beroendeförvirringsattacker

Programvaruförsörjningskedjastrategier för att parera beroendeförvirring attackerar PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

"Vad finns i ett namn? Det som vi kallar en ros med vilket annat namn som helst skulle lukta sött.” När Shakespeare skrev dessa ord (Romeo och Julia, Akt 2, Scen 2) 1596, sa han att ett namn bara är en konvention. Det har ingen inneboende betydelse. Juliet älskar Romeo för den han är, inte för sitt namn.

Men utan att veta om det beskrev Shakespeare också beroendeförvirringsattacker.

Beroendeförvirring är när paket du använder i din kod inte är dina. De har samma namn, men det är inte din kod som körs i produktionen. Samma namn, men det ena paketet luktar ros och det andra … stinker.

Nya forskningsrapporter uppskattar att 41 % till 49 % av organisationerna löper risk för beroendeförvirringsattacker. Ny forskning från OX Security visar att när en organisation är i riskzonen för en beroendeförvirringsattack är 73 % av dess tillgångar sårbara. Forskningen fokuserade på medelstora och stora organisationer (1K+, 8K+, 80K+ anställda) inom ett brett spektrum av sektorer – finans, spel, teknik och media – och hittade risken i alla sektorer i organisationer av alla storlekar. Forskningen fann också att nästan alla applikationer med mer än 1 miljard användare använder beroenden som är sårbara för beroendeförvirring.

Den här artikeln syftar till att hjälpa dig förstå beroendeförvirring och hur du kan förhindra det.

Dubbel, Dubbel

Beroenden (även kallade paket) är byggstenarna i din programvara. Vanligtvis utför dessa programvaror, oavsett om de är utvecklade av hela gemenskaper eller inom ett företag, en vanlig och nödvändig uppgift.

Pakethanterare används ofta för att installera beroenden och hålla dem uppdaterade. De skannar offentliga och privata register efter namnet på paketet och väljer, allt annat lika, det högsta versionsnumret. Angripare drar fördel av detta genom att placera ett "dummy"-paket i det offentliga registret med samma namn men högre version.

När en pakethanterare stöter på två identiska paket, ett i ett offentligt register och ett i ett privat register, orsakar det förvirring - därav namnet "beroendeförvirring." Eftersom de två paketen är identiska kommer chefen automatiskt välja att installera det med en högre version - i det här fallet angriparens skadliga paket.

Detta ger kapare en bakdörr till din programvara. Från denna punkt kan de utföra dataintrång, utföra stöld av immateriell egendom och på annat sätt äventyra programvarans försörjningskedja. De kan också införa överträdelser av efterlevnad som kommer att utlösa stränga regulatoriska påföljder.

Slit och besvär

Det finns olika tillvägagångssätt för en beroendeförvirringsattack.

  • Namnavstånd. Genom att ladda upp ett bibliotek med skadlig programvara till ett offentligt register — såsom Python Package Index (PyPI) eller JavaScripts npm-registret - det är heter liknande till ett pålitligt, internt använt bibliotek, kan system som utelämnar en namnområde/URL-kontroll eller inte tvingar hämtning från ett privat register av misstag dra in den skadliga koden. De senaste PyTorch-beroendeförvirringsincidenten är ett sådant exempel.
  • DNS-spoofing. Genom att använda en teknik som DNS-spoofing kan system styras till att dra beroenden från skadliga förråd samtidigt som de visar vad som ser ut som legitima interna webbadresser/sökvägar.
  • Skript. Genom att ändra bygg/installera skript eller kontinuerlig integration/kontinuerlig leverans (CI/CD) pipelinekonfigurationer, kan system luras att ladda ner mjukvaruberoenden från en skadlig källa snarare än ett lokalt arkiv.

Saker gjorda väl och med omsorg

För att skydda mot beroendeförvirring bör du införa dessa metoder.

  • Ställ in policyer i pakethanteraren. Tillåt inte pakethanterare att prioritera ett offentligt paket framför ett privat paket.
  • Inkludera alltid en .npmrc-fil. Om du använder den populära NPM som pakethanterare, inkludera alltid en .npmrc-fil som anger var paketen ska hämtas under specifik organisationsomfång.
  • Reservera paketnamn i ett offentligt register. Ett annat sätt att skydda mot beroendeförvirringsattacker är att reservera paketnamnet i ett offentligt register så att kapare inte kan använda det och därför inte kan "lura" pakethanteraren att installera ett skadligt paket.

För att fullt ut skydda mot beroendeförvirringsattacker bör organisationer alltid använda organisationsomfång för alla interna paket, även när du publicerar till ditt interna register. Organisation scopes bör också registreras i NPM:s offentliga register, vilket förhindrar att någon kapar scopes och drar fördel av förvirringen.

Paketnamn bör också registreras offentligt. Om en organisation använder den populära PIP som pakethanterare för Python-beroenden, till exempel, bör den skapa interna paket med ett strikt suffix som är igenkännbart och fungerar i alla projekt. Ladda upp ett tomt paket med samma namn till det offentliga registret PyPI som platshållare.

En annan anledning att reservera paketnamnet i ett offentligt register är att om någon annan reserverar det (med uppsåt eller inte), måste utvecklare ändra alla paketnamn i det privata registret till ett som ännu inte har reserverats i det offentliga registret. Detta kan vara en lång och omständlig process.

Det är viktigt att notera att inte alla paketregister tillåter användare att reservera paketnamn, så se till att du hittar ett som gör det.

Utgång, förföljd av en björn

Beroendeförvirringsattacker utgör ett allvarligt och överhängande cybersäkerhetshot för organisationer globalt. Ungefär hälften av alla organisationer är i riskzonen, och 73 % av dessa organisationers tillgångar är exponerade. För att motverka detta växande hot måste organisationer implementera robusta förebyggande åtgärder och anta bästa praxis för cybersäkerhet.

Shakespeares rosor kan ha förebådat risken för beroendeförvirringsattacker i hundratals år, men ett annat citat från Barden kan ha viss visdom för att skydda mot dem: "Låt varje öga förhandla för sig själv och lita på ingen agent." (Much Ado About Nothing, Akt 2, Scen 1)

Tidsstämpel:

Mer från Mörk läsning