FauxUV: Awọn package uv PyPI eke Ṣi Jupyter si oju opo wẹẹbu

FauxUV: àwọn olùrànlọ́wọ́ uv PyPI èké tí wọ́n ń ṣí olupin Jupyter tí a kò fọwọ́ sí lórí ìkànnì ayélujára

TL; DR

Ẹgbẹ́ àwọn ìdìpọ̀ PyPI ló gba orúkọ náà uv, olùdarí package Python tí ó wà ní Rust tí ó yára, tí ó sì gbajúmọ̀ gidigidi, láti ṣe bí olùrànlọ́wọ́ uv. Wọn kò fi iṣẹ́ gidi kankan ránṣẹ́. Ohun tí wọ́n ń gbé dípò rẹ̀ ni ẹrù iṣẹ́ Windows tí ó dúró ṣinṣin Ẹ̀rọ olupin JupyterLab pẹ̀lú ìfọwọ́símọ́ tí a ti pa àti, nínú àwọn àtúnṣe tó tẹ̀lé e, wọ́n máa ń tẹ̀ ẹ́ jáde sí ìkànnì ayélujára gbogbogbòò nípasẹ̀ ọ̀nà àtúnṣe kan.

Iyẹn ni gbogbo ìtàn ní ìlà kan: Orúkọ irinṣẹ́ tí a gbẹ́kẹ̀lé gẹ́gẹ́ bí ìfàmọ́ra, àti JupyterLab gẹ́gẹ́ bí ẹ̀rọ ìṣiṣẹ́ koodu-latọna-ọ̀nà. Olùpèsè Jupyter kan ń lo kódì èyíkéyìí tí o bá tẹ̀ sínú kò síebook sẹ́ẹ̀lì; èyí tí a gbé kalẹ̀ pẹ̀lú àmì òfo tí a sì so mọ́ gbogbo ojú ọ̀nà nẹ́tíwọ́ọ̀kì jẹ́ ìtumọ̀ tí ó ṣí sílẹ̀ tí ẹnikẹ́ni tí ó bá lè dé èbúté lè wakọ̀.

A tọpa ẹgbẹ́ náà bí FauxUVÀwọn àpò méjì tí a ṣàyẹ̀wò ni moon-uv (0.0.1-0.0.16) ati my-magic-uv-helper (0.0.1), tí olùṣiṣẹ́ kan náà tẹ̀ jáde, tí ó sì wà láàyè lórí PyPI ní àkókò ìṣàyẹ̀wò.

Eda ilolupoP&PI
jomoon-uv (0.0.1-0.0.16), my-magic-uv-helper (0.0.1)
Pẹpẹ tí a fojúsùn síWindows
Ìwà pàtàkìẸ̀rọ olupin JupyterLab tí a kò fọwọ́ sí, tí a tẹ̀ jáde sí ayélujára nípasẹ̀ ọ̀nà ìyípadà kan
Àwọn irinṣẹ́ tó bófin mu tí a kò lò dáadáauv, JupyterLab, cloudflared, Pinggy

Ìfàmọ́ra: orúkọ tí o ti gbẹ́kẹ̀lé tẹ́lẹ̀

uv jẹ́ ọ̀kan lára ​​àwọn irinṣẹ́ Python tí a fi sori ẹrọ jùlọ ní ọdún méjì sẹ́yìn, nítorí náà “olùrànlọ́wọ́ fún uv"jẹ́ àpò tí olùgbékalẹ̀ kan fi sílẹ̀ láìronú jinlẹ̀. FauxUV lo gbogbo ìgbẹ́kẹ̀lé rẹ̀ lórí orúkọ yẹn. Àwọn àpò náà di mọ́ onigbagbo uv olùfi sori ẹrọ lati Astral — awọn URL ni aaye fifuye ni awọn alejo gidi, olokiki — nitorinaa wiwo ni kiakia ko ri ohunkohun ayafi awọn itọkasi ti o gbẹkẹle. Ko si ọkan ninu awọn package ti o ṣafikun ni otitọ. uv iṣẹ́; orúkọ náà ni gbogbo àwọ̀ ara.

