FauxUV: Lažni PyPI uv paketi otvaraju Jupyter za web

FauxUV: lažni PyPI UV pomagači koji otvaraju neautentificirani Jupyter poslužitelj na internet

TL; DR

Skupina PyPI paketa posudila je ime uv, brzi, iznimno popularni upravitelj paketa Python temeljen na Rustu, da se predstavljaju kao UV pomagači. Ne isporučuju gotovo nikakvu stvarnu funkcionalnost. Umjesto toga, nose Windows payload koji stoji iza JupyterLab poslužitelj s 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 upišete u notebook ćelija; ona pokrenuta s praznim tokenom i vezana za svako mrežno sučelje je otvoreni interpreter kojim svatko tko može pristupiti portu može upravljati.

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-ju u vrijeme analize.

ekosustavPyPI
Paketimoon-uv (0.0.1-0.0.16), my-magic-uv-helper (0.0.1)
Ciljana platformaWindows
Osnovno ponašanjeNeautentificirani JupyterLab poslužitelj, objavljen na internetu putem obrnutog tunela
Zloupotreba legitimnih alataUV, JupyterLab, cloudflared, Pingy

Mamac: ime kojem već vjerujete

uv je jedan od najinstaliranijih Python alata u posljednje dvije godine, pa je „pomoćnik za uv" je paket koji programer instalira bez razmišljanja. FauxUV u potpunosti troši svoju vjerodostojnost na to ime. Paketi omotavaju pravi uv instalacijski program tvrtke Astral — URL-ovi u sadržaju upućuju na stvarne, ugledne hostove — tako da brzi pogled ne vidi ništa osim pouzdanih referenci. Nijedan paket zapravo ne dodaje uv funkcionalnost; ime je cijela maska.

JupyterLab kao RCE motor

Središnji dio korisnog tereta je pokretač 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 označava (na izvornom kineskom): prazan token „isključuje provjere lozinki i tokena — svatko se može povezati.“ jupyter lab je legitimno IDE za znanost o podacima, ali neebook ćelija izvršava proizvoljni kod po narudžbi. Konfigurirano na ovaj način i vezano za 0.0.0.0, prestaje biti IDE i postaje neautentificirana udaljena ljuska na hostu - nije potreban prilagođeni binarni program zlonamjernog softvera, samo mainstream alat usmjeren u krivom smjeru.

Dva potporna dijela čine to dostižnim i ponovljivim:

  • Okidač za tihu instalaciju. Rane verzije pokreću PowerShell s -ExecutionPolicy Bypass ravno iz setup.py on pip instalirati, u pozadini s potisnutim greškama tako zvjezdica izgleda normalno. Kasnije verzije premještaju istu primitivu u pip-uv alat naredbenog retka - i potpuno uklonite automatsko pokretanje prilikom instalacije.
  • Javni obrnuti tunel. Poslužitelj na 0.0.0.0 još uvijek je dostupan samo hostovima koji mogu usmjeriti do stroja. 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čena skripta također nosi - komentirano - alternativni put koristeći Cloudflareov rasplamsao se a Netscape port-proxy na Linode IP adresu, dokumentirajući isti cilj putem različite infrastrukture.

Spojite: instalirajte paket i Windows host na kraju pokreće JupyterLab bez lozinke i objavljuje ga na otvorenom internetu.

Kako se FauxUV razvio

FauxUV-ove verzije isporučivale su se u brzom slijedu, a okidačka točka korisnog tereta pomicala se preko njih - podsjetnik da jedna označena verzija rijetko priča cijelu priču o liniji paketa.

Stadij verzije Okidač Što 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č JupyterLaba bez lozinke
Tunel moon-uv 0.0.14-0.0.16 pip-uv naredba aktivni obrnuti tunel Pinggy

Značajno je da je automatsko pokretanje prilikom instalacije bilo udaljen u kasnijim, sposobnijim verzijama - dakle skener koji se aktivira samo tijekom životnog ciklusa hooks bi ocijenio novija izdanja kao manje rizično, upravo obrnuto.

