Dependency Confusion
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
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 prikupljanje ažuriranih verzija 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.
U svim slučajevima napadaču je potrebno samo da objavi zloćudni paket sa imenom biblioteka koje koristi žrtvinska kompanija.
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 kompromitovane.
Veoma je uobičajeno da programeri ne specificiraju nijednu verziju korišćene biblioteke, ili da 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 učiniti, 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 verziju 1.0.1 (dozvoljava manje ažuriranja). Može objaviti biblioteku requests-company
verziju 1.0.2 i kompanija će koristiti tu biblioteku umesto interne.
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.
U originalnom postu o zavisničkoj konfuziji autor je pretraživao hiljade izloženih package.json fajlova koji sadrže zavisnosti javascript projekata.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)