FauxUV: Viltus PyPI UV pakotnes atver Jupyter tīmeklī

FauxUV: viltoti PyPI UV palīgi, kas atver neautentificētu Jupyter serveri internetam

TL; DR

PyPI pakotņu klasteris aizguva nosaukumu uv, ātrais, ārkārtīgi populārais Rust bāzes Python pakotņu pārvaldnieks, lai izliktos par UV palīgiem. Tie gandrīz nenodrošina nekādu reālu funkcionalitāti. Tā vietā tie satur Windows vērtumu, kas atbalsta JupyterLab serveris ar izslēgtu autentifikāciju un vēlākās versijās to publicē publiskajā internetā, izmantojot apgriezto tuneli.

Tas ir viss stāsts vienā rindā: uzticama rīka nosaukums kā ēsma un JupyterLab kā attālinātās koda izpildes dzinējs. Jupyter serveris palaiž jebkuru kodu, ko ierakstāt nevietā.ebook šūna; tāda, kas palaista ar tukšu marķieri un piesaistīta katrai tīkla saskarnei, ir atvērts interpretētājs, kuru var vadīt ikviens, kas var sasniegt portu.

Mēs izsekojam klasteri kā FauxUVAbi pārbaudītie paketes ir moon-uv (0.0.1 – 0.0.16) un my-magic-uv-helper (0.0.1), ko publicējis tas pats operators un kas analīzes laikā ir pieejams PyPI.

EkosistēmaPyPI
Paketesmoon-uv (0.0.1 – 0.0.16), my-magic-uv-helper (0.0.1)
Platformas mērķauditorijaWindows
Galvenā uzvedībaNeautentificēts JupyterLab serveris, publicēts internetā, izmantojot apgriezto tuneli
Likumīgu rīku ļaunprātīga izmantošanaUV, JupyterLab, mākoņu uzliesmojums, Pingy

Ēsma: vārds, kuram jūs jau uzticaties

uv ir viens no visvairāk instalētajiem Python rīkiem pēdējo divu gadu laikā, tāpēc “palīgs uv” ir pakotne, ko izstrādātājs instalē bez liekas domāšanas. FauxUV savu uzticamību pilnībā balsta uz šo nosaukumu. Pakotnes ietver īsts uv instalētājs no Astral — URL vērtajā slodzē norāda uz reāliem, cienījamiem mitinātājiem —, tāpēc ātrs skatiens parāda tikai uzticamas atsauces. Neviena no pakotnēm faktiski nepievieno uv funkcionalitāte; nosaukums ir viss noslēpums.

JupyterLab kā RCE dzinējs

Kravnesības centrālais elements ir palaišanas iekārta, kas iedarbina JupyterLab, noņemot visas aizsargbarjeras:

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

Katrs karodziņš noņem aizsardzību, un piegādātajā skriptā tie pat ir anotēti (oriģinālā ķīniešu valodā): tukšais marķieris "izslēdz paroļu un žetonu pārbaudes — ikviens var izveidot savienojumu." jupyter laboratorija ir likumīga datu zinātnes IDE, bet neebook šūna pēc būtības izpilda patvaļīgu kodu. Konfigurēts šādā veidā un piesaistīts 0.0.0.0, tas pārstāj būt IDE un kļūst par neautentificētu attālo čaulu resursdatorā — nav nepieciešams pielāgots ļaunprogrammatūras binārais fails, tikai nepareizā virzienā vērsts plaši izplatīts rīks.

