hacktricks/pentesting-web/dependency-confusion.md

80 lines
7.6 KiB
Markdown
Raw Normal View History

# Змішування залежностей
{% hint style="success" %}
Вивчайте та практикуйте AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-11-29 16:54:14 +00:00
<details>
<summary>Підтримайте HackTricks</summary>
2022-11-29 16:54:14 +00:00
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
2022-11-29 16:54:14 +00:00
</details>
{% endhint %}
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
2022-11-29 16:54:14 +00:00
2024-03-29 18:49:46 +00:00
## Основна інформація
2022-11-29 16:54:14 +00:00
У підсумку, вразливість змішування залежностей виникає, коли проект використовує бібліотеку з **неправильно написаною** назвою, **неіснуючою** або з **непозначеною версією**, а використовуваний репозиторій залежностей дозволяє **збирати оновлені версії з публічних** репозиторіїв.
2022-11-29 16:54:14 +00:00
* **Неправильно написана**: Імпорт **`reqests`** замість `requests`
2024-03-29 18:49:46 +00:00
* **Неіснуюча**: Імпорт `company-logging`, внутрішньої бібліотеки, яка **більше не існує**
* **Непозначена версія**: Імпорт **внутрішньої** **існуючої** бібліотеки `company-requests`, але репозиторій перевіряє **публічні репозиторії**, щоб дізнатися, чи є **новіші версії**.
2022-11-29 16:54:14 +00:00
2024-03-29 18:49:46 +00:00
## Експлуатація
2022-11-29 16:54:14 +00:00
{% hint style="warning" %}
У всіх випадках атакуючому потрібно лише опублікувати **шкідливий пакет з назвою** бібліотек, які використовує компанія-жертва.
2022-11-29 16:54:14 +00:00
{% endhint %}
### Неправильно написані та неіснуючі
2022-11-29 16:54:14 +00:00
Якщо ваша компанія намагається **імпортувати бібліотеку, яка не є внутрішньою**, ймовірно, репозиторій бібліотек буде шукати її в **публічних репозиторіях**. Якщо атакуючий створив її, ваш код і машини, що працюють, ймовірно, будуть скомпрометовані.
2022-11-29 16:54:14 +00:00
### Непозначена версія
2022-11-29 16:54:14 +00:00
Досить поширено, що розробники **не вказують жодну версію** використовуваної бібліотеки або вказують лише **основну версію**. Тоді інтерпретатор спробує завантажити **остання версію**, що відповідає цим вимогам.\
Якщо бібліотека є **відомою зовнішньою бібліотекою** (як python `requests`), атакуючий **не може багато зробити**, оскільки він не зможе створити бібліотеку з назвою `requests` (якщо він не є оригінальним автором).\
Однак, якщо бібліотека є **внутрішньою**, як `requests-company` в цьому прикладі, якщо **репозиторій бібліотеки** дозволяє **перевіряти нові версії також зовні**, він буде шукати новішу версію, доступну публічно.\
Отже, якщо **атакуючий знає**, що компанія використовує бібліотеку `requests-company` **версії 1.0.1** (дозволяє незначні оновлення). Він може **опублікувати** бібліотеку `requests-company` **версії 1.0.2**, і компанія буде **використовувати цю бібліотеку замість** внутрішньої.
2022-11-29 16:54:14 +00:00
2024-03-29 18:49:46 +00:00
## Виправлення AWS
2022-11-29 16:54:14 +00:00
Цю вразливість було виявлено в AWS **CodeArtifact** (читайте [**деталі в цьому блозі**](https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d)).\
AWS виправив це, дозволивши вказувати, чи є бібліотека внутрішньою чи зовнішньою, щоб уникнути завантаження внутрішніх залежностей з зовнішніх репозиторіїв.
2022-11-29 16:54:14 +00:00
2024-03-29 18:49:46 +00:00
## Пошук вразливих бібліотек
2022-11-29 16:54:14 +00:00
В [**оригінальному пості про змішування залежностей**](https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610) автор шукав тисячі відкритих файлів package.json, що містять залежності проектів на JavaScript.
2022-11-29 16:54:14 +00:00
2024-03-29 18:49:46 +00:00
## Посилання
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)
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
{% hint style="success" %}
Вивчайте та практикуйте AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-11-29 16:54:14 +00:00
<details>
<summary>Підтримайте HackTricks</summary>
2022-11-29 16:54:14 +00:00
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
2022-11-29 16:54:14 +00:00
</details>
{% endhint %}