Змішування залежностей

Reading time: 3 minutes

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Підтримайте HackTricks

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

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

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

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

warning

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

Неправильно написані та неіснуючі

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

Непозначена версія

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

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

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

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

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

Посилання

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Підтримайте HackTricks