Pokazatelji kompromisa

Potvrđeno čitanjem izvornog koda paketa; označene krajnje točke komentirao prisutni su u datotekama, ali ih analizirana verzija ne izvršava. Mrežni indikatori su defaultirani.

Tip Pokazatelj
Instaliraj naredbu powershell -ExecutionPolicy Bypass dohvaćanje originalnog UV instalacijskog programa, tijekom 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 (komentirano) cloudflared tunnel --url hxxp://127[.]0[.]0[.]1:2718
IP (komentirano) 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 točnim nizovima znakova: a pip instalirati koji se mrijesti powershell -Zaobilaženje pravila izvršavanjabilo koji jupiter kombiniranje pokretanja token=”” sa –ip=0.0.0.0; i odlazni SSH prema *.pinggy.io od programera ili CI stroja.

Opaženo ponašanje i podrijetlo

Dva paketa dijele autora i metodu: naziv pouzdanog alata, ograničavanje samo za Windows, izvršavanje u pozadini s potisnutim greškama i oslanjanje na pouzdane alate tako da brzim pregledom vidite samo pouzdane URL-ove. Izvor sadrži komentare na kineskom jeziku koji jasno opisuju sigurnosno relevantne zastavice; te izjave u datoteci prikazujemo kao uočljive izjave, a ne kao tvrdnju o motivu. dopusti_podrijetlo vrijednost i colab.bat naziv datoteke odražava neformalne tijekove rada "podijeli moje lokalno okruženje za izvođenje" koji cirkuliraju za Google Colab. Bez obzira na podrijetlo, zapakirani rezultat je isti.

Utjecaj i smjernice za branitelje

Tko je izložen FauxUV-u. Windows programeri i CI voditelji koji pip instalirati jedan od ovih paketa. JupyterLab bez lozinke na 0.0.0.0 je udaljeno izvršavanje koda za svakoga tko može pristupiti portu; tunel uklanja ograničenje "tko ga može pristupiti". Poslužitelj se pokreće kao korisnik koji instalira, nasljeđujući datoteke, tokene i vjerodajnice za oblak tog korisnika.

Zašto je lako promašiti. Svaki mrežni niz upućuje na uglednog hosta — Astral, JupyterLab, rasplamsao se, Pinggy, Colab. Ne postoji binarni kod zlonamjernog softvera za hashiranje niti obfusirani blob za dekodiranje. Skeniranje temeljeno na reputaciji i potpisima podcjenjuje ovo, zbog čega je pitanje ponašanja - što instalacija ovog paketa radi na računalu — je onaj koji ga hvata.

Smjernice:

  • Tretirajte bilo koje vrijeme instalacije powershell -Zaobilaženje pravila izvršavanja kao signal za prekid izgradnje, bez obzira na URL koji dohvati.
  • Upozorenje uključeno jupiter pokrenuto s praznim tokenom i –ip=0.0.0.0; ta kombinacija se nikada ne bi smjela pojaviti na radnoj stanici ili trkaču.
  • Praćenje odlaznog SSH-a prema pružateljima tunela (*.pinggy.io, *.trycloudflare.com) iz razvojnih i CI okruženja.
  • Instalirati uv iz [službenog izvora](https://docs.astral.sh/uv/) i budite skeptični prema "pomoćnim" paketima trećih strana koji omotavaju alat koji je već jednostavan za instalaciju.
  • Prikvači i ponovno pregledaj ovisnosti prilikom nadogradnje — redak paketa može proširiti novu mogućnost verzije po verziji.
alati-za-analizu-sastava-softvera-sca-tools
Prioritizirajte, sanirajte i osigurajte softverske rizike
Nabavite svoj besplatni račun.
Nije potrebna kreditna kartica.

Osigurajte svoj razvoj i isporuku softvera

s Xygeni paketom proizvoda