FauxUV: Paketa të rreme PyPI uv që hapin Jupyter në internet

FauxUV: ndihmës të rremë PyPI uv që hapin një server Jupyter të paautorizuar në internet.

TL; DR

Një grumbull paketash PyPI huazoi emrin e uv, menaxheri i shpejtë dhe jashtëzakonisht popullor i paketave Python i bazuar në Rust, për t'u paraqitur si ndihmës UV. Ata nuk ofrojnë pothuajse asnjë funksionalitet të vërtetë. Ajo që ata mbajnë në vend të kësaj është një ngarkesë e Windows që qëndron në një pozicion të qëndrueshëm. Serveri JupyterLab me autentifikim të çaktivizuar dhe, në versionet e mëvonshme, e publikon atë në internetin publik përmes një tuneli të kundërt.

Kjo është e gjithë historia në një rresht: një emër mjeti i besueshëm si karrem, dhe JupyterLab si motori i ekzekutimit të kodit në distancë. Një server Jupyter ekzekuton çdo kod që shkruani në një server jo.ebook qeliza; një qelizë e nisur me një token bosh dhe e lidhur me çdo ndërfaqe rrjeti është një interpretues i hapur që kushdo që mund të arrijë portin mund ta drejtojë.

Ne e ndjekim klasterin si FauxUVDy paketat e shqyrtuara janë moon-uv (0.0.1-0.0.16) dhe my-magic-uv-helper (0.0.1), publikuar nga i njëjti operator dhe drejtpërdrejt në PyPI në kohën e analizës.

ekosistemitPyPI
Paketatmoon-uv (0.0.1-0.0.16), my-magic-uv-helper (0.0.1)
Platforma e synuarDritaret
Sjellja thelbësoreServer JupyterLab i paautorizuar, i publikuar në internet nëpërmjet një tuneli të kundërt
Mjete legjitime të keqpërdorurauv, JupyterLab, cloudflared, Pinggy

Joshja: një emër që tashmë i besoni

uv është një nga mjetet Python më të instaluara të dy viteve të fundit, kështu që "një ndihmës për uv"është një paketë që një zhvillues e instalon pa menduar dy herë. FauxUV ia kushton besueshmërinë e tij tërësisht këtij emri. Paketat mbështjellin i vërtetë uv instaluesi nga Astral — URL-të në ngarkesë tregojnë për hostë të vërtetë dhe me reputacion të mirë — kështu që një vështrim i shpejtë nuk sheh asgjë tjetër përveç referencave të besueshme. Asnjë nga paketat nuk shton në të vërtetë uv funksionalitet; emri është i gjithë maskimi.

JupyterLab si motori RCE

Pjesa qendrore e ngarkesës është një lëshues që nis JupyterLab me çdo parmak mbrojtës të hequr:

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

Çdo flamur heq një mbrojtje, dhe skripti i dërguar madje i shënon ato (në kinezishten origjinale): tokeni bosh "çaktivizon kontrollet e fjalëkalimeve dhe tokenëve — kushdo mund të lidhet." laborator jupyter është një IDE legjitime e shkencës së të dhënave, por jo njëebook qeliza ekzekuton kod arbitrar sipas dizajnit. Konfiguruar në këtë mënyrë dhe e lidhur me 0.0.0.0, nuk është më një IDE dhe bëhet një shell i largët i paautorizuar në host — nuk kërkohet asnjë skedar binar i personalizuar për malware, vetëm një mjet kryesor që tregon drejtimin e gabuar.

