hacktricks/pentesting-web/dependency-confusion.md

65 lines
5.5 KiB
Markdown
Raw Normal View History

2022-11-29 16:54:14 +00:00
# Dependency Confusion
<details>
2024-02-10 13:11:20 +00:00
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-11-29 16:54:14 +00:00
2024-02-10 13:11:20 +00:00
* Da li radite u **cybersecurity kompaniji**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks-u**? Ili želite da imate pristup **najnovijoj verziji PEASS-a ili preuzmete HackTricks u PDF formatu**? Proverite [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitter-u** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na [hacktricks repo](https://github.com/carlospolop/hacktricks) i [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
2022-11-29 16:54:14 +00:00
</details>
2024-02-10 13:11:20 +00:00
## Osnovne informacije
2022-11-29 16:54:14 +00:00
2024-02-10 13:11:20 +00:00
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.
2022-11-29 16:54:14 +00:00
2024-02-10 13:11:20 +00:00
* **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**.
2022-11-29 16:54:14 +00:00
2024-02-10 13:11:20 +00:00
## Eksploatacija
2022-11-29 16:54:14 +00:00
{% hint style="warning" %}
2024-02-10 13:11:20 +00:00
U svim slučajevima, napadaču je dovoljno da objavi **zlonamerni paket sa imenom** biblioteka koje koristi kompanija žrtva.
2022-11-29 16:54:14 +00:00
{% endhint %}
2024-02-10 13:11:20 +00:00
### Pogrešno napisano & Ne-postojeće
2022-11-29 16:54:14 +00:00
2024-02-10 13:11:20 +00:00
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.
2022-11-29 16:54:14 +00:00
2024-02-10 13:11:20 +00:00
### Nedefinisana verzija
2022-11-29 16:54:14 +00:00
2024-02-10 13:11:20 +00:00
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**.
2022-11-29 16:54:14 +00:00
2024-02-10 13:11:20 +00:00
## AWS Popravka
2022-11-29 16:54:14 +00:00
2024-02-10 13:11:20 +00:00
Ova ranjivost je pronađena u AWS **CodeArtifact-u** (pročitajte [**detalje u ovom blog postu**](https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d)).\
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.
2022-11-29 16:54:14 +00:00
2024-02-10 13:11:20 +00:00
## Pronalaženje Ranjivih Biblioteka
2022-11-29 16:54:14 +00:00
2024-02-10 13:11:20 +00:00
U [**originalnom postu o dependency confusion-u**](https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610) autor je pretraživao hiljade izloženih package.json fajlova koji sadrže zavisnosti projekata u JavaScript-u.
2022-11-29 16:54:14 +00:00
2024-02-10 13:11:20 +00:00
## Reference
2022-11-29 16:54:14 +00:00
* [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)
<details>
2024-02-10 13:11:20 +00:00
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-11-29 16:54:14 +00:00
2024-02-10 13:11:20 +00:00
* Da li radite u **cybersecurity kompaniji**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks-u**? Ili želite da imate pristup **najnovijoj verziji PEASS-a ili preuzmete HackTricks u PDF formatu**? Proverite [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitter-u** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na [hacktricks repo](https://github.com/carlospolop/hacktricks) i [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
2022-11-29 16:54:14 +00:00
</details>