Programvareforsyningskjedestrategier for å parere avhengighetsforvirringsangrep

Programvareforsyningskjedestrategier for å parere avhengighetsforvirringsangrep

Programvareforsyningskjedestrategier for å parere avhengighetsforvirring angriper PlatoBlockchain-dataintelligens. Vertikalt søk. Ai.

"Hva er i et navn? Den som vi kaller en rose med et hvilket som helst annet navn, ville lukte søtt.» Da Shakespeare skrev disse ordene (Romeo og Julie, Act 2, Scene 2) i 1596, sa han at et navn bare er en konvensjon. Det har ingen iboende betydning. Juliet elsker Romeo for den han er, ikke for navnet sitt.

Men uten å vite det, beskrev Shakespeare også avhengighetsforvirringsangrep.

Avhengighetsforvirring er når pakkene du bruker i koden din ikke er dine. De har samme navn, men det er ikke koden din som kjører i produksjon. Samme navn, men den ene pakken lukter rose og den andre … stinker.

Nyere forskningsrapporter anslår at 41 % til 49 % av organisasjonene er i faresonen for avhengighetsforvirringsangrep. Ny forskning fra OX Security viser at når en organisasjon står i fare for et avhengighetsforvirringsangrep, er 73 % av eiendelene sårbare. Forskningen fokuserte på mellomstore og store organisasjoner (1K+, 8K+, 80K+ ansatte) på tvers av et bredt spekter av sektorer – finans, spill, teknologi og media – og fant risikoen i alle sektorer på tvers av organisasjoner av alle størrelser. Forskningen fant også at nesten alle applikasjoner med mer enn 1 milliard brukere bruker avhengigheter som er sårbare for avhengighetsforvirring.

Denne artikkelen tar sikte på å hjelpe deg å forstå avhengighetsforvirring og hvordan du kan forhindre det.

Dobbel, Dobbel

Avhengigheter (også kalt pakker) er byggesteinene i programvaren din. Vanligvis utfører disse programvaredelene, enten de er utviklet av hele lokalsamfunn eller i et selskap, en vanlig og nødvendig oppgave.

Pakkeadministratorer brukes ofte til å installere avhengigheter og holde dem oppdatert. De skanner offentlige og private registre etter navnet på pakken og velger alt annet likt det høyeste versjonsnummeret. Angripere drar nytte av dette ved å plassere en "dummy"-pakke i det offentlige registeret med samme navn, men høyere versjon.

Når en pakkebehandler kommer over to identiske pakker, en i et offentlig register og en i et privat register, forårsaker det forvirring - derav navnet "avhengighetsforvirring." Siden de to pakkene er identiske, vil lederen automatisk velge å installere den med en høyere versjon - i dette tilfellet angriperens ondsinnede pakke.

Dette gir kaprere en bakdør inn til programvaren din. Fra dette tidspunktet kan de utføre datainnbrudd, utføre tyveri av intellektuell eiendom og på annen måte kompromittere programvareforsyningskjeden. De kan også introdusere brudd på samsvar som vil utløse strenge regulatoriske straffer.

Slit og trøbbel

Det finnes ulike tilnærminger til et avhengighetsforvirringsangrep.

  • Navneavstand. Ved å laste opp et ondsinnet programvarebibliotek til et offentlig register – for eksempel Python Package Index (PyPI) eller JavaScripts npm register - det er navngitt tilsvarende til et pålitelig, internt brukt bibliotek, kan systemer som utelater en navnerom/URL-sjekk eller ikke tvinger henting fra et privat register, ved en feiltakelse trekke inn den skadelige koden. De nylig PyTorch-avhengighetsforvirringshendelse er et slikt eksempel.
  • DNS-spoofing. Ved å bruke en teknikk som DNS-spoofing, kan systemer ledes til å trekke avhengigheter fra ondsinnede depoter mens de viser det som ser ut som legitime interne URL-er/baner.
  • Skripting. Ved å endre bygg/installer skript eller kontinuerlig integrasjon/kontinuerlig leveranse (CI/CD) rørledningskonfigurasjoner, kan systemer lures til å laste ned programvareavhengigheter fra en ondsinnet kilde i stedet for et lokalt depot.

Ting gjort godt og med omhu

For å beskytte mot avhengighetsforvirring, innfør disse praksisene.

  • Angi retningslinjer i pakkebehandlingen. Ikke tillat pakkeadministratorer å prioritere en offentlig pakke fremfor en privat pakke.
  • Inkluder alltid en .npmrc-fil. Hvis du bruker den populære NPM som pakkebehandling, må du alltid inkludere en .npmrc-fil som spesifiserer hvor du skal hente pakker under et spesifikt organisasjonsomfang.
  • Reserver pakkenavn i et offentlig register. En annen måte å beskytte mot avhengighetsforvirringsangrep er å reservere pakkenavnet i et offentlig register slik at kaprere ikke kan bruke det og derfor ikke kan "lure" pakkebehandleren til å installere en ondsinnet pakke.

For å fullstendig beskytte mot avhengighetsforvirringsangrep, bør organisasjoner alltid bruke organisasjonsomfang for alle interne pakker, selv når du publiserer til ditt interne register. Organisasjonsomfang bør også registreres i NPMs offentlige register, og dermed forhindre at noen kaprer omfanget og utnytter forvirringen.

Pakkenavn bør også registreres offentlig. Hvis en organisasjon bruker den populære PIP som pakkebehandler for Python-avhengigheter, for eksempel, bør den lage interne pakker med et strengt suffiks som er gjenkjennelig og vil fungere på tvers av alle prosjekter. Last opp en tom pakke med samme navn til det offentlige registeret PyPI som plassholder.

En annen grunn til å reservere pakkenavnet i et offentlig register er fordi hvis noen andre reserverer det (med ondsinnethet eller ikke), vil utviklere måtte endre alle pakkenavn i det private registeret til et som ennå ikke er reservert i det offentlige registeret. Dette kan være en lang og kjedelig prosess.

Det er viktig å merke seg at ikke alle pakkeregistre tillater brukere å reservere pakkenavn, så sørg for at du finner en som gjør det.

Utgang, forfulgt av en bjørn

Avhengighetsforvirringsangrep utgjør en alvorlig og overhengende cybersikkerhetstrussel for organisasjoner globalt. Omtrent halvparten av alle organisasjoner er utsatt, og 73 % av disse organisasjonenes eiendeler er utsatt. For å motvirke denne økende trusselen, må organisasjoner implementere robuste forebyggende tiltak og vedta beste praksis for cybersikkerhet.

Shakespeares roser kan ha forutsagt risikoen for avhengighetsforvirringsangrep i hundrevis av år, men et annet sitat fra Bard kan ha noe visdom for å beskytte mot dem: "La hvert øye forhandle for seg selv og stol på ingen agent." (Much Ado About Nothing, Act 2, Scene 1)

Tidstempel:

Mer fra Mørk lesning