Divi atbalsta elementi padara to sasniedzamu un atkārtojamu:

  • Klusas instalēšanas aktivizētājs. Agrīnās versijas darbina PowerShell ar -ExecutionPolicy apvedceļš tieši no setup.py on pip instalēšana, fonā ar apspiestām kļūdām, tāpēc pip izskatās normāli. Vēlākās versijas pārvieto to pašu primitīvu uz pip-uv komandrindas rīks — un pilnībā atmest automātisko palaišanu instalēšanas laikā.
  • Publisks reversais tunelis. Serveris ieslēgts 0.0.0.0 joprojām ir sasniedzams tikai tiem resursdatoriem, kas var maršrutēt uz šo mašīnu. Komplektā iekļautais modulis atver [Pingy](https://pinggy.io/) SSH reversais tunelis, kas pārsūta lokālo Jupyter portu uz publisku adresi, novēršot šo ierobežojumu. Nosūtītais skripts arī satur — komentētu — alternatīvu ceļu, izmantojot Cloudflare mākoņu uzliesmojumi un netsh port-proxy uz Linode IP, dokumentējot to pašu mērķi, izmantojot citu infrastruktūru.

Apkopojot: instalējiet pakotni, un Windows resursdators galu galā palaiž paroles nesaturošu JupyterLab un publicē to atklātā internetā.

Kā attīstījās FauxUV

FauxUV versijas tika piegādātas ātrā secībā, un lietderīgās slodzes aktivizēšanas punkts pārvietojās pāri tām — atgādinājums, ka viena atzīmēta versija reti kad atklāj visu pakotnes līnijas stāstu.

posms versijas Trigger Ko tas pievieno
Instalēšanas āķis moon-uv 0.0.1-0.0.3, my-magic-uv-helper 0.0.1 setup.py PIP instalēšanas laikā uv instalēšana + PATH pievienošana
CLI izpildlaiks moon-uv 0.0.5-0.0.13 pip-uv komanda bezparoles JupyterLab palaišanas programma
Tunelis moon-uv 0.0.14-0.0.16 pip-uv komanda aktīvs Pingy reversais tunelis

Jāatzīmē, ka automātiskā palaišana instalēšanas laikā bija noņemt vēlākajās, jaudīgākajās versijās — tātad skeneris, kas ieslēgts tikai dzīves cikla laikā hooks novērtētu jaunākos izlaidumus kā mazāk riskanti, tieši otrādi.

Kompromisa rādītāji

Apstiprināts, nolasot pakotnes pirmkodu; atzīmēti galapunkti komentēja ir failos, bet analizētā versija tos neizpilda. Tīkla indikatori ir noņemti.

Veids Indikators
Instalēt komandu powershell -ExecutionPolicy Bypass tiek ielādēts īstais UV instalētājs pip instalēšanas laikā
JupyterLab karodziņi --ip=0.0.0.0 --ServerApp.token="" --allow_origin='*' --disable_check_xsrf
Reversais tunelis (aktīvs) free[.]pinggy[.]io:443 lokālā pāradresācija 127.0.0.1:8888
Tuneļa resursdators (komentēts) cloudflared tunnel --url hxxp://127[.]0[.]0[.]1:2718
IP (komentēts) 45[.]79[.]134[.]161 (Linode) caur netsh port-proxy
Neatlaidība pievieno %USERPROFILE%\.local\bin lietotājam PATH

Uzvedības signāli, par kuriem ir vērts brīdināt, neatkarīgi no šīm konkrētajām virknēm: a pip instalēšana kas nārsto powershell -ExecutionPolicy apvedceļšjebkura jupyter palaišanas apvienošana žetons =”” ar –ip=0.0.0.0un izejošo SSH uz *.pinggy.io no izstrādātāja vai CI iekārtas.

Novērotā uzvedība un izcelsme

Abām pakotnēm ir kopīgs autors un metode: uzticama rīka nosaukums, tikai Windows paredzēta vārtēšana, fona izpilde ar kļūdu novēršanu un paļaušanās uz cienījamiem rīkiem, tāpēc ātrs ieskats ļauj redzēt tikai cienījamus URL. Avota kodā ir ķīniešu valodas komentāri, kas skaidri apraksta ar drošību saistītos karodziņus; mēs tos ziņojam kā novērojamus apgalvojumus failā, nevis kā apgalvojumu par motīvu. atļaut_oriģinālu vērtība un colab.bat faila nosaukums atspoguļo neformālās “kopīgot manu lokālo izpildlaika vidi” darbplūsmas, kas cirkulē pakalpojumā Google Colab. Neatkarīgi no izcelsmes, iepakotā rezultāts ir viens un tas pats.

Ietekme un norādījumi aizstāvjiem

Kas ir pakļauts mākslīgajam UV starojumam. Windows izstrādātāji un CI lietotāji, kas pip instalēšana viena no šīm pakotnēm. Paroles nesaturošs JupyterLab 0.0.0.0 ir attālināta koda izpilde ikvienam, kurš var sasniegt portu; tunelis atceļ ierobežojumu “kas var to sasniegt”. Serveris darbojas kā instalētājs, mantojot šī lietotāja failus, žetonus un mākoņa akreditācijas datus.

Kāpēc to ir viegli palaist garām. Katra tīkla virkne norāda uz cienījamu mitinātāju — Astral, JupyterLab, mākoņu uzliesmojumi, Pingy, Colab. Nav ne ļaunprogrammatūras binārā faila, ko jaukt, ne arī apmulsināta bloba, ko atšifrēt. Gan uz reputāciju, gan parakstu balstīta skenēšana tam nepievērš pietiekamu uzmanību, tāpēc uzvedības jautājums — Ko šīs pakotnes instalēšana liek ierīcei darīt? — ir tas, kas to noķer.

Norādījumi:

  • Apstrādājiet jebkuru instalēšanas laiku powershell -ExecutionPolicy apvedceļš kā būvējumu pārtraucošu signālu neatkarīgi no tā, kādu URL tas ielādē.
  • Brīdinājums ieslēgts jupyter palaists ar tukšu žetonu un –ip=0.0.0.0; šai kombinācijai nekad nevajadzētu parādīties darbstacijā vai skrējienprogrammā.
  • Izejošo SSH savienojumu ar tunelēšanas pakalpojumu sniedzējiem uzrauga (*.pinggy.io, *.trycloudflare.com) no izstrādātāju un CI vidēm.
  • instalēt uv no [tā oficiālā avota](https://docs.astral.sh/uv/) un esiet skeptiski pret trešo pušu “palīgu” pakotnēm, kas ietver rīku, kura instalēšana jau tā ir vienkārša.
  • Piespraust un atkārtoti pārskatīt atkarības jaunināšanas laikā — pakotnes rinda var paplašināt jaunas iespējas uz versiju virs versijas.
sca-tools-software-composition-analysis-tools
Prioritizējiet, novērsiet un aizsargājiet savus programmatūras riskus
Iegūstiet savu bezmaksas kontu.
Nepieciešama kredītkarte.

Nodrošiniet programmatūras izstrādi un piegādi

ar Xygeni produktu komplektu