Dy pjesë mbështetëse e bëjnë atë të arritshme dhe të përsëritshme:

  • Një shkaktar instalimi i heshtur. Versionet e hershme përdorin PowerShell me -Përshkrimi i ekzekutimit të gazit drejt nga konfigurim.py on instalim pip, në sfond me gabime të shtypura kështu cicërin duket normale. Versionet e mëvonshme e zhvendosin të njëjtën primitive në një pip-uv mjet i linjës së komandës — dhe hiqni tërësisht ekzekutimin automatik në kohën e instalimit.
  • Një tunel publik i kundërt. Një server në 0.0.0.0 është ende i arritshëm vetëm nga hostet që mund të drejtohen te makina. Një modul i paketuar hap një [Pinggy](https://pinggy.io/) Tuneli i kundërt SSH që përcjell portin lokal Jupyter në një adresë publike, duke hequr atë kufizim. Skripti i dërguar gjithashtu mbart - komentuar - një rrugë alternative duke përdorur Cloudflare-in. i ndezur me re dhe një netsh port-proxy në një IP Linode, duke dokumentuar të njëjtin qëllim përmes infrastrukturës së ndryshme.

Përgatiteni së bashku: instaloni paketën dhe një host i Windows përfundon duke ekzekutuar një JupyterLab pa fjalëkalim dhe duke e publikuar atë në internetin e hapur.

Si evoluoi FauxUV

Versionet e FauxUV u dërguan me shpejtësi njëra pas tjetrës dhe pika e aktivizimit të ngarkesës lëvizte përmes tyre - një kujtesë se një version i shënuar rrallë tregon të gjithë historinë e një linje paketash.

Fazë Versione shkrehës Çfarë shton
Grep instalimi moon-uv 0.0.1-0.0.3, my-magic-uv-helper 0.0.1 setup.py në instalimin e pip-it instalimi UV + prependimi i PATH
CLI-runtime moon-uv 0.0.5-0.0.13 pip-uv komandë lëshuesi JupyterLab pa fjalëkalim
Tunel moon-uv 0.0.14-0.0.16 pip-uv komandë një tunel aktiv i kundërt i Pinggy-t

Veçanërisht, ekzekutimi automatik në kohën e instalimit ishte hequr në versionet e mëvonshme, më të afta - pra një skaner i kyçur vetëm në ciklin jetësor hooks do t'i vlerësonte publikimet më të reja si më pak e rrezikshme, pikërisht mbrapsht.

Treguesit e kompromisit

Konfirmuar duke lexuar burimin e paketës; pikat fundore të shënuara komentoi janë të pranishme në skedarë, por nuk ekzekutohen nga versioni i analizuar. Treguesit e rrjetit janë të çaktivizuar.

Tipi Tregues
Komanda e instalimit powershell -ExecutionPolicy Bypass duke marrë instaluesin origjinal UV, në kohën e instalimit të pip-it
Flamujt e JupyterLab --ip=0.0.0.0 --ServerApp.token="" --allow_origin='*' --disable_check_xsrf
Tuneli i kundërt (aktiv) free[.]pinggy[.]io:443 duke përcjellë lokalisht 127.0.0.1:8888
Pritësi i tunelit (komentuar) cloudflared tunnel --url hxxp://127[.]0[.]0[.]1:2718
IP (e komentuar) 45[.]79[.]134[.]161 (Linode) nëpërmjet netsh port-proxy
Këmbëngulje paraprin %USERPROFILE%\.local\bin te përdoruesi PATH

Sinjale sjelljeje për të cilat ia vlen të alarmosh, pavarësisht nga këto vargje të sakta: a instalim pip që pjell powershell -ExecutionPolicy Bypass; çdo Jupiter nisja e kombinimit token=”” me –ip=0.0.0.0; dhe SSH dalëse për në *.pinggy.io nga një zhvillues ose makinë CI.

Sjellja dhe prejardhja e vëzhguar

Të dy paketat ndajnë një autor dhe një metodë: një emër mjeti të besueshëm, portë vetëm për Windows, ekzekutim në sfond pa gabime dhe mbështetje në mjete me reputacion të mirë, kështu që një vështrim i shpejtë sheh vetëm URL me reputacion të mirë. Burimi përmban komente në gjuhën kineze që përshkruajnë qartë flamujt që lidhen me sigurinë; ne i raportojmë ato si deklarata të vëzhgueshme në skedar, jo si një pretendim në lidhje me motivin. lejo_origjinën vlerë dhe një colab.bat emri i skedarit pasqyron rrjedhat joformale të punës "ndaj kohën time lokale të ekzekutimit" që qarkullojnë për Google Colab. Cilado qoftë origjina, rezultati i paketuar është i njëjtë.

Ndikimi dhe udhëzimet për mbrojtësit

Kush është i ekspozuar ndaj FauxUV. Zhvilluesit e Windows dhe ekzekutuesit e CI që instalim pip një nga këto paketa. Një JupyterLab pa fjalëkalim në 0.0.0.0 është ekzekutim kodi në distancë për këdo që mund të arrijë portin; tuneli heq limitin "kush mund ta arrijë atë". Serveri funksionon si përdoruesi instalues, duke trashëguar skedarët, tokenët dhe kredencialet e cloud-it të atij përdoruesi.

Pse është e lehtë të humbasësh. Çdo varg rrjeti tregon një host me reputacion të mirë — Astral, JupyterLab, i ndezur me re, Pinggy, Colab. Nuk ka asnjë skedar binar malware për të hashuar dhe asnjë blob të errët për të deshifruar. Skanimi i bazuar në reputacion dhe nënshkrim e nënvlerësojnë këtë, prandaj pyetja e sjelljes — Çfarë bën instalimi i kësaj pakete në makinë? — është ai që e kap atë.

udhëzime:

  • Trajtoni çdo kohë instalimi powershell -ExecutionPolicy Bypass si një sinjal prishës i ndërtimit, pavarësisht URL-së që merr.
  • Alarmi është aktiv Jupiter u lançua me një token bosh dhe –ip=0.0.0.0; ky kombinim nuk duhet të shfaqet kurrë në një stacion pune ose ekzekutues.
  • Monitoroni për ofruesit e tunelit me SSH dalëse (*.pinggy.io, *.trycloudflare.com) nga zhvilluesit dhe mjediset CI.
  • Instaloj uv nga [burimi i saj zyrtar] (https://docs.astral.sh/uv/) dhe ji skeptik ndaj paketave "ndihmëse" të palëve të treta që mbështjellin një mjet që është tashmë i thjeshtë për t'u instaluar.
  • Ngjit dhe rishiko varësitë në përditësim — një linjë paketash mund të zhvillojë aftësi të reja version pas versioni.
mjetet-e-për-përbërjes-së-softuerit-sca-tools
Përparësoni, korrigjoni dhe siguroni rreziqet e softuerit tuaj
Merrni Llogarinë tuaj Falas.
Nuk kërkohet kartë krediti.

Siguroni Zhvillimin dhe Ofrimin e Softuerit tuaj

me Xygeni Product Suite