FauxUV: Fake PyPI uv-pakketten iepenje Jupyter foar it web

FauxUV: falske PyPI uv-helpers dy't in net-autentisearre Jupyter-tsjinner iepenje foar it ynternet

TL; DR

In kluster fan PyPI-pakketten liende de namme fan uv, de rappe, tige populêre Rust-basearre Python-pakketbehearder, om har foar te dwaan as UV-helpers. Se leverje hast gjin echte funksjonaliteit. Wat se ynstee drage is in Windows-lading dy't in ... kin JupyterLab-tsjinner mei autentikaasje útskeakele en, yn lettere ferzjes, publisearret it it op it iepenbiere ynternet fia in omkearde tunnel.

Dat is it hiele ferhaal yn ien rigel: de namme fan in fertroud ark as de lokmiddel, en JupyterLab as de motor foar it útfieren fan koade op ôfstân. In Jupyter-tsjinner fiert elke koade út dy't jo yn in net-tsjinner ynfiere.ebook sel; ien dy't lansearre is mei in leech token en bûn is oan elke netwurkynterface is in iepen ynterpreter dy't elkenien dy't de poarte berikke kin, bestjoere kin.

Wy folgje it kluster as FauxUVDe twa ûndersochte pakketten binne moon-uv (0.0.1-0.0.16) en my-magic-uv-helper (0.0.1), publisearre troch deselde operator en live op PyPI op it momint fan analyze.

EkosysteemPyPI
Packagesmoon-uv (0.0.1-0.0.16), my-magic-uv-helper (0.0.1)
Platfoarm rjochteWindows
KearngedrachNet-autentisearre JupyterLab-tsjinner, publisearre op it ynternet fia in reverse tunnel
Legitime ark misbrûktuv, JupyterLab, wolkflared, Pinggy

De lokmiddel: in namme dy't jo al fertrouwe

uv is ien fan 'e meast ynstalleare Python-ark fan 'e lêste twa jier, dus "in helper foar uv" is in pakket dat in ûntwikkelder sûnder twifel ynstallearret. FauxUV besteget syn leauwensweardigens folslein oan dy namme. De pakketten pakke de echt uv ynstallearder fan Astral - de URL's yn 'e payload ferwize nei echte, betroubere hosts - dus in flugge blik sjocht neat oars as betroubere ferwizings. Gjin fan 'e pakketten foegje eins ta uv funksjonaliteit; de namme is de hiele ferklaaiïng.

JupyterLab as de RCE-motor

It middelpunt fan 'e lading is in launcher dy't JupyterLab start mei elke beskerming fuorthelle:

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

Elke flagge nimt in beskerming fuort, en it ferstjoerde skrift annotearret se sels (yn it orizjinele Sineesk): it lege token "skeakelt wachtwurd- en tokenkontrôles út - elkenien kin ferbine." jupyter lab is in legitime datawittenskip IDE, mar in netebook sel fiert willekeurige koade út troch ûntwerp. Op dizze manier konfigurearre en bûn oan 0.0.0.0, it hâldt op in IDE te wêzen en wurdt in net-autentisearre eksterne shell op 'e host - gjin oanpaste malware-binêre triem fereaske, gewoan in mainstream ark dat de ferkearde kant op wiist.

Twa stipe stikken meitsje dat berikber en werhelleber:

  • In stille ynstallaasje-trigger. Iere ferzjes rinne PowerShell mei -ExecutionPolicy Bypass streekrjocht fan setup.py on pip ynstallearje, op 'e eftergrûn mei flaters ûnderdrukt, sadat pip sjocht der normaal út. Lettere ferzjes ferpleatse deselde primitive nei in pip-uv kommandorigel-ark - en lit de automatyske útfiering by ynstallaasje hielendal falle.
  • In iepenbiere omkearde tunnel. In tsjinner oan 0.0.0.0 is noch altyd allinich berikber foar hosts dy't nei de masine rûte kinne. In bondele module iepenet in [Pinggy](https://pinggy.io/) SSH reverse tunnel dy't de lokale Jupyter-poarte trochstjoert nei in iepenbier adres, wêrtroch dy limyt fuorthelle wurdt. It ferstjoerde skript hat ek - útkommentearre - in alternatyf paad mei Cloudflare's wolkflared en in netsh port-proxy nei in Linode IP, wêrby't itselde doel dokumintearre wurdt fia ferskillende ynfrastruktuer.

Yninoar set: ynstallearje it pakket, en in Windows-host einiget mei it útfieren fan in wachtwurdleaze JupyterLab en it publisearje op it iepen ynternet.

Hoe't FauxUV evoluearre is

De ferzjes fan FauxUV waarden yn rappe opienfolging ferstjoerd, en it triggerpunt fan 'e lading beweegde der oerhinne - in herinnering dat ien flagge ferzje selden it heule ferhaal fan in pakketline fertelt.

