TL; ДР
Група од PyPI пакети го позајми името на uv, брзиот, многу популарен менаџер на пакети Python базиран на Rust, за да се претстават како UV помагачи. Тие речиси и да немаат вистинска функционалност. Наместо тоа, тие носат Windows товар кој стои како Сервер JupyterLab со исклучена автентикација и, во подоцнежните верзии, го објавува на јавниот интернет преку обратен тунел.
Тоа е целата приказна во еден ред: име на доверлива алатка како мамка, а JupyterLab како мотор за далечинско извршување на код. Серверот Jupyter го извршува кодот што ќе го внесете во неebook ќелија; онаа лансирана со празен токен и поврзана со секој мрежен интерфејс е отворен интерпретер што може да го управува секој што може да стигне до портата.
Го следиме кластерот како Лажен УВДвата испитани пакети се moon-uv (0.0.1-0.0.16) и my-magic-uv-helper (0.0.1), објавено од истиот оператор и активно на PyPI во времето на анализата.
| Екосистем | PyPI |
| делот пакети | moon-uv (0.0.1-0.0.16), my-magic-uv-helper (0.0.1) |
| Платформски таргетирани | Windows |
| Основно однесување | Неавтентициран сервер JupyterLab, објавен на интернет преку обратен тунел |
| Злоупотреба на легитимни алатки | ув, ЈупитерЛаб, облачно разгорено, Пинги |
Мамката: име на кое веќе му верувате
uv е една од најинсталираните алатки на Python во последните две години, па затоа е „помошник за“ uv„е пакет што развивачот го инсталира без двоумење. FauxUV го троши својот кредибилитет целосно на тоа име. Пакетите го обвиткуваат вистински uv инсталерот од Astral — URL-адресите во товарниот простор укажуваат на вистински, реномирани хостови — па така, со брз поглед не се гледа ништо освен доверливи референци. Ниеден од пакетите всушност не додава uv функционалност; името е целата маска.
JupyterLab како RCE мотор
Централниот дел на товарот е фрлач кој го стартува JupyterLab со отстранета секоја заштитна ограда:
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 Секое знаме отстранува заштита, а испратеното писмо дури и ги анотира (на оригиналниот кинески): празниот токен „ги исклучува проверките на лозинките и токените — секој може да се поврзе.“ јупитер лабораторија е легитимен IDE за наука за податоци, но не еebook ќелијата извршува произволен код по дизајн. Конфигурирана на овој начин и врзана за 0.0.0.0, престанува да биде IDE и станува неавтентифицирана далечинска обвивка на домаќинот — не е потребна прилагодена бинарна датотека за малициозен софтвер, само мејнстрим алатка што покажува на погрешен начин.
Два потпорни делови го прават тоа достапно и повторувачко:
- Тивок активатор за инсталација. Раните верзии го користат PowerShell со -ИзвршувањеПолитички бајпас директно од поставување.пир on пип инсталација, во позадина со потиснати грешки, па пипка изгледа нормално. Подоцнежните верзии го преместуваат истиот примитив во пип-ув алатка од командна линија — и целосно да го откажете автоматското стартување за време на инсталацијата.
- Јавен обратен тунел. Сервер на 0.0.0.0 сè уште е достапен само за хостови кои можат да насочуваат кон машината. Вклучениот модул отвора [Pinggy](https://pinggy.io/) SSH обратен тунел што го препраќа локалниот порт на Jupyter кон јавна адреса, отстранувајќи го тоа ограничување. Испратената скрипта исто така носи - коментирана - алтернативна патека користејќи го Cloudflare-от облачно разгорено и netsh port-proxy до Linode IP адреса, документирање на истата цел преку различна инфраструктура.
Составете го пакетот: инсталирајте го пакетот, и Windows домаќинот завршува со стартување на JupyterLab без лозинка и објавување на отворениот интернет.
Како еволуираше FauxUV
Верзиите на FauxUV се испорачуваа брзо едно по друго, а точката за активирање на товарот се движеше преку нив - потсетник дека една означена верзија ретко ја раскажува целата приказна за линијата за пакети.
| Фаза | верзии | Активирањето | Што додава |
|---|---|---|---|
| Кука за инсталација | moon-uv 0.0.1 – 0.0.3, my-magic-uv-helper 0.0.1 | setup.py при инсталација на pip | uv инсталација + PATH prepend |
| CLI-време на извршување | moon-uv -0.0.5 0.0.13 | pip-uv команда | лансирачот JupyterLab без лозинка |
| Тунел | moon-uv -0.0.14 0.0.16 | pip-uv команда | активен обратен тунел на Пинги |
Имено, автоматското стартување за време на инсталацијата беше отстранети во подоцнежните, поспособни верзии - па така скенер е клучен само во животниот циклус hooks би ги оценил поновите изданија како помалку ризично, точно наназад.
Индикатори за компромис
Потврдено со читање на изворниот код на пакетот; крајните точки се означени коментира се присутни во датотеките, но не се извршуваат од анализираната верзија. Мрежните индикатори се дефангирани.
| тип | индикатор |
|---|---|
| Инсталирај команда | powershell -ExecutionPolicy Bypass преземање на оригиналниот UV инсталер, во време на инсталација на pip |
| Знамиња на JupyterLab | --ip=0.0.0.0 --ServerApp.token="" --allow_origin='*' --disable_check_xsrf |
| Обратен тунел (активен) | free[.]pinggy[.]io:443 препраќање локално 127.0.0.1:8888 |
| Домаќин на тунелот (коментиран) | cloudflared tunnel --url hxxp://127[.]0[.]0[.]1:2718 |
| IP (коментирано) | 45[.]79[.]134[.]161 (Линода) преку netsh port-proxy |
| Упорност | претставува %USERPROFILE%\.local\bin до корисникот PATH |
Бихејвиорални сигнали за кои вреди да се предупреди, независно од овие точни низи: a пип инсталација што се мрести powershell -ExecutionPolicy Bypass; било кој јупитер лансирање комбинирање токен = "" со –ip=0.0.0.0; и излезен SSH до *.pinggy.io од развивач или CI машина.
Набљудувано однесување и потекло
Двата пакета делат автор и метод: име на доверлива алатка, затворање само за Windows, извршување во позадина без грешки и потпирање на реномирани алатки, така што со брз поглед се гледаат само реномирани URL-адреси. Изворот содржи коментари на кинески јазик што јасно ги опишуваат безбедносните ознаки; ние ги пријавуваме како видливи изјави во датотеката, а не како тврдење за мотив. allow_origin вредност и а colab.bat името на датотеката ги одразува неформалните работни процеси „сподели го моето локално извршување“ што циркулираат за Google Colab. Без разлика на потеклото, спакуваниот резултат е ист.
Влијание и насоки за бранителите
Кој е изложен на FauxUV зрачење. Windows програмери и CI извршувачи кои пип инсталација еден од овие пакети. JupyterLab без лозинка на 0.0.0.0 е далечинско извршување на код за секој што може да го достигне портот; тунелот го отстранува ограничувањето „кој може да го достигне“. Серверот работи како корисник што го инсталира, наследувајќи ги датотеките, токените и акредитивите во облакот на тој корисник.
Зошто е лесно да се пропушти. Секој мрежен стринг укажува на реномиран домаќин — Astral, JupyterLab, облачно разгорено, Пинги, Колаб. Нема бинарен код од малициозен софтвер за хеширање и нема замаглена точка за декодирање. Скенирањето базирано на репутација и потпис го потценуваат ова, поради што се поставува прашањето за однесувањето - Што прави машината при инсталирање на овој пакет? — е оној што го фаќа.
Упатство:
- Третирајте го секое време на инсталација powershell -ExecutionPolicy Bypass како сигнал за разбивање на градбите, без разлика која URL адреса ќе ја преземе.
- Вклучете го јупитер лансиран со празен токен и –ip=0.0.0.0; таа комбинација никогаш не треба да се појавува на работна станица или на изведувач.
- Следете за излезни SSH до тунел провајдери (*.pinggy.io, *.trycloudflare.com) од развивачи и CI средини.
- Инсталирајте uv од [неговиот официјален извор] (https://docs.astral.sh/uv/) и бидете скептични кон „помошните“ пакети од трети страни кои ја обвиткуваат алатката што е веќе тривијална за инсталирање.
- Закачи и повторно прегледај зависности од надградба — линијата на пакети може да развива нови можности верзија по верзија.



