React2Shell - CVE-2025-55182 - ហានិភ័យ RCE

React2Shell: CVE-2025-55182 និងហានិភ័យ RCE របស់ Next.js

​មាតិកា

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

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

TL; កុង

React2Shell (CVE-2025-55182) បង្កើត​ជា​ការ​រិះគន់​មួយ ហានិភ័យ RCE នៅទូទាំង សមាសធាតុម៉ាស៊ីនបម្រើប្រតិកម្ម (RSC) និងក្របខ័ណ្ឌដែលបង្កប់ពួកវា រួមទាំង Next.js ។ពីព្រោះភាពងាយរងគ្រោះនេះរស់នៅក្នុង ចាញ់ RSC ស្រទាប់ serialization និង deserialization អ្នកវាយប្រហារអាចផ្ញើសំណើ HTTP និង trigger ដែលបានបង្កើត ការប្រតិបត្តិលេខកូដពីចម្ងាយដែលមិនបានផ្ទៀងផ្ទាត់សូម្បីតែពេលដែលក្រុមដំណើរការការកំណត់រចនាសម្ព័ន្ធក្របខ័ណ្ឌលំនាំដើមក៏ដោយ។ Next.js ។ កម្មវិធីប្រឈមមុខនឹងការប៉ះពាល់ខ្ពស់បំផុត ពីព្រោះវាទទួលយក និងដំណើរការ ប្រតិកម្មហោះហើរ payloads លើ HTTP តាមលំនាំដើម។

កំហុសនេះប៉ះពាល់ដល់កំណែជាច្រើននៃ កញ្ចប់ម៉ាស៊ីនបម្រើប្រតិកម្មហើយអ្នកវាយប្រហារមិនត្រូវការតក្កវិជ្ជាកម្មវិធីផ្ទាល់ខ្លួនដើម្បីកេងចំណេញពីវាទេ។ អ្នកស្រាវជ្រាវសន្តិសុខបង្ហាញពីភាពជឿជាក់ជិត 100% ហើយការស្កេនដំបូងបង្ហាញថាបរិស្ថានពពកជាច្រើនដំណើរការងាយរងគ្រោះ។ Next.js ។ ឧទាហរណ៍។ ក្រុមនានាត្រូវតែជួសជុលជាបន្ទាន់ និងផ្ទៀងផ្ទាត់ប្រព័ន្ធអេកូឡូស៊ីពេញលេញរបស់ពួកគេ ដើម្បីបង្រួម ហានិភ័យ RCE របស់ React2Shell (CVE-2025-55182).

ចំណុចខ្សោយធ្ងន់ធ្ងរមួយដែលត្រូវបានរាយការណ៍តាមរយៈកម្មវិធីផ្តល់រង្វាន់កំហុសរបស់ Meta នៅថ្ងៃទី 29 ខែវិច្ឆិកា បានបង្កឱ្យមានការឆ្លើយតបជាបន្ទាន់នៅទូទាំងប្រព័ន្ធអេកូឡូស៊ី JavaScript។

កំណត់។ CVE-2025-55182បានបង្ហាញនៅថ្ងៃទី 3 ខែធ្នូ ឥឡូវនេះត្រូវបានគេហៅថា React2Shell គឺជាភាពងាយរងគ្រោះកម្រិតធ្ងន់ធ្ងរបំផុតដែលប៉ះពាល់ ប្រតិកម្មសមាសភាគម៉ាស៊ីនមេ រួមជាមួយនឹងក្របខ័ណ្ឌដែលបញ្ចូលពួកវា។ ដំបូងឡើយ ឧបករណ៍កំណត់អត្តសញ្ញាណភាពងាយរងគ្រោះ Next.js ដាច់ដោយឡែកមួយ (CVE-2025-66478) ត្រូវបានកំណត់ ប៉ុន្តែក្រោយមក NVD បានបញ្ចូលវាទៅក្នុង React CVE ចម្បងជាធាតុស្ទួន។

