FauxUV៖ កញ្ចប់ PyPI uv ក្លែងក្លាយបើក Jupyter ទៅគេហទំព័រ

FauxUV៖ កម្មវិធីជំនួយ PyPI uv ក្លែងក្លាយដែលបើកម៉ាស៊ីនមេ Jupyter ដែលមិនបានផ្ទៀងផ្ទាត់ភាពត្រឹមត្រូវទៅកាន់អ៊ីនធឺណិត

​មាតិកា

ប្រកាសដែលត្រូវតែអាន

ប្រកាសថ្មីៗបំផុតដែលគួរឱ្យចាប់អារម្មណ៍

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/) ហើយមានការសង្ស័យចំពោះកញ្ចប់ "ជំនួយ" របស់ភាគីទីបីដែលរុំឧបករណ៍ដែលងាយស្រួលដំឡើងរួចទៅហើយ។
  • ភ្ជាប់ និងពិនិត្យឡើងវិញនូវភាពអាស្រ័យលើការធ្វើឱ្យប្រសើរឡើង — ខ្សែកញ្ចប់អាចបង្កើនសមត្ថភាពថ្មីពីមួយជំនាន់ទៅមួយជំនាន់។
ឧបករណ៍វិភាគសមាសភាពកម្មវិធី sca
ផ្តល់អាទិភាព ដោះស្រាយ និងធានាសុវត្ថិភាពហានិភ័យផ្នែកទន់របស់អ្នក
ទទួលបានគណនីឥតគិតថ្លៃរបស់អ្នក។
មិនតម្រូវឱ្យមានកាតឥណទានទេ។

ធានាសុវត្ថិភាពនៃការអភិវឌ្ឍន៍ និងការដឹកជញ្ជូនកម្មវិធីរបស់អ្នក

ជាមួយឈុតផលិតផល Xygeni