TL; DR
En klynge av PyPI-pakker lånte navnet uv, den raske, enormt populære Rust-baserte Python-pakkebehandleren, til å utgi seg for å være UV-hjelpere. De leverer nesten ingen reell funksjonalitet. Det de i stedet har med seg er en Windows-nyttelast som står oppreist. JupyterLab-server med autentisering slått av og publiserer den i senere versjoner til det offentlige internett gjennom en omvendt tunnel.
Det er hele historien på én linje: et pålitelig verktøys navn som lokkemiddel, og JupyterLab som motor for ekstern kodekjøring. En Jupyter-server kjører hvilken som helst kode du skriver inn i en ikke-server.ebook celle; en som startes med et tomt token og er bundet til alle nettverksgrensesnitt, er en åpen tolk som alle som kan nå porten kan kjøre.
Vi sporer klyngen som Falsk UVDe to pakkene som er undersøkt er moon-uv (0.0.1-0.0.16) og my-magic-uv-helper (0.0.1), publisert av samme operatør og live på PyPI på analysetidspunktet.
| Økosystem | PyPI |
| Nettsidepakker | moon-uv (0.0.1-0.0.16), my-magic-uv-helper (0.0.1) |
| Plattformmålrettet | Windows |
| Kjerneoppførsel | Uautorisert JupyterLab-server, publisert til internett via en omvendt tunnel |
| Misbruk av legitime verktøy | uv, JupyterLab, cloudflared, Pinggy |
Lokkemiddelet: et navn du allerede stoler på
uv er et av de mest installerte Python-verktøyene de siste to årene, så «en hjelper for uv«er en pakke en utvikler installerer uten å tenke seg om. FauxUV bruker sin troverdighet utelukkende på det navnet. Pakkene pakker inn ekte uv installasjonsprogram fra Astral – URL-ene i nyttelasten peker mot ekte, anerkjente verter – så et raskt blikk ser bare pålitelige referanser. Ingen av pakkene legger faktisk til uv funksjonalitet; navnet er hele forkledningen.
JupyterLab som RCE-motor
Nyttelastens midtpunkt er en bærerakett som starter JupyterLab med alle rekkverk fjernet:
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 Hvert flagg fjerner en beskyttelse, og det sendte skriften kommenterer dem til og med (på original kinesisk): det tomme tokenet «slår av passord- og tokensjekker – alle kan koble til.» jupyter lab er en legitim datavitenskapelig IDE, men ikke enebook celle kjører vilkårlig kode etter design. Konfigurert på denne måten og bundet til 0.0.0.0, slutter den å være en IDE og blir et uautentisert eksternt skall på verten – ingen tilpasset binærfil for skadelig programvare kreves, bare et vanlig verktøy som peker i feil retning.
To støttestykker gjør det tilgjengelig og repeterbart:
- En stille installasjonstrigger. Tidlige versjoner kjører PowerShell med -ExecutionPolicy Bypass rett fra setup.py on pip installasjon, i bakgrunnen med feil undertrykt slik at pip ser normalt ut. Senere versjoner flytter den samme primitive inn i en pip-uv kommandolinjeverktøyet – og fjern automatisk kjøring under installasjon helt.
- En offentlig omvendt tunnel. En server på 0.0.0.0 er fortsatt bare tilgjengelig for verter som kan rute til maskinen. En medfølgende modul åpner en [Pinggy](https://pinggy.io/) SSH-omvendt tunnel som videresender den lokale Jupyter-porten til en offentlig adresse, og fjerner den grensen. Det leverte skriptet har også – kommentert ut – en alternativ bane ved hjelp av Cloudflares skyutstrakt og en netsh port-proxy til en Linode IP, som dokumenterer det samme målet gjennom ulik infrastruktur.
Sett sammen: installer pakken, og en Windows-vert ender opp med å kjøre en passordløs JupyterLab og publisere den på det åpne internett.
Hvordan FauxUV utviklet seg
FauxUVs versjoner ble sendt i rask rekkefølge, og nyttelastens triggerpunkt beveget seg over dem – en påminnelse om at én flagget versjon sjelden forteller hele historien om en pakkelinje.
| Scene | versjoner | Avtrekker | Hva det tilfører |
|---|---|---|---|
| Installeringskrok | moon-uv 0.0.1-0.0.3, my-magic-uv-helper 0.0.1 | setup.py på pip-installasjon | uv install + PATH prepend |
| CLI-kjøretid | moon-uv 0.0.5-0.0.13 | pip-uv kommando | den passordløse JupyterLab-lanseringen |
| Tunnel | moon-uv 0.0.14-0.0.16 | pip-uv kommando | en aktiv Pinggy reversert tunnel |
Det er verdt å merke seg at automatisk kjøring ved installasjon var fjernet i de senere, mer kapable versjonene – så en skanner som bare ble tastet inn på livssyklusen hooks ville score de nyere utgivelsene som mindre risikabelt, helt bakvendt.
Indikatorer for kompromiss
Bekreftet ved å lese pakkekilden; endepunkter merket kommenterte finnes i filene, men kjøres ikke av den analyserte versjonen. Nettverksindikatorer er deaktivert.
| typen | Indikator |
|---|---|
| Installer kommando | powershell -ExecutionPolicy Bypass Henter det ekte UV-installasjonsprogrammet, under PIP-installasjonen |
| JupyterLab-flagg | --ip=0.0.0.0 --ServerApp.token="" --allow_origin='*' --disable_check_xsrf |
| Omvendt tunnel (aktiv) | free[.]pinggy[.]io:443 videresending lokalt 127.0.0.1:8888 |
| Tunnelvert (kommentert) | cloudflared tunnel --url hxxp://127[.]0[.]0[.]1:2718 |
| IP (kommentert) | 45[.]79[.]134[.]161 (Linode) via netsh port-proxy |
| Utholdenhet | går foran %USERPROFILE%\.local\bin til brukerens PATH |
Atferdssignaler det er verdt å være oppmerksom på, uavhengig av disse strengene: a pip installasjon som gyter powershell - Omgåelse av kjøringspolicyhvilken som helst jupyter lansere kombinasjon token=”” med –ip=0.0.0.0; og utgående SSH til *.pinggy.io fra en utvikler eller CI-maskin.
Observert atferd og opprinnelse
De to pakkene deler en forfatter og en metode: navn på et klarert verktøy, kun Windows-gating, feildempende bakgrunnskjøring og avhengighet av anerkjente verktøy, slik at en rask titt bare ser anerkjente URL-er. Kilden inneholder kommentarer på kinesisk som beskriver de sikkerhetsrelevante flaggene tydelig; vi rapporterer disse som observerbare utsagn i filen, ikke som en påstand om motiv. tillat_opprinnelse verdi og en colab.bat filnavnet gjenspeiler de uformelle arbeidsflytene «del min lokale kjøretid» som sirkulerer for Google Colab. Uansett opprinnelse er det pakkede resultatet det samme.
Innvirkning og veiledning for forsvarere
Hvem er utsatt for FauxUV? Windows-utviklere og CI-brukere som pip installasjon en av disse pakkene. En passordløs JupyterLab på 0.0.0.0 er ekstern kodekjøring for alle som kan nå porten; tunnelen fjerner grensen for "hvem kan nå den". Serveren kjører som den installerende brukeren og arver brukerens filer, tokener og skylegitimasjon.
Hvorfor det er lett å gå glipp av. Hver nettverksstreng peker mot en pålitelig vert – Astral, JupyterLab skyutstrakt, Pinggy, Colab. Det finnes ingen binærfil for skadelig programvare å hashe og ingen obfuskert blob å dekode. Både omdømme- og signaturbasert skanning undervurderer dette, og det er derfor atferdsspørsmålet – hva får maskinen til å gjøre når man installerer denne pakken – er den som fanger den.
Veiledning:
- Behandle enhver installasjonstid powershell - Omgåelse av kjøringspolicy som et signal som bryter byggeprosessen, uansett hvilken URL den henter.
- Varsel på jupyter lansert med en tom token og –ip=0.0.0.0; den kombinasjonen skal aldri vises på en arbeidsstasjon eller runner.
- Overvåk utgående SSH til tunnelleverandører (*.pinggy.io, *.trycloudflare.com) fra utvikler- og CI-miljøer.
- Install uv fra [den offisielle kilden](https://docs.astral.sh/uv/) og vær skeptisk til tredjeparts «hjelpepakker» som pakker inn et verktøy som allerede er trivielt å installere.
- Fest og gjennomgå avhengigheter på nytt ved oppgradering – en pakkelinje kan utvikle nye funksjoner versjon over versjon.



