FauxUV: Väärennetyt PyPI uv-paketit avaavat Jupyterin verkkoon

FauxUV: väärennetyt PyPI uv-apuohjelmat, jotka avaavat todentamattoman Jupyter-palvelimen internetille

TL; DR

PyPI-pakettien klusteri lainasi nimen uv, nopea ja erittäin suosittu Rust-pohjainen Python-paketinhallintaohjelma, esiintyessään UV-apuohjelmina. Ne eivät tarjoa juurikaan todellista toiminnallisuutta. Sen sijaan ne sisältävät Windows-hyötykuorman, joka pystyy JupyterLab-palvelin, jonka todennus on poistettu käytöstä ja myöhemmissä versioissa julkaisee sen julkisessa internetissä käänteisen tunnelin kautta.

Siinä koko tarina yhdellä rivillä: luotettavan työkalun nimi houkuttimena ja JupyterLab etäkoodin suoritusmoottorina. Jupyter-palvelin suorittaa mitä tahansa koodia, jonka kirjoitat not-kenttään.ebook solu; sellainen, joka käynnistetään tyhjällä tunnuksella ja sidotaan jokaiseen verkkorajapintaan, on avoin tulkki, jota kuka tahansa porttiin pääsevä voi ajaa.

Seuraamme klusteria seuraavasti FauxUVKaksi tarkasteltua pakettia ovat moon-uv (0.0.1 – 0.0.16) ja my-magic-uv-helper (0.0.1), saman operaattorin julkaisema ja PyPI:ssä saatavilla analyysin aikaan.

ekosysteemiPyPI
Jäsenyydetmoon-uv (0.0.1-0.0.16), my-magic-uv-helper (0.0.1)
AlustakohtainenWindows
YdinkäyttäytyminenTodentamaton JupyterLab-palvelin, julkaistu internetiin käänteisen tunnelin kautta
Laillisia työkaluja väärinkäytettyuv, JupyterLab, cloudflared, Pingy

Viehe: nimi, johon jo luotat

uv on yksi viimeisten kahden vuoden eniten asennetuista Python-työkaluista, joten "apulainen uv” on paketti, jonka kehittäjä asentaa ajattelematta asiaa sen enempää. FauxUV panostaa täysin uskottavuuteensa tuon nimen varaan. Paketit käärivät aito uv asennusohjelma Astralista – hyötykuorman URL-osoitteet osoittavat oikeisiin, hyvämaineisiin isännöitsijöihin – joten nopealla vilkaisulla ei löydy muuta kuin luotettavia viittauksia. Mikään paketeista ei itse asiassa lisää uv toiminnallisuus; nimi on koko naamio.

JupyterLab RCE-moottorina

Hyötykuorman keskipiste on kantoraketti, joka käynnistää JupyterLabin kaikki suojakaiteet poistettuna:

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

Jokainen lippu poistaa suojauksen, ja toimitettu käsikirjoitus jopa merkitsee ne (alkuperäisessä kiinaksi): tyhjä merkki "poistaa salasana- ja tunnustarkistukset käytöstä — kuka tahansa voi muodostaa yhteyden." jupyter lab on laillinen datatieteen IDE, mutta eiebook solu suorittaa mielivaltaista koodia tarkoituksella. Konfiguroitu tällä tavalla ja sidottu 0.0.0.0, se lakkaa olemasta IDE ja muuttuu todentamattomaksi etäkuoreksi isännässä — ei tarvita mukautettua haittaohjelmabinääriä, vain väärään suuntaan osoitettu valtavirran työkalu.