JupyterLab gẹ́gẹ́ bí ẹ̀rọ RCE

Ohun èlò tó ń gbé ẹrù náà jáde ni ohun èlò tó ń bẹ̀rẹ̀ JupyterLab pẹ̀lú gbogbo ohun èlò tó ń dáàbò bo ara rẹ̀:

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

Àsíá kọ̀ọ̀kan yọ ààbò kúrò, ìwé àkọsílẹ̀ tí a fi ránṣẹ́ sì tún kọ wọ́n sílẹ̀ (ní èdè Ṣáínà àtilẹ̀wá): àmì òfo náà "Pa ọ̀rọ̀ìpamọ́ àti àwọn àyẹ̀wò àmì - ẹnikẹ́ni le sopọ̀." jupyter lab jẹ́ IDE ìmọ̀-ìjìnlẹ̀ dátà tó tọ́, ṣùgbọ́n kìí ṣeebook Sẹ́ẹ̀lì náà ń ṣe kódì àìdánimọ̀ nípa ìṣètò. A ṣètò rẹ̀ lọ́nà yìí, ó sì dè é mọ́ 0.0.0.0, ó dẹ́kun jíjẹ́ IDE ó sì di ikarahun latọna jijin tí a kò fọwọ́ sí lórí olùgbàlejò — kò sí àìní ìpele malware àṣà tí a nílò, ohun èlò pàtàkì kan tí ó tọ́ka sí ọ̀nà tí kò tọ́.