Stage versions Trekker Wat it tafoeget
Ynstallearje-heak moon-uv 0.0.1-0.0.3, my-magic-uv-helper 0.0.1 setup.py op pip ynstallaasje uv ynstallaasje + PATH foarôfgeand
CLI-runtime moon-uv 0.0.5-0.0.13 pip-uv befel de wachtwurdleaze JupyterLab-launcher
tunnel moon-uv 0.0.14-0.0.16 pip-uv befel in aktive Pinggy-omkearde tunnel

Benammen de automatyske ynstallaasjetiid wie fuorthelle yn 'e lettere, bettere ferzjes - dus in scanner dy't allinich op libbensduur toetseard is hooks soe de nijere releases skoare as minder riskant, krekt efterút.

Yndikatoaren fan kompromis

Befêstige troch it lêzen fan 'e pakketboarne; einpunten markearre commented binne oanwêzich yn 'e bestannen, mar wurde net útfierd troch de analysearre ferzje. Netwurkindikatoaren binne defangearre.

Type indicator
Kommando ynstallearje powershell -ExecutionPolicy Bypass it echte uv-ynstallearder ophelje, op it momint fan pip-ynstallaasje
JupyterLab-flaggen --ip=0.0.0.0 --ServerApp.token="" --allow_origin='*' --disable_check_xsrf
Omkearde tunnel (aktyf) free[.]pinggy[.]io:443 trochstjoere lokaal 127.0.0.1:8888
Tunnelhost (kommentaar) cloudflared tunnel --url hxxp://127[.]0[.]0[.]1:2718
IP (kommentearre) 45[.]79[.]134[.]161 (Linode) fia netsh port-proxy
Persistence foarôfgiet %USERPROFILE%\.local\bin nei de brûker PATH

Gedrachssignalen dêr't jo op moatte warskôgje, ûnôfhinklik fan dizze krekte snaren: a pip ynstallearje dat ûntstiet powershell - Útfieringsbelied Bypass; elke jupyter lansearje kombinearjen token = "" mei –ip=0.0.0.0; en útgeande SSH nei *.pinggy.io fan in ûntwikkelder of CI-masine.

Waarnommen gedrach en oarsprong

De twa pakketten diele in auteur en in metoade: de namme fan in fertroud ark, allinich Windows-gating, flaterûnderdrukte eftergrûnútfiering, en ôfhinklikens fan betroubere ark, sadat in flugge blik allinich betroubere URL's sjocht. De boarne befettet Sineesktalige opmerkings dy't de feiligensrelevante flaggen dúdlik beskriuwe; wy rapportearje dy as waarnimbere útspraken yn it bestân, net as in bewearing oer motyf. De tastean_oarsprong wearde en in colab.bat bestânsnamme werhellet de ynformele "diel myn lokale runtime" workflows dy't sirkulearje foar Google Colab. Wat de oarsprong ek is, it ynpakte resultaat is itselde.

Ynfloed en begelieding foar ferdigeners

Wa is bleatsteld oan FauxUV. Windows-ûntwikkelders en CI-rinners dy't pip ynstallearje ien fan dizze pakketten. In wachtwurdleaze JupyterLab op 0.0.0.0 is útfiering fan koade op ôfstân foar elkenien dy't de poarte berikke kin; de tunnel ferwideret de limyt "wa kin it berikke". De server rint as de ynstallearjende brûker, en erft de bestannen, tokens en wolkgegevens fan dy brûker.

Wêrom it maklik te missen is. Elke netwurkstring wiist nei in betroubere host - Astral, JupyterLab, wolkflared, Pinggy, Colab. Der is gjin malware-binêr om te hashen en gjin obfuskearre blob om te dekodearjen. Reputaasje- en hantekening-basearre scannen ûnderskatte dit, dêrom de gedrachsfraach - wat docht de masine as it ynstallearjen fan dit pakket - is dejinge dy't it fangt.

Lieding:

  • Behannelje elke ynstallaasjetiid powershell - Útfieringsbelied Bypass as in build-breaking sinjaal, hokker URL it ek ophellet.
  • Alert op jupyter lansearre mei in lege token en –ip=0.0.0.0; dy kombinaasje moat nea op in wurkstasjon of runner ferskine.
  • Monitorearje foar útgeande SSH nei tunnelproviders (*.pinggy.io, *.trycloudflare.com) fan ûntwikkelder- en CI-omjouwings.
  • Ynstallearje uv fan [syn offisjele boarne](https://docs.astral.sh/uv/) en wês skeptysk oer "helper"-pakketten fan tredden dy't in ark ynpakke dat al triviaal te ynstallearjen is.
  • Fêstlizze en opnij kontrolearje ôfhinklikheden by upgrade - in pakketline kin nije mooglikheden ferzje-oer-ferzje groeie.
sca-tools-software-komposysje-analyse-ark
Prioritearje, ferhelpe en befeiligje jo softwarerisiko's
Krij jo fergese akkount.
Gjin kredytkaart nedich.

Befeiligje jo softwareûntwikkeling en levering

mei Xygeni Produkt Suite