Kaksi tukevaa elementtiä tekevät siitä saavutettavan ja toistettavan:

  • Hiljaisen asennuksen laukaisin. Varhaiset versiot ajavat PowerShelliä -ExecutionPolicy Bypass suoraan setup.py on pip asennus, taustalla virheet poistettuina, joten pIP näyttää normaalilta. Myöhemmät versiot siirtävät saman peruselementin pip-uv komentorivityökalulla — ja poista asennuksenaikainen automaattinen käynnistys kokonaan.
  • Julkinen käänteinen tunneli. Palvelin päällä 0.0.0.0 on edelleen vain sellaisten isäntien tavoitettavissa, jotka voivat reitittää koneeseen. Mukana oleva moduuli avaa [Pingy](https://pinggy.io/) SSH-käänteinen tunneli, joka välittää paikallisen Jupyter-portin julkiseen osoitteeseen, poistaen tämän rajoituksen. Toimitettu skripti sisältää myös – kommentoituna – vaihtoehtoisen polun Cloudflaren avulla pilvien leimahdus ja netsh port-proxy Linode IP -osoitteeseen, dokumentoiden saman tavoitteen eri infrastruktuurin kautta.

Yhteenvetona: asenna paketti, ja Windows-isäntäkone ajaa salasanatonta JupyterLabia ja julkaisee sen avoimessa internetissä.

Miten FauxUV kehittyi

FauxUV:n versiot toimitettiin nopeaan tahtiin, ja hyötykuorman liipaisupiste liikkui niiden yli – muistutus siitä, että yksi merkitty versio harvoin kertoo koko pakettilinjan tarinan.

Vaihe versiot Laukaista Mitä se lisää
Asennuskoukku moon-uv 0.0.1-0.0.3, my-magic-uv-helper 0.0.1 setup.py pip-asennuksessa uv-asennus + PATH-etu
CLI-ajonaikainen moon-uv 0.0.5-0.0.13 pip-uv komento salasanaton JupyterLab-käynnistysohjelma
Tunneli moon-uv 0.0.14-0.0.16 pip-uv komento aktiivinen Pingy-käänteinen tunneli

Merkittävää oli, että asennuksen aikainen automaattinen käynnistys oli irrottaa myöhemmissä, tehokkaammissa versioissa – joten skanneri käynnistetään vain elinkaaren aikana hooks pisteyttäisi uudemmat julkaisut vähemmän riskialtista, täsmälleen väärin päin.

Kompromissin indikaattorit

Vahvistettu lukemalla paketin lähdekoodi; päätepisteet merkitty kommentoi ovat tiedostoissa, mutta analysoitu versio ei suorita niitä. Verkkoindikaattorit on poistettu.

Tyyppi Osoitin
Asenna komento powershell -ExecutionPolicy Bypass noudetaan aitoa UV-asennusohjelmaa PIP-asennuksen aikana
JupyterLab-liput --ip=0.0.0.0 --ServerApp.token="" --allow_origin='*' --disable_check_xsrf
Käänteinen tunneli (aktiivinen) free[.]pinggy[.]io:443 paikallisen edelleenlähetyksen 127.0.0.1:8888
Tunnelin isäntä (kommentoitu) cloudflared tunnel --url hxxp://127[.]0[.]0[.]1:2718
IP-osoite (kommentoitu) 45[.]79[.]134[.]161 (Linode) kautta netsh port-proxy
Sitkeys lisää %USERPROFILE%\.local\bin käyttäjälle PATH

Käyttäytymissignaaleista, joista kannattaa ilmoittaa, riippumatta näistä tarkoista merkkijonoista: a pip asennus joka kutee powershell -ExecutionPolicy-ohitusmikä tahansa jupyter käynnistää yhdistämällä token=”” –ip=0.0.0.0ja lähtevä SSH kohteeseen *.pinggy.io kehittäjältä tai CI-koneelta.

Havaittu käyttäytyminen ja alkuperä

Näillä kahdella paketilla on sama tekijä ja metodi: luotettavan työkalun nimi, vain Windowsille tarkoitettu tahdistus, virheetön taustalla suoritettava suoritus ja luotettavuus hyvämaineisiin työkaluihin, joten nopealla vilkaisulla näkee vain hyvämaineisia URL-osoitteita. Lähdetekstissä on kiinankielisiä kommentteja, jotka kuvaavat turvallisuuteen liittyviä merkintöjä selkeästi; raportoimme ne tiedostossa havaittavina lauseina, emme väitteenä motiivista. salli_alkuperä arvo ja colab.bat tiedostonimi heijastelee epävirallisia ”jaa paikallinen suoritusympäristöni” -työnkulkuja, jotka kiertävät Google Colabissa. Lähtökohdasta riippumatta pakattu tulos on sama.

Vaikutus ja ohjaus puolustajille

Kuka altistuu FauxUV:lle? Windows-kehittäjät ja CI-ajurit, jotka pip asennus yksi näistä paketeista. Salasanaton JupyterLab päällä 0.0.0.0 on etäkoodin suorittaminen kenelle tahansa, joka pääsee porttiin; tunneli poistaa "kuka voi tavoittaa sen" -rajoituksen. Palvelin toimii asentavana käyttäjänä ja perii kyseisen käyttäjän tiedostot, tunnukset ja pilvitunnukset.

Miksi se on helppo ohittaa. Jokainen verkkoketju osoittaa hyvämaineiseen isäntään – Astral, JupyterLab, pilvien leimahdus, Pingy, Colab. Ei ole olemassa haittaohjelmabinääriä, jota hajauttaa, eikä hämärrettyä läiskää, jota purkaa. Sekä maine- että allekirjoituspohjainen skannaus alipainottavat tätä, minkä vuoksi käyttäytymiskysymys — Mitä tämän paketin asentaminen saa koneen tekemään? — on se, joka sen nappaa.

ohjaus:

  • Käsittele mitä tahansa asennusaikaa powershell -ExecutionPolicy-ohitus koontivirheellisenä signaalina riippumatta siitä, minkä URL-osoitteen se noutaa.
  • Hälytys päällä jupyter käynnistettiin tyhjällä tunnuksella ja –ip=0.0.0.0; tuon yhdistelmän ei pitäisi koskaan esiintyä työasemalla tai juoksijalla.
  • Lähtevän SSH-yhteyden tunnelointipalveluntarjoajien valvonta (*.pinggy.io, *.trycloudflare.com) kehittäjä- ja CI-ympäristöistä.
  • install uv [virallisesta lähteestään](https://docs.astral.sh/uv/) ja suhtaudu skeptisesti kolmannen osapuolen "apupaketteihin", jotka käärivät työkalun, jonka asentaminen on jo valmiiksi triviaalia.
  • Kiinnitä ja tarkista uudelleen riippuvuudet päivityksen yhteydessä — pakettiriville voidaan kasvattaa uusia ominaisuuksia versio kerrallaan.
sca-työkalut-ohjelmisto-koostumusanalyysityökalut
Priorisoi, korjaa ja suojaa ohjelmistoriskisi
Hanki ilmainen tili.
Luottokorttia ei vaadita.

Turvaa ohjelmistokehityksesi ja -toimituksesi

Xygeni-tuotepaketin kanssa