hacktricks/pentesting-web/dependency-confusion.md
2024-02-10 13:11:20 +00:00

5.5 KiB

Dependency Confusion

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

Osnovne informacije

Ukratko, ranjivost dependency confusion se javlja kada projekat koristi biblioteku sa pogrešno napisanim imenom, ne-postojećom ili sa nedefinisanom verzijom, a korišćeni repozitorijum dozvoljava preuzimanje ažuriranih verzija iz javnih repozitorijuma.

  • Pogrešno napisano: Uvozite reqests umesto requests
  • Ne-postojeće: Uvozite company-logging, internu biblioteku koja više ne postoji
  • Nedefinisana verzija: Uvozite internu postojeću biblioteku company-requests, ali repozitorijum proverava javne repozitorijume da vidi da li postoje novije verzije.

Eksploatacija

{% hint style="warning" %} U svim slučajevima, napadaču je dovoljno da objavi zlonamerni paket sa imenom biblioteka koje koristi kompanija žrtva. {% endhint %}

Pogrešno napisano & Ne-postojeće

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

Nedefinisana verzija

Veoma je često da programeri ne definišu verziju biblioteke koju koriste, ili definišu samo glavnu verziju. Tada će interpreter pokušati da preuzme poslednju 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 sa nazivom requests (osim ako je originalni autor).
Međutim, ako je biblioteka interna, kao što je requests-company u ovom primeru, ako repozitorijum biblioteke dozvoljava proveru novih verzija i spolja, tražiće noviju verziju koja je javno dostupna.
Dakle, ako napadač zna da kompanija koristi biblioteku requests-company verzije 1.0.1 (dozvoljava manje ažuriranja), može objaviti biblioteku requests-company verzije 1.0.2 i kompanija će koristiti tu biblioteku umesto interne.

AWS Popravka

Ova ranjivost je pronađena u AWS CodeArtifact-u (pročitajte detalje u ovom blog postu).
AWS je ovo popravio tako što je omogućio da se specificira da li je biblioteka interna ili spoljna, kako bi se izbeglo preuzimanje internih zavisnosti iz spoljnih repozitorijuma.

Pronalaženje Ranjivih Biblioteka

U originalnom postu o dependency confusion-u 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)!