TL. DR
PyPI փաթեթների կլաստեր փոխառել է անունը uv, արագ, չափազանց հայտնի Rust-ի վրա հիմնված Python փաթեթների կառավարիչը, ներկայանալու որպես UV օգնականներ: Նրանք գրեթե ոչ մի իրական ֆունկցիոնալություն չեն առաջարկում: Դրա փոխարեն նրանք ունեն Windows-ի օգտակար բեռ, որը կանգնած է JupyterLab սերվեր՝ անջատված նույնականացմամբ և ավելի ուշ տարբերակներում այն հրապարակում է հանրային ինտերնետում՝ հակադարձ թունելի միջոցով։
Ահա ամբողջ պատմությունը մեկ տողում. որպես գայթակղիչ՝ վստահելի գործիքի անուն, իսկ որպես հեռակառավարվող կոդի կատարման շարժիչ՝ JupyterLab։ Jupyter սերվերը գործարկում է այն կոդը, որը դուք մուտքագրում եք not-ի մեջ։ebook բջիջ; մեկը, որը գործարկվում է դատարկ տոկենով և կապված է յուրաքանչյուր ցանցային ինտերֆեյսի հետ, բաց մեկնաբան է, որը կարող է աշխատեցնել յուրաքանչյուր ոք, ով կարող է հասնել միացքին։
Մենք հետևում ենք կլաստերին որպես FauxUV. Ուսումնասիրված երկու փաթեթներն են moon-uv (0.0.1-0.0.16) եւ my-magic-uv-helper (0.0.1), հրապարակված նույն օպերատորի կողմից և վերլուծության պահին PyPI-ում ուղիղ եթերում։
| էկոհամակարգը | ՊԻՊԻ |
| Փաթեթներ | moon-uv (0.0.1-0.0.16), my-magic-uv-helper (0.0.1) |
| Հարթակի թիրախավորում | Windows |
| Հիմնական վարքագիծ | Անվավեր JupyterLab սերվեր, որը հրապարակվել է ինտերնետում հակադարձ թունելի միջոցով |
| Օրինական գործիքների չարաշահում | ուլտրամանուշակագույն, JupyterLab, ամպամած, Pinggy |
Գայթակղություն. անուն, որին արդեն վստահում եք
uv վերջին երկու տարիների ընթացքում ամենաշատ տեղադրված Python գործիքներից մեկն է, ուստի «օգնական է uv«» փաթեթ է, որը մշակողը տեղադրում է առանց երկրորդ մտքի: FauxUV-ն իր հեղինակությունը ամբողջությամբ ծախսում է այդ անվան վրա: Փաթեթները փաթեթավորում են անկեղծ uv Astral-ի տեղադրիչը՝ բեռնման URL-ները մատնանշում են իրական, հեղինակավոր հոսթեր, այնպես որ արագ հայացքից ոչինչ չի երևում, բացի վստահելի հղումներից։ Փաթեթներից ոչ մեկը իրականում չի ավելացնում uv ֆունկցիոնալություն; անունն ամբողջ քողարկումն է։
JupyterLab-ը որպես RCE շարժիչ
Բեռի կենտրոնական մասը արձակիչ-հարվածային սարք է, որը գործարկում է JupyterLab-ը յուրաքանչյուր պաշտպանիչ ցանկապատի հեռացումից հետո։
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 Յուրաքանչյուր դրոշ հեռացնում է պաշտպանությունը, և ուղարկված սկրիպտը նույնիսկ նշում է դրանք (բնօրինակ չինարենով). դատարկ տոկենը «անջատում է գաղտնաբառերի և տոկենների ստուգումները՝ ցանկացած մեկը կարող է միանալ»։ Յուպիտերի լաբորատորիա օրինական տվյալագիտության IDE է, բայց ոչebook բջիջը նախագծված կերպով կատարում է կամայական կոդ։ Կարգավորված է այսպես և կապված է 0.0.0.0, այն դադարում է IDE լինելուց և վերածվում է հոսթի վրա չհաստատված հեռակա shell-ի՝ ոչ մի հատուկ վնասակար ծրագրի բինար ֆայլ անհրաժեշտ չէ, պարզապես հիմնական գործիքը սխալ ուղղությամբ է ցույց տալիս։
Երկու հենարանային մասերը դա դարձնում են հասանելի և կրկնելի.
- Լուռ տեղադրման ակտիվացուցիչ։ Վաղ տարբերակները գործարկում են PowerShell-ը -Կատարման քաղաքականության շրջանցում ուղիղ setup.py on pip տեղադրում, ֆոնին՝ սխալները ճնշելով այնպես, որ ծվծվալ նորմալ տեսք ունի։ Ավելի ուշ տարբերակները նույն պրիմիտիվը տեղափոխում են պիպ-ուվ հրամանի տողի գործիք — և ամբողջությամբ անջատեք տեղադրման ժամանակ ավտոմատ գործարկումը։
- Հանրային հակադարձ թունել։ Սերվերը միացված է 0.0.0.0 դեռևս հասանելի է միայն այն հոսթերին, որոնք կարող են երթուղիներ բացել դեպի մեքենա։ Միացված մոդուլը բացում է [Pinggy](https://pinggy.io/) SSH հակադարձ թունել, որը տեղական Jupyter պորտը վերահասցեագրում է հանրային հասցեի՝ վերացնելով այդ սահմանափակումը: Ուղարկված սկրիպտը նաև իրականացնում է՝ մեկնաբանված՝ այլընտրանքային ուղի՝ օգտագործելով Cloudflare-ի ամպամած եւ netsh port-proxy դեպի Linode IP, փաստաթղթավորելով նույն նպատակը տարբեր ենթակառուցվածքների միջոցով։
Հավաքեք. տեղադրեք փաթեթը, և Windows հոսթը գործարկում է գաղտնաբառ չունեցող JupyterLab-ը և հրապարակում այն բաց ինտերնետում։
Ինչպես է զարգացել FauxUV-ը
FauxUV-ի տարբերակները արագորեն առաքվում էին հաջորդաբար, և բեռնվածքի ձգանման կետը տեղաշարժվում էր դրանց վրայով՝ հիշեցում այն բանի մասին, որ մեկ դրոշակավորված տարբերակը հազվադեպ է պատմում փաթեթների գծի ամբողջ պատմությունը։
| Փուլ | Versions | ձգան | Ինչ է այն ավելացնում |
|---|---|---|---|
| Տեղադրման կեռիկ | moon-uv 0.0.1-0.0.3, my-magic-uv-helper 0.0.1 | setup.py pip տեղադրման ժամանակ | uv տեղադրում + PATH նախածանց |
| CLI-ի աշխատանքային ժամանակ | moon-uv 0.0.5-0.0.13 | pip-uv հրաման | գաղտնաբառազուրկ JupyterLab գործարկիչը |
| Թունել | moon-uv 0.0.14-0.0.16 | pip-uv հրաման | ակտիվ Փինգգիի հակադարձ թունել |
Հատկանշական է, որ տեղադրման ժամանակ ավտոմատ գործարկումը հեռացված ավելի ուշ, ավելի հզոր տարբերակներում՝ այսինքն՝ սկաները մուտքագրվում է միայն կյանքի ցիկլի ընթացքում hooks կգնահատեր ավելի նոր թողարկումները որպես ավելի քիչ ռիսկային, ճիշտ հակառակ ուղղությամբ։
Փոխզիջման ցուցիչներ
Հաստատված է փաթեթի աղբյուրը կարդալով. վերջնակետերը նշված են մեկնաբանել առկա են ֆայլերում, բայց չեն կատարվում վերլուծված տարբերակի կողմից։ Ցանցի ցուցիչները անջատված են։
| Տիպ | Ցուցիչ |
|---|---|
| Տեղադրել հրամանը | powershell -ExecutionPolicy Bypass Pip տեղադրման ժամանակ իսկական UV տեղադրիչը ստանալը |
| JupyterLab դրոշներ | --ip=0.0.0.0 --ServerApp.token="" --allow_origin='*' --disable_check_xsrf |
| Հակադարձ թունել (ակտիվ) | free[.]pinggy[.]io:443 տեղական վերահասցեավորում 127.0.0.1:8888 |
| Թունելի հյուրընկալող (մեկնաբանված) | cloudflared tunnel --url hxxp://127[.]0[.]0[.]1:2718 |
| IP (մեկնաբանված) | 45[.]79[.]134[.]161 (Լինոդ) միջոցով netsh port-proxy |
| Համառություն | նախադրում է %USERPROFILE%\.local\bin դեպի PATH օգտագործողը |
Վարքային ազդանշաններ, որոնց վրա արժե ուշադրություն դարձնել, անկախ այս ճշգրիտ տողերից՝ ա pip տեղադրում որը ծնվում է powershell -ExecutionPolicy շրջանցիկ; ցանկացած jupyter մեկնարկային համատեղում տոկեն=”” հետ –ip=0.0.0.0; և ելքային SSH դեպի *.pinggy.io մշակողից կամ CI մեքենայից։
Դիտարկված վարքագիծ և ծագում
Երկու փաթեթներն ունեն ընդհանուր հեղինակ և մեթոդ՝ վստահելի գործիքի անուն, միայն Windows-ի համար նախատեսված դարպաս, սխալներից պաշտպանված ֆոնային աշխատանք և հեղինակավոր գործիքների վրա հիմնվածություն, այնպես որ արագ զննման դեպքում երևում են միայն հեղինակավոր URL-ներ: Աղբյուրը պարունակում է չինարեն լեզվով մեկնաբանություններ, որոնք հստակ նկարագրում են անվտանգությանը վերաբերող դրոշները. մենք դրանք ֆայլում ներկայացնում ենք որպես դիտարկելի հայտարարություններ, այլ ոչ թե որպես դրդապատճառի մասին պնդում: allow_origin արժեք և colab.bat Ֆայլի անունը արձագանքում է Google Colab-ի համար շրջանառվող ոչ պաշտոնական «կիսվել իմ տեղական աշխատանքային ժամանակով» աշխատանքային հոսքերին: Անկախ ծագումից, փաթեթավորված արդյունքը նույնն է:
Ազդեցություն և ուղղորդում պաշտպանների համար
Ո՞վ է ենթարկվում FauxUV ճառագայթման։ Windows մշակողներ և CI վազողներ, որոնք pip տեղադրում այս փաթեթներից մեկը։ Գաղտնաբառ չունեցող JupyterLab-ը 0.0.0.0 հեռակա կոդի կատարում է յուրաքանչյուրի համար, ով կարող է հասնել պորտին. թունելը վերացնում է «ով կարող է հասնել դրան» սահմանափակումը: Սերվերը աշխատում է որպես տեղադրող օգտատեր՝ ժառանգելով այդ օգտատիրոջ ֆայլերը, տոկենները և ամպային մուտքի տվյալները:
Ինչու՞ է հեշտ բաց թողնելը։ Յուրաքանչյուր ցանցային տող մատնանշում է հեղինակավոր հոսթինգ՝ Astral, JupyterLab, ամպամած, Փինգգի, Colab: Չկա որևէ վնասակար ֆայլ հեշելու համար և չկա որևէ մշուշոտ բլոկ վերծանելու համար: Հեղինակության և ստորագրության վրա հիմնված սկանավորումը թերագնահատում է սա, այդ իսկ պատճառով վարքային հարցը՝ Ի՞նչ է անում այս փաթեթի տեղադրումը համակարգչին — նա է, ով բռնում է այն։
Ուղեցույց
- Բուժեք ցանկացած տեղադրման ժամանակ powershell -ExecutionPolicy շրջանցիկ որպես կառուցվածքը խզող ազդանշան, անկախ նրանից, թե URL-ը որից այն ստանում է։
- Զգուշացում միացված է jupyter գործարկվել է դատարկ տոկենով և –ip=0.0.0.0; այդ համադրությունը երբեք չպետք է հայտնվի աշխատանքային կայանում կամ գործարկման կայանում։
- Հետևեք SSH-ի ելքային տվյալներին դեպի թունելային մատակարարներ (*.pinggy.io, *.trycloudflare.com) մշակողի և CI միջավայրերից։
- Տեղադրեք uv [պաշտոնական աղբյուրից] (https://docs.astral.sh/uv/) և կասկածամիտ եղեք երրորդ կողմի «օգնական» փաթեթների նկատմամբ, որոնք փաթեթավորում են արդեն իսկ հեշտ տեղադրման համար աննշան գործիքը։
- Ամրացնել և վերանայել կախվածությունները թարմացման վրա. փաթեթների շարքը կարող է զարգացնել նոր հնարավորություններ տարբերակից տարբերակ։



