# 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}}