Dependency Confusion

Support HackTricks

Basic Information

Ukratko, ranjivost zavisnosti se javlja kada projekat koristi biblioteku sa pogrešno napisanim imenom, nepostojećom ili sa neodređenom verzijom i korišćeni repozitorij zavisnosti omogućava da se prikupe ažurirane verzije iz javnih repozitorija.

  • Pogrešno napisano: Uvoz reqests umesto requests

  • Nepostojeće: Uvoz company-logging, interne biblioteke koja više ne postoji

  • Neodređena verzija: Uvoz interne postojeće company-requests biblioteke, ali repozitorij proverava javne repozitorije da vidi da li postoje veće verzije.

Exploitation

U svim slučajevima napadaču je potrebno samo da objavi zloćudni paket sa imenom biblioteka koje koristi žrtvinska kompanija.

Misspelled & Inexistent

Ako vaša kompanija pokušava da uvozi biblioteku koja nije interna, vrlo verovatno će repozitorij biblioteka tražiti u javnim repozitorijima. Ako je napadač to stvorio, vaš kod i mašine koje rade su vrlo verovatno kompromitovani.

Unspecified Version

Veoma je uobičajeno da programeri ne specificiraju nijednu verziju korišćene biblioteke, ili specificiraju samo glavnu verziju. Tada će interpreter pokušati da preuzme najnoviju verziju koja odgovara tim zahtevima. Ako je biblioteka poznata spoljna biblioteka (kao što je python requests), napadač ne može mnogo da uradi, jer neće moći da stvori biblioteku pod imenom requests (osim ako nije originalni autor). Međutim, ako je biblioteka interna, kao što je requests-company u ovom primeru, ako repo biblioteke dozvoljava da se proveravaju nove verzije i spolja, tražiće noviju verziju koja je javno dostupna. Dakle, ako napadač zna da kompanija koristi requests-company biblioteku verzija 1.0.1 (dozvoljava manje ažuriranja). Može objaviti biblioteku requests-company verzija 1.0.2 i kompanija će koristiti tu biblioteku umesto interne.

AWS Fix

Ova ranjivost je pronađena u AWS CodeArtifact (pročitajte detalje u ovom blog postu). AWS je to ispravio omogućavajući da se specificira da li je biblioteka interna ili eksterna, kako bi se izbeglo preuzimanje internih zavisnosti iz spoljnih repozitorija.

Finding Vulnerable Libraries

U originalnom postu o zavisničkoj konfuziji autor je pretraživao hiljade izloženih package.json fajlova koji sadrže zavisnosti javascript projekata.

References

Support HackTricks

Last updated