hacktricks/src/pentesting-web/dependency-confusion.md

46 lines
3.0 KiB
Markdown

# Dependency Confusion
{{#include ../banners/hacktricks-training.md}}
## Basic Information
Kwa muhtasari, udhaifu wa kutatanisha utegemezi hutokea wakati mradi unatumia maktaba yenye jina la **kosa**, **lisilokuwepo** au yenye **toleo lisilobainishwa** na hifadhi ya utegemezi inayotumika inaruhusu **kusanya toleo zilizosasishwa kutoka kwa** hifadhi za umma.
- **Kosa**: Ingiza **`reqests`** badala ya `requests`
- **Lisilokuwepo**: Ingiza `company-logging`, maktaba ya ndani ambayo **haipo tena**
- **Toleo lisilobainishwa**: Ingiza maktaba ya **ndani** **iliyopo** `company-requests`, lakini ukaguzi wa repo **huchunguza hifadhi za umma** kuona kama kuna **matoleo makubwa zaidi**.
## Exploitation
> [!WARNING]
> Katika hali zote mshambuliaji anahitaji tu kuchapisha **kifurushi chenye uharibifu chenye jina** la maktaba zinazotumiwa na kampuni ya mwathirika.
### Misspelled & Inexistent
Ikiwa kampuni yako inajaribu **kuingiza maktaba ambayo si ya ndani**, kuna uwezekano mkubwa hifadhi ya maktaba itakuwa ikitafuta katika **hifadhi za umma**. Ikiwa mshambuliaji ameunda, msimbo wako na mashine zinazotumia ni uwezekano mkubwa zitakuwa zimeathiriwa.
### Unspecified Version
Ni kawaida kwa wabunifu **kutobainisha toleo lolote** la maktaba inayotumika, au kubainisha tu **toleo kuu**. Kisha, mfasiri atajaribu kupakua **toleo la hivi karibuni** linalofaa mahitaji hayo.\
Ikiwa maktaba ni **maktaba ya nje inayojulikana** (kama python `requests`), **mshambuliaji hawezi kufanya mengi**, kwani hatoweza kuunda maktaba inayoitwa `requests` (isipokuwa yeye ni mwandishi wa asili).\
Hata hivyo, ikiwa maktaba ni **ya ndani**, kama `requests-company` katika mfano huu, ikiwa **repo ya maktaba** inaruhusu **kuangalia matoleo mapya pia kwa nje**, itatafuta toleo jipya linalopatikana hadharani.\
Hivyo ikiwa **mshambuliaji anajua** kwamba kampuni inatumia maktaba ya `requests-company` **toleo 1.0.1** (kuruhusu masasisho madogo). Anaweza **kuchapisha** maktaba `requests-company` **toleo 1.0.2** na kampuni itatumia **maktaba hiyo badala** ya ile ya ndani.
## AWS Fix
Udhaifu huu ulipatikana katika AWS **CodeArtifact** (soma [**maelezo katika chapisho hili la blog**](https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d)).\
AWS ilirekebisha hili kwa kuruhusu kubainisha ikiwa maktaba ni ya ndani au ya nje, ili kuepuka kupakua utegemezi wa ndani kutoka kwa hifadhi za nje.
## Finding Vulnerable Libraries
Katika [**chapisho la asili kuhusu kutatanisha utegemezi**](https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610) mwandishi alitafuta maelfu ya faili za package.json zilizofichuliwa zinazohusisha utegemezi wa mradi wa javascript.
## 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)
{{#include ../banners/hacktricks-training.md}}