Dependency Confusion

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Основна інформація

Узагальнюючи, вразливість залежностей виникає, коли проект використовує бібліотеку з помилковим написанням, неіснуючою або з невказаною версією, а репозиторій використованих залежностей дозволяє збирати оновлені версії з публічних репозиторіїв.

  • Помилкове написання: Імпорт reqests замість requests

  • Неіснуюча: Імпорт company-logging, внутрішньої бібліотеки, яка більше не існує

  • Невказана версія: Імпорт внутрішньої існуючої бібліотеки company-requests, але репо перевіряє публічні репозиторії, щоб побачити, чи є новіші версії.

Експлуатація

У всіх випадках зловмиснику просто потрібно опублікувати шкідливий пакет з іменем використованих бібліотек компанії-жертви.

Помилкове написання та Неіснуюча

Якщо ваша компанія намагається імпортувати бібліотеку, яка не є внутрішньою, велика ймовірність того, що репозиторій бібліотек буде шукати її в публічних репозиторіях. Якщо зловмисник створив її, ваш код та машини, на яких він працює, велика ймовірність, що будуть компрометовані.

Невказана версія

Дуже поширено, що розробники не вказують жодної версії використовуваної бібліотеки, або вказують лише головну версію. Потім інтерпретатор спробує завантажити останню версію, яка відповідає цим вимогам. Якщо бібліотека є відомою зовнішньою бібліотекою (наприклад, python requests), зловмисник не може зробити багато, оскільки він не зможе створити бібліотеку з іменем requests (якщо він не є оригінальним автором). Однак, якщо бібліотека є внутрішньою, як requests-company у цьому прикладі, якщо репозиторій бібліотеки дозволяє перевіряти також зовнішні нові версії, він буде шукати новішу версію, яка доступна публічно. Таким чином, якщо зловмисник знає, що компанія використовує бібліотеку requests-company версії 1.0.1 (дозволяється мінорні оновлення), він може опублікувати бібліотеку requests-company версії 1.0.2, і компанія використовуватиме цю бібліотеку замість внутрішньої.

Виправлення AWS

Цю вразливість виявлено в AWS CodeArtifact (читайте деталі в цьому блозі). AWS виправила це, дозволяючи вказувати, чи є бібліотека внутрішньою чи зовнішньою, щоб уникнути завантаження внутрішніх залежностей зовнішніми репозиторіями.

Пошук вразливих бібліотек

У оригінальному пості про вразливість залежностей автор шукав тисячі викладених файлів package.json, що містять залежності проектів на JavaScript.

Посилання

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Last updated