បញ្ហាមូលដ្ឋានគឺដូចគ្នា គឺការគ្រប់គ្រងដែលមិនមានសុវត្ថិភាពនៃ payloads RSC ស៊េរី ដែលអាចត្រូវបានបង្កឡើងតាមរយៈសំណើ HTTP។ នេះបើកទ្វារឱ្យជនល្មើសផ្ញើសំណើ HTTP ដែលបានរៀបចំ ដែលបណ្តាលឱ្យ JavaScript ដំណើរការដោយបំពាននៅលើម៉ាស៊ីនមេ បន្ទាប់ពីត្រូវបាន បាន​លុប​ស៊េរី​ដោយ React.

ទិដ្ឋភាពទូទៅ CVE-2025-55182

សមាសធាតុម៉ាស៊ីនបម្រើ React ត្រូវបានរួមបញ្ចូលយ៉ាងជ្រៅទៅក្នុងក្របខ័ណ្ឌទំនើបៗ ហើយក្នុងករណីជាច្រើនត្រូវបានបើកដំណើរការតាមលំនាំដើម។ ដោយសារតែបញ្ហានេះ កម្មវិធីអាចនឹងត្រូវប៉ះពាល់នឹង React2Shell (CVE-2025-55182) ទោះបីជាពួកគេមិនដែលកំណត់ចំណុចបញ្ចប់មុខងារម៉ាស៊ីនមេយ៉ាងច្បាស់លាស់ក៏ដោយ។ ការអនុវត្ត RSC នៅតែមានវត្តមាន ហើយនោះតែម្នាក់ឯងគឺគ្រប់គ្រាន់ដើម្បីធ្វើឱ្យផ្លូវកូដងាយរងគ្រោះសកម្ម និងបង្កើតចំណុចសំខាន់មួយ។ ហានិភ័យ RCE.

ចំណុចខ្វះខាតនេះកើតចេញពីវិធីដែល ពិធីការហោះហើរប្រតិកម្មl ដំណើរការ payload ដែលមានរចនាសម្ព័ន្ធជាក់លាក់។ កំណែចាស់ៗបានព្យាយាមដើរផ្លូវវត្ថុដែលបានផ្គត់ផ្គង់នៅក្នុង payload ដោយមិនបានផ្ទៀងផ្ទាត់ថារចនាសម្ព័ន្ធមានសុពលភាព ឬរំពឹងទុកនោះទេ។ អ្នកវាយប្រហារអាចរៀបចំដំណើរការនេះ ហើយទីបំផុតឈានដល់ការប្រតិបត្តិកូដនៅលើម៉ាស៊ីនមេ។ គ្មានការផ្ទៀងផ្ទាត់ភាពត្រឹមត្រូវ គ្មានការកំណត់រចនាសម្ព័ន្ធពិសេស និងមិនត្រូវការតក្កវិជ្ជាជាក់លាក់របស់កម្មវិធីទេ។ ដោយសារបញ្ហានេះមាននៅក្នុងការកំណត់រចនាសម្ព័ន្ធដែលត្រៀមរួចជាស្រេច standard ការដាក់ពង្រាយត្រូវបានបង្ហាញដោយមិនត្រូវការលក្ខខណ្ឌមិនធម្មតាណាមួយឡើយ។

ការកេងប្រវ័ញ្ចកើតឡើងនៅពេលដែលអ្នកវាយប្រហារផ្ញើសំណើ HTTP POST ដែលមានគំនិតអាក្រក់ដែលរំលោភលើ "vm.runInThisContext” តាមរយៈ Server Actions។ ខណៈពេលដែល React មិនបង្ហាញចំណុចបញ្ចប់ដែលងាយរងគ្រោះដោយផ្ទាល់ Next.js នឹងធ្វើ ដោយបង្កើតវ៉ិចទ័រវាយប្រហារពីចម្ងាយពិតប្រាកដ។ 

Next.js ទទួលយក Flight payloads ពីសំណើណាមួយ ដំណើរការពួកវាដោយមិនចាំបាច់មានការផ្ទៀងផ្ទាត់ត្រឹមត្រូវ ហើយបញ្ជូនពួកវាទៅ deserializer របស់ React។ ប្រព័ន្ធនេះចាត់ទុកការបញ្ចូលខាងក្រៅទាំងនេះថាជាការទុកចិត្ត ដែលអនុញ្ញាតឱ្យអ្នកវាយប្រហារសម្រេចបាន ប្រតិបត្តិកូដពីចម្ងាយ។ តាមរយៈចំណុចបញ្ចប់ដែលអាចចូលដំណើរការបានជាសាធារណៈ ជាមួយសិទ្ធិដំណើរការ Node.js ពេញលេញ នៅលើម៉ាស៊ីនបម្រើគោលដៅ។ 