Àwọn ohun méjì tó lè mú kí èyí ṣeé dé ọ̀dọ̀ rẹ̀ àti kí ó ṣeé tún ṣe:

  • Ohun tí ó ń fa ìfìdíkalẹ̀ láìsí ìdákẹ́jẹ́ẹ́. Awọn ẹya akọkọ nṣiṣẹ PowerShell pẹlu -Awọn Idaabobo Ere-igbesoke Ere taara lati setup.py on pip fi sori ẹrọ, ní àtẹ̀lẹ̀ pẹ̀lú àwọn àṣìṣe tí a ti bò mọ́lẹ̀ bẹ́ẹ̀ Pipa ó dàbí ohun tó wọ́pọ̀. Àwọn àtúnṣe tó tẹ̀lé e yìí gbé irú ìpìlẹ̀ kan náà sí pip-uv irinṣẹ́ àṣẹ-ìlànà — kí o sì fi ìgbà tí a fi ń fi sori ẹ̀rọ náà sílẹ̀ pátápátá.
  • Ọ̀nà ìyípadà gbogbogbòò. Ẹ̀rọ olupin kan wà lórí 0.0.0.0 Àwọn olùgbàlejò tí wọ́n lè dé ẹ̀rọ náà nìkan ló lè dé. Módù kan tí a so pọ̀ ṣí [Pinggy](https://pinggy.io/) SSH reverse doorway tí ó ń gbé ibudo Jupyter agbegbe lọ sí àdírẹ́sì gbogbogbò, tí ó sì ń yọ ààlà yẹn kúrò. Ìwé àfọwọ́kọ tí a fi ránṣẹ́ náà tún ní — àlàyé — ọ̀nà mìíràn tí ó ń lo Cloudflare's awọsanma ti o ni imọlẹ ati ki o kan netsh aṣoju ibudo si IP Linode kan, ti o ṣe akọsilẹ ibi-afẹde kanna nipasẹ awọn amayederun oriṣiriṣi.

Papọ̀: fi àpò náà sínú rẹ̀, olùgbàlejò Windows kan yóò sì lo JupyterLab tí kò ní ọ̀rọ̀-àkọọ́lẹ̀, yóò sì tẹ̀ ẹ́ jáde sí ìkànnì ayélujára tí ó ṣí sílẹ̀.

Bawo ni FauxUV ṣe dagbasoke

Àwọn ẹ̀dà FauxUV ni wọ́n fi ránṣẹ́ ní ìtẹ̀léra, ojú àmì ìfàsẹ́yìn náà sì kọjá wọn — èyí tí ó ń ránni létí pé ẹ̀dà kan tí a fi àmì sí kì í sábà sọ gbogbo ìtàn ìlà àpò kan.

ipele awọn ẹya nfa Ohun tí ó fi kún un
Fi sori ẹrọ-kio moon-uv 0.0.1-0.0.3, my-magic-uv-helper 0.0.1 setup.py lori fifi sori ẹrọ pip fifi sori ẹrọ uv + PATH prepend
Àkókò ìṣiṣẹ́ CLI moon-uv 0.0.5-0.0.13 pip-uv pipaṣẹ launcher JupyterLab tí kò ní ọ̀rọ̀ìpamọ́
Oju eefin moon-uv 0.0.14-0.0.16 pip-uv pipaṣẹ ihò ìyípadà Pinggy tó ń ṣiṣẹ́

Ni pataki, ṣiṣe adaṣe-laifọwọyi ni akoko fifi sori ẹrọ jẹ kuro nínú àwọn ẹ̀yà tó gbẹ̀yìn, tó lágbára jù — nítorí náà, ẹ̀rọ amóhùnmáwòrán kan máa ń lo ìyípo ìgbésí ayé nìkan hooks yoo gba awọn idasilẹ tuntun bi Ti o kere eewu, gangan sẹhin.

Awọn afihan ti adehun

A ti fi idi rẹ̀ múlẹ̀ nípa kíkà orísun àkójọpọ̀ náà; àwọn àmì ìparí tí a sàmì sí commented Wọ́n wà nínú àwọn fáìlì náà ṣùgbọ́n wọn kò ṣe é nípasẹ̀ ẹ̀yà tí a ṣàyẹ̀wò. A ti bàjẹ́ àwọn àmì nẹ́tíwọ́ọ̀kì.

iru Atọka
Fi aṣẹ sori ẹrọ powershell -ExecutionPolicy Bypass gbigba olufisilẹ uv gidi, ni akoko fifi sori ẹrọ pip
Àwọn àsíá JupyterLab --ip=0.0.0.0 --ServerApp.token="" --allow_origin='*' --disable_check_xsrf
Ihò ìyípadà (tí ń ṣiṣẹ́) free[.]pinggy[.]io:443 gbigberanṣẹ agbegbe 127.0.0.1:8888
Olùgbàlejò ojú ọ̀nà (tí a sọ̀rọ̀ nípa rẹ̀) cloudflared tunnel --url hxxp://127[.]0[.]0[.]1:2718
IP (tí a ṣe àkíyèsí) 45[.]79[.]134[.]161 (Linode) nipasẹ netsh port-proxy
itẹramọṣẹ ṣe ìṣáájú %USERPROFILE%\.local\bin sí olùlò PATH

Àwọn àmì ìwà tó yẹ kí a kìlọ̀ fún, láìsí àwọn okùn pàtó wọ̀nyí: pip fi sori ẹrọ tí ó ń yọ powershell -Ipasẹ Ilana Iṣẹ́; èyíkéyìí jupyter àpapọ̀ ìfilọ́lẹ̀ àmì =”” pẹlu –ip=0.0.0.0àti ìjáde SSH sí *.pinggy.io láti ọ̀dọ̀ olùgbéjáde tàbí ẹ̀rọ CI kan.

Ìwà àti ìbílẹ̀ tí a ṣàkíyèsí

Àwọn àpò méjèèjì ní olùkọ̀wé kan àti ọ̀nà kan: orúkọ ohun èlò tí a gbẹ́kẹ̀lé, ìdènà Windows nìkan, ìṣe àgbékalẹ̀ ìṣẹ̀dá tí a ti dí lọ́wọ́ àṣìṣe, àti ìgbẹ́kẹ̀lé lórí àwọn irinṣẹ́ tí a gbẹ́kẹ̀lé, nítorí náà wíwo àwọn URL tí a gbẹ́kẹ̀lé nìkan ni ó wà níbẹ̀. Orísun náà ní àwọn ọ̀rọ̀ èdè Chinese tí ó ṣàlàyé àwọn àsíá tí ó bá ààbò mu ní kedere; a ń ròyìn wọn gẹ́gẹ́ bí àwọn gbólóhùn tí a lè rí nínú fáìlì náà, kì í ṣe gẹ́gẹ́ bí ẹ̀sùn nípa ìdí. allow_origin iye ati a colab.bat Orúkọ fáìlì náà tún ṣe àtúnsọ àwọn iṣẹ́ ìṣiṣẹ́ “pín àkókò ìṣiṣẹ́ mi ní agbègbè” tí ó ń tàn káàkiri fún Google Colab. Ohunkóhun tí ó bá jẹ́ orísun rẹ̀, àbájáde tí a kó jọ náà jọra.

Ipa ati itọsọna fun awọn olugbeja

Ta ni ó fara han sí FauxUV? Àwọn olùgbéjáde Windows àti àwọn olùsáré CI tí pip fi sori ẹrọ Ọkan ninu awọn idii wọnyi. JupyterLab ti ko ni ọrọ igbaniwọle lori 0.0.0.0 jẹ́ ìṣiṣẹ́ koodu latọna jijin fún ẹnikẹ́ni tí ó bá lè dé ibudo náà; ihò náà yọ ààlà “ẹni tí ó lè dé ibẹ̀” kúrò. Server náà ń ṣiṣẹ́ gẹ́gẹ́ bí olùlò tí ń fi sori ẹ̀rọ, ó ń jogún àwọn fáìlì olùlò náà, àwọn àmì, àti àwọn ìwé ẹ̀rí ìkùukùu.

Ìdí tí ó fi rọrùn láti pàdánù. Gbogbo okun nẹ́tíwọ́ọ̀kì tọ́ka sí olùgbàlejò olókìkí kan — Astral, JupyterLab, awọsanma ti o ni imọlẹ, Pinggy, Colab. Kò sí malware binary sí hash àti kò sí blob tí a fi ìdènà ṣe. Ìwòran olókìkí àti ìfọwọ́sowọ́pọ̀ kò fi bẹ́ẹ̀ ṣe pàtàkì, ìdí nìyí tí ìbéèrè ìwà — Kí ni fífi àpò yìí sílò mú kí ẹ̀rọ náà ṣe? — ni ẹni tí ó gbà á.

Itoni:

  • Ṣe itọju eyikeyi akoko fifi sori ẹrọ powershell -Ipasẹ Ilana Iṣẹ́ gẹ́gẹ́ bí àmì ìkọ́lé tí ó ń bàjẹ́, ohunkóhun tí ó bá mú wá láti URL.
  • Itaniji lori jupyter ti bẹrẹ pẹlu aami ofo kan ati –ip=0.0.0.0; àpapọ̀ yẹn kò gbọdọ̀ farahàn lórí ibi iṣẹ́ tàbí ẹ̀rọ ìṣiṣẹ́.
  • Atẹle fun awọn olupese SSH ti njade lọ si oju eefin (*.pinggy.io, *.trycloudflare.com) láti àwọn agbègbè olùgbéjáde àti CI.
  • fi sori ẹrọ uv láti [orísun àṣẹ rẹ̀](https://docs.astral.sh/uv/) kí o sì ṣiyèméjì nípa àwọn páálí “olùrànlọ́wọ́” ẹni-kẹta tí ó di ohun èlò tí kò ṣe pàtàkì láti fi sori ẹrọ.
  • Pin ati tun-ṣe atunyẹwo awọn igbẹkẹle lori igbesoke - laini package kan le mu agbara tuntun dagba ẹya-lori-ẹya.
àwọn irinṣẹ́ ìwádìí-àkójọpọ̀-ẹ̀rọ-sca-tools
Ṣe àfiyèsí, ṣe àtúnṣe, kí o sì dáàbò bo àwọn ewu sọ́fítíwè rẹ
Gba Akaunti Ọfẹ rẹ.
Ko si kaadi kirẹditi ti o nilo.

Ṣe aabo fun idagbasoke ati ifijiṣẹ sọfitiwia rẹ

pẹlu Xygeni Product Suite