Dependency Confusion

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Podstawowe informacje

W skrócie, podatność na dependency confusion występuje, gdy projekt używa biblioteki z błędnie napisaną nazwą, nieistniejącą lub z nieokreśloną wersją, a repozytorium użytej zależności pozwala na pobieranie zaktualizowanych wersji z publicznych repozytoriów.

  • Błędnie napisana: Importuj reqests zamiast requests

  • Nieistniejąca: Importuj company-logging, wewnętrzną bibliotekę, która już nie istnieje

  • Nieokreślona wersja: Importuj wewnętrzną istniejącą bibliotekę company-requests, ale sprawdź repozytorium publiczne repozytoria, aby zobaczyć, czy są nowsze wersje.

Wykorzystanie

W każdym przypadku atakujący musi tylko opublikować złośliwy pakiet o nazwie używanej przez firmę ofiary.

Błędnie napisana & Nieistniejąca

Jeśli twoja firma próbuje importować bibliotekę, która nie jest wewnętrzna, bardzo prawdopodobne jest, że repozytorium bibliotek będzie próbować jej znaleźć w publicznych repozytoriach. Jeśli atakujący ją stworzył, twój kod i uruchomione maszyny są bardzo prawdopodobnie zagrożone.

Nieokreślona wersja

Bardzo często deweloperzy nie określają żadnej wersji używanej biblioteki, lub określają tylko główną wersję. W takim przypadku interpreter spróbuje pobrać najnowszą wersję, spełniającą te wymagania. Jeśli biblioteka jest znaną zewnętrzną biblioteką (jak python requests), atakujący nie może zrobić wiele, ponieważ nie będzie mógł stworzyć biblioteki o nazwie requests (chyba że jest jej oryginalnym autorem). Jednakże, jeśli biblioteka jest wewnętrzna, jak requests-company w tym przykładzie, jeśli repozytorium biblioteki pozwala na sprawdzanie nowych wersji również zewnętrznie, będzie szukać nowszej publicznie dostępnej wersji. Więc jeśli atakujący wie, że firma używa biblioteki requests-company wersja 1.0.1 (zezwala na aktualizacje mniejsze). Może opublikować bibliotekę requests-company wersja 1.0.2 i firma będzie używać tej biblioteki zamiast wewnętrznej.

Naprawa w AWS

Ta podatność została znaleziona w AWS CodeArtifact (przeczytaj szczegóły w tym wpisie na blogu). AWS naprawiło to, pozwalając określić, czy biblioteka jest wewnętrzna czy zewnętrzna, aby uniknąć pobierania wewnętrznych zależności z zewnętrznych repozytoriów.

Znajdowanie podatnych bibliotek

W oryginalnym poście o dependency confusion autor szukał tysięcy odsłoniętych plików package.json zawierających zależności projektów JavaScript.

Odnośniki

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Last updated