ភាពធ្ងន់ធ្ងរកើនឡើងគួរឱ្យកត់សម្គាល់ ពីព្រោះការកំណត់រចនាសម្ព័ន្ធលំនាំដើមនៅតែងាយរងគ្រោះចំពោះ React2Shell (CVE-2025-55182) និងលទ្ធផល ហានិភ័យ RCE។ មួយ standard កម្មវិធី Next.js ដែលអ្នកបង្កើតជាមួយ create-next-app បង្ហាញខ្លួនវាដោយមិនតម្រូវឱ្យមានការផ្លាស់ប្តូរកូដផ្ទាល់ខ្លួន ឬការកំណត់រចនាសម្ព័ន្ធណាមួយឡើយ។ អ្នកស្រាវជ្រាវសន្តិសុខបញ្ជាក់ពីភាពជឿជាក់នៃការកេងប្រវ័ញ្ចជិត 100% ហើយរាយការណ៍ថា 39% នៃបរិស្ថាន cloud ដំណើរការ instances ដែលងាយរងគ្រោះ ខណៈពេលដែល 44% នៃបរិស្ថានទាំងអស់ដំណើរការកម្មវិធី Next.js ដែលបង្ហាញជាសាធារណៈដែលរងផលប៉ះពាល់ដោយ React2Shell.

ការយល់ដឹងអំពីការប៉ះពាល់នឹង React2Shell

កំណែងាយរងគ្រោះគ្របដណ្តប់លើការចេញផ្សាយច្រើន៖

សមាសភាគកំណែដែលរងផលប៉ះពាល់
react-server-dom-webpack19.0, 19.1.0, 19.1.1, 19.2.0
react-server-dom-parcel19.0, 19.1.0, 19.1.1, 19.2.0
ម៉ាស៊ីនបម្រើប្រតិកម្ម-dom-turbopack19.0, 19.1.0, 19.1.1, 19.2.0

ដោយសារតែ framework ជាច្រើនបង្កប់ការគាំទ្រ RSC នៅស្នូល កម្មវិធីជារឿយៗទទួលមរតកកូដដែលងាយរងគ្រោះដោយមិនដឹងខ្លួន។ framework ឬ bundler ណាមួយដែលដឹកជញ្ជូនកញ្ចប់ទាំងនេះអាចធ្វើឱ្យកម្មវិធីប៉ះពាល់នឹង React2Shell (CVE-2025-55182) និងហានិភ័យ RCE របស់វា។ នោះរួមមាន៖

  • Next.js (រ៉ោតទ័រកម្មវិធី)
  • ការមើលជាមុនរបស់ React Router RSC
  • កម្មវិធីជំនួយ Vite RSC
  • កម្មវិធីជំនួយ Parcel RSC
  • រ៉េដវូដ SDK
  • វ៉ាគុ
  • ពិព័រណ៍

Next.js រងផលប៉ះពាល់ជាពិសេស ពីព្រោះវាប្រើចំណុចបញ្ចប់ដែលទាក់ទងនឹង RSC លើ HTTP តាមលំនាំដើម។ កំណែដែលចាប់ផ្តើមដោយ 14.3.0 ការបង្កើត Canaryរួមជាមួយនឹងភាគច្រើន 15.x ។ និងដើម 16.x ។ ការចេញផ្សាយ មានផ្ទុកការអនុវត្តដែលងាយរងគ្រោះ។ អ្នកណាដែលកំពុងដំណើរការ canary ១៤.៣.០-កាណារី.៧៧ ឬក្រោយមកគួរតែ ត្រឡប់ទៅ 14.x ដែលមានស្ថេរភាព សាខារហូតដល់កំណែ Canary ដែលបានបំណះត្រូវបានបោះពុម្ពផ្សាយ។

កំណែ Next.js ដែលបានជួសជុល រួមបញ្ចូលទាំង:

សមាសភាគកំណែដែលបានជួសជុល
Next.js ។15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7

