Dependency Confusion

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Osnovne informacije

U suštini, ranjivost dependency confusion se javlja kada projekat koristi biblioteku sa pogrešno napisanim imenom, ne postoji ili sa nedefinisanim brojem verzije, a korišćeni repozitorijum dozvoljava da se prikupljaju ažurirane verzije iz javnih repozitorijuma.

  • Pogrešno napisano: Uvoziti reqests umesto requests

  • Ne postoji: Uvoziti company-logging, internu biblioteku koja više ne postoji

  • Nedefinisana verzija: Uvoziti internu postojeću biblioteku company-requests, ali repozitorijum proverava javne repozitorijume da vidi da li postoje veće verzije.

Eksploatacija

U svim slučajevima, napadač samo treba da objavi zlonamerni paket sa imenom biblioteka koje koristi kompanija žrtva.

Pogrešno napisano & Ne postoji

Ako vaša kompanija pokušava da uvozi biblioteku koja nije interna, veoma je verovatno da će repozitorijum biblioteka tražiti tu biblioteku u javim repozitorijumima. Ako je napadač kreirao tu biblioteku, vaš kod i mašine koje je pokreću su veoma verovatno kompromitovane.

Nedefinisana verzija

Veoma je često da developeri ne specificiraju nijednu verziju korištene biblioteke, ili specificiraju samo glavnu verziju. Tada, interpretator će 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 kreira biblioteku nazvanu requests (osim ako je originalni autor). Međutim, ako je biblioteka interna, kao što je requests-company u ovom primeru, ako repozitorijum biblioteke dozvoljava da proveri nove verzije i spolja, tražiće noviju verziju dostupnu javno. Dakle, ako napadač zna da kompanija koristi biblioteku requests-company 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.

AWS Popravka

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

Pronalaženje Ranjivih Biblioteka

U originalnom postu o dependency confusion autor je pretraživao hiljade izloženih package.json fajlova koji sadrže zavisnosti projekata u JavaScript-u.

Reference

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Last updated