TL; កុង
ចង្កោមនៃកញ្ចប់ PyPI បានខ្ចីឈ្មោះរបស់ uvដែលជាកម្មវិធីគ្រប់គ្រងកញ្ចប់ Python ដែលមានមូលដ្ឋានលើ Rust ដ៏ពេញនិយម និងលឿនបំផុត ដើម្បីធ្វើពុតជាជំនួយការ uv។ ពួកគេស្ទើរតែគ្មានមុខងារពិតប្រាកដទេ។ អ្វីដែលពួកគេដឹកជំនួសវិញគឺ payload របស់ Windows ដែលឈរឡើង ម៉ាស៊ីនមេ JupyterLab ដែលមានការផ្ទៀងផ្ទាត់ត្រូវបានបិទ ហើយនៅក្នុងកំណែក្រោយៗទៀត បោះពុម្ពផ្សាយវាទៅកាន់អ៊ីនធឺណិតសាធារណៈតាមរយៈផ្លូវរូងក្រោមដីបញ្ច្រាស។
នោះជារឿងទាំងមូលនៅក្នុងបន្ទាត់តែមួយ៖ ឈ្មោះឧបករណ៍ដែលគួរឱ្យទុកចិត្តជាឧបករណ៍ទាក់ទាញ និង JupyterLab ជាម៉ាស៊ីនប្រតិបត្តិកូដពីចម្ងាយ។ ម៉ាស៊ីនបម្រើ Jupyter ដំណើរការកូដណាមួយដែលអ្នកវាយចូលទៅក្នុងebook ក្រឡា; មួយដែលបានបើកដំណើរការជាមួយថូខឹនទទេ ហើយភ្ជាប់ទៅនឹងចំណុចប្រទាក់បណ្តាញនីមួយៗ គឺជាអ្នកបកប្រែបើកចំហ ដែលអ្នកណាដែលអាចទៅដល់ច្រកបាន អាចដំណើរការបាន។
យើងតាមដានចង្កោមដូចជា កាំរស្មីយូវីក្លែងក្លាយកញ្ចប់ទាំងពីរដែលត្រូវបានពិនិត្យគឺ 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 ដែលមិនទាន់បានផ្ទៀងផ្ទាត់ ត្រូវបានផ្សព្វផ្សាយទៅអ៊ីនធឺណិតតាមរយៈផ្លូវរូងក្រោមដីបញ្ច្រាស |
| ឧបករណ៍ស្របច្បាប់ត្រូវបានរំលោភបំពាន | uv, JupyterLab, cloudflared, Pinggy |
នុយ៖ ឈ្មោះដែលអ្នកទុកចិត្តរួចហើយ
uv គឺជាឧបករណ៍ Python មួយក្នុងចំណោមឧបករណ៍ដែលត្រូវបានដំឡើងច្រើនបំផុតក្នុងរយៈពេលពីរឆ្នាំចុងក្រោយនេះ ដូច្នេះ "ជាជំនួយសម្រាប់ uv"គឺជាកញ្ចប់ដែលអ្នកអភិវឌ្ឍន៍ដំឡើងដោយមិនគិតពីរដង។ FauxUV ចំណាយភាពជឿជាក់របស់ខ្លួនទាំងស្រុងលើឈ្មោះនោះ។ កញ្ចប់រុំព័ទ្ធ ពិតប្រាកដ uv កម្មវិធីដំឡើងពី Astral — URL នៅក្នុងចំណុច payload នៅម៉ាស៊ីនមេពិតប្រាកដ និងមានកេរ្តិ៍ឈ្មោះល្អ — ដូច្នេះការក្រឡេកមើលរហ័សមិនឃើញអ្វីក្រៅពីឯកសារយោងដែលអាចទុកចិត្តបានទេ។ គ្មានកញ្ចប់ណាមួយពិតជាបន្ថែម uv មុខងារ; ឈ្មោះគឺជាការក្លែងបន្លំទាំងមូល។
JupyterLab ជាម៉ាស៊ីន RCE
ចំណុចកណ្តាលនៃ payload គឺជា launcher ដែលចាប់ផ្តើម JupyterLab ជាមួយនឹង guard rail នីមួយៗដែលត្រូវបានដកចេញ៖
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 ហើយក្លាយជាសែលពីចម្ងាយដែលមិនបានផ្ទៀងផ្ទាត់នៅលើម៉ាស៊ីន - មិនតម្រូវឱ្យមានប្រព័ន្ធគោលពីរមេរោគផ្ទាល់ខ្លួនទេ គ្រាន់តែជាឧបករណ៍សំខាន់មួយដែលចង្អុលបង្ហាញផ្លូវខុស។
បំណែកទ្រទ្រង់ពីរធ្វើឱ្យវាអាចទៅដល់បាន និងអាចធ្វើម្តងទៀតបាន៖
- ឧបករណ៍បង្កការដំឡើងដោយស្ងាត់ៗ។ កំណែដំបូងៗដំណើរការ PowerShell ជាមួយ -EpretPolicy Bypass ត្រង់ពី setup.py on ដំឡើង pipនៅផ្ទៃខាងក្រោយជាមួយនឹងកំហុសដែលត្រូវបានបង្ក្រាបដូច្នេះ PIP មើលទៅធម្មតា។ កំណែក្រោយៗទៀតបានផ្លាស់ប្តូរបឋមដូចគ្នាទៅជា pip-uv ឧបករណ៍បន្ទាត់ពាក្យបញ្ជា — ហើយលុបចោលការដំណើរការដោយស្វ័យប្រវត្តិនៃពេលវេលាដំឡើងទាំងស្រុង។
- ផ្លូវរូងក្រោមដីបញ្ច្រាស់សាធារណៈ។ ម៉ាស៊ីនបម្រើមួយនៅលើ 0.0.0.0 នៅតែអាចទៅដល់បានដោយម៉ាស៊ីនដែលអាចបញ្ជូនបន្តទៅកាន់ម៉ាស៊ីន។ ម៉ូឌុលដែលភ្ជាប់ជាបាច់នឹងបើក [Pinggy](https://pinggy.io/) ផ្លូវរូងក្រោមដីបញ្ច្រាស SSH ដែលបញ្ជូនបន្តច្រក Jupyter ក្នុងស្រុកទៅកាន់អាសយដ្ឋានសាធារណៈ ដោយលុបដែនកំណត់នោះ។ ស្គ្រីបដែលបានដឹកជញ្ជូនក៏មាន — មតិយោបល់ចេញ — ផ្លូវជំនួសដោយប្រើ Cloudflare's ពពកភ្លឺចែងចាំង និង netsh port-proxy ទៅកាន់ Linode IP ដោយកត់ត្រាគោលដៅដូចគ្នាតាមរយៈហេដ្ឋារចនាសម្ព័ន្ធផ្សេងៗគ្នា។
ដាក់បញ្ចូលគ្នា៖ ដំឡើងកញ្ចប់ ហើយម៉ាស៊ីនមេ Windows នឹងបញ្ចប់ការដំណើរការ JupyterLab ដែលគ្មានពាក្យសម្ងាត់ ហើយបោះពុម្ពផ្សាយវាទៅកាន់អ៊ីនធឺណិតបើកចំហ។
របៀបដែល FauxUV វិវត្តន៍
កំណែរបស់ FauxUV ត្រូវបានដឹកជញ្ជូនជាបន្តបន្ទាប់យ៉ាងរហ័ស ហើយចំណុចកេះរបស់ payload បានផ្លាស់ទីឆ្លងកាត់ពួកវា — ជាការរំលឹកថាកំណែដែលមានទង់មួយកម្រនឹងប្រាប់រឿងរ៉ាវទាំងមូលនៃខ្សែកញ្ចប់មួយ។
| ដំណាក់កាល | កំណែ | គន្លឹះ | អ្វីដែលវាបន្ថែម |
|---|---|---|---|
| ទំពក់ដំឡើង | moon-uv ២២១៧–២២២១, 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 ពាក្យបញ្ជា | ផ្លូវរូងក្រោមដីបញ្ច្រាស់ Pinggy សកម្មមួយ |
ជាពិសេស ការដំណើរការដោយស្វ័យប្រវត្តិនៅពេលដំឡើងគឺ បានយកចេញ នៅក្នុងកំណែក្រោយៗទៀត ដែលមានសមត្ថភាពច្រើនជាង — ដូច្នេះម៉ាស៊ីនស្កេនគ្រាន់តែវាយបញ្ចូលវដ្តជីវិតប៉ុណ្ណោះ hooks នឹងផ្តល់ពិន្ទុដល់ការចេញផ្សាយថ្មីៗជា តិច ប្រថុយប្រថាន, យ៉ាងពិតប្រាកដបញ្ច្រាស់។
សូចនាករនៃការសម្របសម្រួល
បានបញ្ជាក់ដោយការអានប្រភពកញ្ចប់; ចំណុចបញ្ចប់ត្រូវបានសម្គាល់ បានអធិប្បាយ មានវត្តមាននៅក្នុងឯកសារ ប៉ុន្តែមិនត្រូវបានប្រតិបត្តិដោយកំណែដែលបានវិភាគទេ។ សូចនាករបណ្តាញត្រូវបានខូចទ្រង់ទ្រាយ។
| វាយបញ្ចូល | ទ្រនិចបង្ហាញ |
|---|---|
| ដំឡើងពាក្យបញ្ជា | powershell -ExecutionPolicy Bypass កំពុងទាញយកកម្មវិធីដំឡើង uv ពិតប្រាកដ នៅពេលដំឡើង pip |
| ទង់ជាតិ 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 - ការរំលងគោលការណ៍ប្រតិបត្តិណាមួយ ជូបឺរ ការចាប់ផ្តើមរួមបញ្ចូលគ្នា សញ្ញាសម្គាល់ = "" ជាមួយ –ip=0.0.0.0និង SSH ចេញទៅ *.pinggy.io ពីអ្នកអភិវឌ្ឍន៍ ឬម៉ាស៊ីន CI។
ឥរិយាបថ និងប្រភពដើមដែលសង្កេតឃើញ
កញ្ចប់ទាំងពីរចែករំលែកអ្នកនិពន្ធ និងវិធីសាស្ត្រមួយ៖ ឈ្មោះឧបករណ៍ដែលគួរឱ្យទុកចិត្ត ច្រកទ្វារសម្រាប់តែ Windows ការប្រតិបត្តិផ្ទៃខាងក្រោយដែលបង្ក្រាបកំហុស និងការពឹងផ្អែកលើឧបករណ៍ដែលមានកេរ្តិ៍ឈ្មោះល្អ ដូច្នេះការមើលរហ័សនឹងឃើញតែ URL ដែលមានកេរ្តិ៍ឈ្មោះល្អ។ ប្រភពនេះមានមតិយោបល់ជាភាសាចិនដែលពិពណ៌នាអំពីទង់ពាក់ព័ន្ធនឹងសុវត្ថិភាពយ៉ាងច្បាស់។ យើងរាយការណ៍ពីមតិយោបល់ទាំងនោះជាសេចក្តីថ្លែងការណ៍ដែលអាចសង្កេតឃើញនៅក្នុងឯកសារ មិនមែនជាការអះអាងអំពីហេតុផលនោះទេ។ ប្រភពដើមអនុញ្ញាត តម្លៃ និងមួយ colab.bat filename echo គឺជាលំហូរការងារក្រៅផ្លូវការ “ចែករំលែកពេលវេលាដំណើរការក្នុងស្រុករបស់ខ្ញុំ” ដែលចរាចរសម្រាប់ Google Colab។ ទោះបីជាប្រភពដើមជាអ្វីក៏ដោយ លទ្ធផលដែលបានវេចខ្ចប់គឺដូចគ្នា។
ផលប៉ះពាល់ និងការណែនាំសម្រាប់អ្នកការពារ
អ្នកណាដែលប៉ះពាល់នឹង FauxUV។ អ្នកអភិវឌ្ឍន៍ Windows និងអ្នកដំណើរការ CI ដែល ដំឡើង pip កញ្ចប់មួយក្នុងចំណោមកញ្ចប់ទាំងនេះ។ JupyterLab ដែលគ្មានពាក្យសម្ងាត់នៅលើ 0.0.0.0 គឺជាការប្រតិបត្តិកូដពីចម្ងាយសម្រាប់អ្នកដែលអាចទៅដល់ច្រកបាន។ ផ្លូវរូងក្រោមដីនេះលុបដែនកំណត់ "អ្នកដែលអាចទៅដល់វាបាន"។ ម៉ាស៊ីនមេដំណើរការជាអ្នកប្រើប្រាស់ដែលកំពុងដំឡើង ដោយទទួលមរតកឯកសារ ថូខឹន និងព័ត៌មានសម្ងាត់លើពពករបស់អ្នកប្រើប្រាស់នោះ។
ហេតុអ្វីបានជាវាងាយនឹងខកខាន។ ខ្សែបណ្តាញនីមួយៗចង្អុលទៅម៉ាស៊ីនមេដែលមានកេរ្តិ៍ឈ្មោះល្អ — Astral, JupyterLab, ពពកភ្លឺចែងចាំង, Pinggy, Colab។ មិនមានប្រព័ន្ធគោលពីរមេរោគដើម្បី hash ហើយក៏មិនមានស្នាមប្រឡាក់លាក់កំបាំងដើម្បីឌិគ្រីបដែរ។ ការស្កេនផ្អែកលើកេរ្តិ៍ឈ្មោះ និងហត្ថលេខា សុទ្ធតែមិនសំខាន់ចំពោះរឿងនេះ ដែលជាមូលហេតុដែលសំណួរអំពីអាកប្បកិរិយា — តើការដំឡើងកញ្ចប់នេះធ្វើឱ្យម៉ាស៊ីនធ្វើអ្វី — គឺជាអ្នកដែលចាប់វា។
ការណែនាំៈ
- ដោះស្រាយពេលវេលាដំឡើងណាមួយ powershell - ការរំលងគោលការណ៍ប្រតិបត្តិ ជាសញ្ញាបំបែកការសាងសង់ មិនថាវាទាញយក URL អ្វីក៏ដោយ។
- បើកការជូនដំណឹង ជូបឺរ បានបើកដំណើរការជាមួយសញ្ញាសម្ងាត់ទទេមួយ និង –ip=0.0.0.0; ការរួមបញ្ចូលគ្នានោះមិនគួរលេចឡើងនៅលើស្ថានីយការងារ ឬកម្មវិធីដំណើរការឡើយ។
- ត្រួតពិនិត្យសម្រាប់ SSH ចេញទៅអ្នកផ្តល់សេវាផ្លូវរូងក្រោមដី (*.pinggy.io, *.trycloudflare.com) ពីបរិស្ថានអ្នកអភិវឌ្ឍន៍ និង CI។
- ដំឡើង uv ពី [ប្រភពផ្លូវការរបស់វា](https://docs.astral.sh/uv/) ហើយមានការសង្ស័យចំពោះកញ្ចប់ "ជំនួយ" របស់ភាគីទីបីដែលរុំឧបករណ៍ដែលងាយស្រួលដំឡើងរួចទៅហើយ។
- ភ្ជាប់ និងពិនិត្យឡើងវិញនូវភាពអាស្រ័យលើការធ្វើឱ្យប្រសើរឡើង — ខ្សែកញ្ចប់អាចបង្កើនសមត្ថភាពថ្មីពីមួយជំនាន់ទៅមួយជំនាន់។