PoC សាធារណៈ និងការរកឃើញដែលអាចទុកចិត្តបាន

បន្ទាប់ពីការបង្ហាញពីភាពងាយរងគ្រោះ ភស្តុតាងជាច្រើនដែលត្រូវបានគេសន្មត់ថាមានបានចាប់ផ្តើមចរាចរ។ ជាច្រើននៃពួកវាមិនត្រឹមត្រូវ ឬផ្អែកលើការសន្មត់មិនត្រឹមត្រូវ។ អ្នកនិពន្ធភាពងាយរងគ្រោះដើមគឺ Lachlan Davidson បានបញ្ជាក់ជាសាធារណៈនៅលើ ប្រតិកម្ម 2 សែល ថា PoCs របស់ GitHub ដែលចរាចរមិនត្រូវគ្នានឹងការកេងប្រវ័ញ្ចដែលបានចែករំលែកជាឯកជនជាមួយអ្នកថែទាំ React/Next.js ហើយបានផ្តល់ឱ្យគាត់ PoC ផ្ទាល់ខ្លួន

បញ្ហាចម្បងមួយជាមួយនឹងការប៉ុនប៉ងជាសាធារណៈដំបូងៗ គឺការបរាជ័យរបស់ពួកគេក្នុងការទទួលស្គាល់ថា ការកេងប្រវ័ញ្ចទទួលបានជោគជ័យប្រឆាំងនឹង standard ការដាក់ពង្រាយ Next.js ដោយមិនតម្រូវឱ្យមានតក្កវិជ្ជាកម្មវិធីជាក់លាក់ ឬមុខងារផ្នែកម៉ាស៊ីនមេ។

អ្នកស្រាវជ្រាវសន្តិសុខមកពីអង្គការជាច្រើនបានសង្កត់ធ្ងន់ថា ការរកឃើញភាពងាយរងគ្រោះនេះទាមទារច្រើនជាងការកំណត់អត្តសញ្ញាណថាតើ RSC មានវត្តមានឬអត់។ ក្រុមរបស់ Assetnote បានបោះពុម្ពផ្សាយ វិធីសាស្ត្ររកឃើញដែលអាចទុកចិត្តបាន និង ម៉ាស៊ីនស្កេន មានសមត្ថភាពបញ្ជាក់ពីបញ្ហានេះដោយមិនចាំបាច់ប្រើតក្កវិជ្ជា exploit ណាមួយឡើយ។ Metasploit ឆាប់ៗនេះនឹងមាន ការកេងប្រវ័ញ្ចដែលអាចប្រើបាន សម្រាប់ភាពងាយរងគ្រោះនេះផងដែរ។ 

វិធីសាស្រ្តរកឃើញទាញយកអត្ថប្រយោជន៍ពីរបៀបដែល React Server ដោះស្រាយឯកសារយោងលក្ខណសម្បត្តិវត្ថុដោយប្រើសញ្ញាបំបែកសញ្ញាក្បៀសនៅក្នុង ចំណាំ៖ ReactFlightClientConfigBundlerWebpack.js/requireModule() មុខងារ។ នៅពេលដែលកំណែងាយរងគ្រោះដំណើរការ payload ពហុផ្នែកដែលមានរចនាសម្ព័ន្ធពិសេស ដែលព្យាយាមឆ្លងកាត់ផ្លូវវត្ថុដែលមិនមាន ពួកវាបង្កឱ្យមានការឆ្លើយតបកំហុសដែលអាចព្យាករណ៍បាន។ សំណើវិនិច្ឆ័យផ្ញើគំរូយោងដូចជា `$1:a:a` ផ្គូផ្គងជាមួយវត្ថុទទេមួយ។ ការអនុវត្តដែលងាយរងគ្រោះព្យាយាមដោះស្រាយរឿងនេះថាជាការចូលប្រើលក្ខណសម្បត្តិដែលដាក់ជាស្រទាប់ៗលើតម្លៃដែលមិនបានកំណត់ ដែលបណ្តាលឱ្យមានករណីលើកលែង។ ម៉ាស៊ីនមេប្រគល់ស្ថានភាព 500 ជាមួយនឹងលំនាំសង្ខេបកំហុសដែលប្លែកនៅក្នុងតួឆ្លើយតប។ 

