# Dependency Confusion {% hint style="success" %} Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %}
{% embed url="https://websec.nl/" %} ## 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`** 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**. ## Exploitation {% hint style="warning" %} U svim slučajevima napadaču je potrebno samo da objavi **zloćudni paket sa imenom** biblioteka koje koristi žrtvinska kompanija. {% endhint %} ### 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**](https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d)).\ 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**](https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610) 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://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610) * [https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d](https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d)
{% embed url="https://websec.nl/" %} {% hint style="success" %} Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %}