Dependency Confusion
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2Fpentest.eu%2FRENDER_WebSec_10fps_21sec_9MB_29042024.gif&width=768&dpr=4&quality=100&sign=bc0743d1&sv=1)
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
umestorequests
Nepostojeće: Uvoz
company-logging
, interne biblioteke koja više ne postojiNeodređ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
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2Fpentest.eu%2FRENDER_WebSec_10fps_21sec_9MB_29042024.gif&width=768&dpr=4&quality=100&sign=bc0743d1&sv=1)
Last updated