Dependency Confusion
Reading time: 3 minutes
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
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 prikupljanje ažuriranih verzija iz javnih repozitorija.
- Pogrešno napisano: Uvoz
reqests
umestorequests
- 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
warning
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 kompromitovane.
Unspecified Version
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 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 repozitorij biblioteka 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 eksternih repozitorija.
Finding Vulnerable Libraries
U originalnom postu o zavisnosti konfuzije autor je pretraživao hiljade izloženih package.json fajlova koji sadrže zavisnosti javascript projekata.
References
- https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610
- https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.