export function requireModule<T>(metadata: ClientReference<T>): T {   let moduleExports = __webpack_require__(metadata[ID]);   if (isAsyncImport(metadata)) {     if (typeof moduleExports.then !== 'function') {       // This wasn't a promise after all.     } else if (moduleExports.status === 'fulfilled') {       // This Promise should've been instrumented by preloadModule.       moduleExports = moduleExports.value;     } else {       throw moduleExports.reason;     }   }   if (metadata[NAME] === '*') {     // This is a placeholder value that represents that the caller imported this     // as a CommonJS module as is.     return moduleExports;   }   if (metadata[NAME] === '') {     // This is a placeholder value that represents that the caller accessed the     // default property of this if it was an ESM interop module.     return moduleExports.__esModule ? moduleExports.default : moduleExports;   }   return moduleExports[metadata[NAME]]; }  

វិធានការបន្ទាន់សម្រាប់អង្គការដែលប្រឈមមុខនឹង React2Shell (CVE-2025-55182) និងហានិភ័យ RCE

ធ្វើការស្កេនដ៏ទូលំទូលាយនៃមូលដ្ឋានកូដ និងកម្មវិធីដែលបានដាក់ពង្រាយរបស់អ្នក ដើម្បីកំណត់ទីតាំងកំណែកញ្ចប់ដែលងាយរងគ្រោះ។ យកចិត្តទុកដាក់ជាពិសេសចំពោះការពឹងផ្អែកដោយផ្ទាល់ទៅលើកញ្ចប់ម៉ាស៊ីនមេ React ការអនុវត្ត RSC កម្រិត Framework (Next.js, Waku, Redwood ។ល។) កម្មវិធីដែលបង្កើតឡើងដោយ 'create-next-app' ឬឧបករណ៍ scaffolding ស្រដៀងគ្នា និងកម្មវិធី containerized ដែលអាចមានរូបភាពមូលដ្ឋានហួសសម័យ។

ការវិភាគសមាសភាពកម្មវិធី (SCA) ឧបករណ៍ដូចជា ស៊ីហ្គេនី SCA អាចរកឃើញដោយស្វ័យប្រវត្តិនូវភាពអាស្រ័យដែលរងផលប៉ះពាល់នៅទូទាំងសារពើភ័ណ្ឌកម្មវិធីរបស់អ្នក។ 

ជួសជុលភ្លាមៗ៖

ធ្វើបច្ចុប្បន្នភាពទៅកំណែដែលបានជួសជុលរួចដូចជា React (19.0.1, 19.1.2, 19.2.1), Next.js (15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7) និងកញ្ចប់ក្របខ័ណ្ឌណាមួយដែលរួមបញ្ចូល RSC។ ការអាប់ដេតទាំងនេះណែនាំការផ្ទៀងផ្ទាត់យ៉ាងតឹងរ៉ឹងសម្រាប់ការគ្រប់គ្រងបន្ទុក RSC និងការពារការ dereferencing លក្ខណៈសម្បត្តិមិនមានសុវត្ថិភាពដែលអាចឱ្យមានការកេងប្រវ័ញ្ច។ 

ឧបករណ៍ជួសជុលដោយស្វ័យប្រវត្តិដូចជា មុខងារ​ជួសជុល​ដោយ​ស្វ័យប្រវត្តិ​របស់ Xygeniអាចបង្កើនល្បឿនដំណើរការនៅទូទាំងមូលដ្ឋានកូដធំៗ។

អនុវត្តការការពារ WAF បណ្ដោះអាសន្ន៖

ខណៈពេលដែលបំណះរីករាលដាលតាមរយៈការដាក់ពង្រាយរបស់អ្នក pipelineធ្វើឱ្យច្បាប់ Web Application Firewall សកម្មសម្រាប់ការការពារភ្លាមៗ។ អ្នកផ្តល់សេវា cloud ធំៗបានចេញផ្សាយសំណុំច្បាប់បន្ទាន់ Cloudflareការការពារដោយស្វ័យប្រវត្តិសម្រាប់គ្រប់កម្រិតទាំងអស់ នៅពេលដែលចរាចរណ៍ React ត្រូវបានប្រូកស៊ី ក៏ដូចជា AWS, Akamai, Fastly, Google Cloud មានច្បាប់ការពារស្រដៀងគ្នាដែលអាចរកបាន។ បើកការគ្រប់គ្រងទាំងនេះភ្លាមៗដើម្បីបង្កើតស្រទាប់ការពារក្នុងអំឡុងពេលអន្តរកាល។

ត្រួតពិនិត្យចរាចរណ៍ HTTP គួរឱ្យសង្ស័យ៖

កំណត់រចនាសម្ព័ន្ធការកត់ត្រា និងការជូនដំណឹងសម្រាប់សូចនាករនៃការប៉ុនប៉ងកេងប្រវ័ញ្ច៖ បន្ទុកសេវាពិធីការ RSC Flight ដែលមានទម្រង់មិនត្រឹមត្រូវ ឬមិនបានរំពឹងទុក គំរូមិនធម្មតានៃកំហុសចំនួន 500 នៅលើចំណុចបញ្ចប់ RSC សំណើ POST ជាមួយបឋមកថា `Next-Action` ឬ `Next-Router-State-Tree` ដែលគួរឱ្យសង្ស័យ សំណើម្តងហើយម្តងទៀតទៅកាន់ផ្លូវ `/_next/` ជាមួយបន្ទុកសេវាច្រើនផ្នែក។

ផ្ទៀងផ្ទាត់​វិក្កយបត្រ​សម្ភារៈ​កម្មវិធី​របស់​អ្នក៖

ក្របខ័ណ្ឌជាច្រើនដាក់បញ្ចូលគ្នានូវភាពអាស្រ័យ RSC ដោយតម្លាភាព ដែលធ្វើឱ្យពួកវាមើលមិនឃើញនៅក្នុងការពិនិត្យភាពអាស្រ័យកម្រិតផ្ទៃ។ ពិនិត្យមើលពេញលេញរបស់អ្នក SBOM ដើម្បីធានាថា៖ គ្មានការពឹងផ្អែកអន្តរកាលលើកញ្ចប់ម៉ាស៊ីនមេ React ដែលងាយរងគ្រោះនៅសល់ទេ ការអាប់ដេតក្របខ័ណ្ឌមិនបានណែនាំការអនុវត្ត RSC ចាស់ៗដោយអចេតនាទេ។

បិទគំនិត

React2Shell ជាប់ចំណាត់ថ្នាក់ក្នុងចំណោមចំណុចខ្សោយប្រព័ន្ធអេកូឡូស៊ី JavaScript ដ៏ធ្ងន់ធ្ងរបំផុតក្នុងរយៈពេលប៉ុន្មានឆ្នាំចុងក្រោយនេះ មិនមែនដោយសារតែការកេងប្រវ័ញ្ចនេះមានភាពស្មុគស្មាញនោះទេ ប៉ុន្តែដោយសារតែ RSC ដំណើរការយ៉ាងស៊ីជម្រៅតាមរយៈឧបករណ៍នាពេលបច្ចុប្បន្ន។ ឥឡូវនេះ ដោយសារបំណះមាននៅទូទាំងប្រព័ន្ធអេកូឡូស៊ី ក្រុមនានាត្រូវតែជំរុញការធ្វើឱ្យប្រសើរឡើងទៅក្នុងផលិតកម្មឱ្យបានលឿនតាមដែលអាចធ្វើទៅបាន។

ប្រសិនបើកម្មវិធីរបស់អ្នកប្រើមុខងារម៉ាស៊ីនមេរបស់ React មិនថាដោយផ្ទាល់ ឬដោយប្រយោលទេ អ្នកត្រូវតែចាត់ទុកភាពងាយរងគ្រោះនេះជាការជួសជុលអាទិភាពកំពូល។

ឧបករណ៍វិភាគសមាសភាពកម្មវិធី sca
ផ្តល់អាទិភាព ដោះស្រាយ និងធានាសុវត្ថិភាពហានិភ័យផ្នែកទន់របស់អ្នក
ទទួលបានគណនីឥតគិតថ្លៃរបស់អ្នក។
មិនតម្រូវឱ្យមានកាតឥណទានទេ។

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

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