package-lock.json - សោកញ្ចប់ json - ការវាយអក្សរ npm

កំហុសវាយអក្សរ Package-Lock.json៖ របៀបដែលវាអាចលួចយក Build របស់អ្នក

​មាតិកា

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

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

ហេតុអ្វីបានជា Package-Lock.JSON មានសារៈសំខាន់សម្រាប់អ្នកអភិវឌ្ឍន៍

នៅក្នុងគម្រោង Node.js កញ្ចប់ package-lock.json មិនមែនគ្រាន់តែជាឯកសារភ្ជាប់ជាមួយកញ្ចប់ package.json នោះទេ។ វាចាក់សោកំណែពិតប្រាកដនៃអថេរដែលបានដំឡើងនីមួយៗ រួមទាំងកំណែដែលដាក់ក្នុងស្រទាប់ខាងក្នុងផងដែរ។ ឯកសារនេះធានានូវភាពអាចបង្កើតឡើងវិញបាននៅទូទាំងបរិស្ថាន និងការពារការផ្លាស់ប្តូរដែលមិននឹកស្មានដល់នៅពេលដែលកំណែកញ្ចប់ថ្មីត្រូវបានបោះពុម្ពផ្សាយ។ បើគ្មានវាទេ អ្នកអភិវឌ្ឍន៍នឹងប្រថុយនឹងឥរិយាបថផ្សេងៗគ្នានៅក្នុងដំណាក់កាលអភិវឌ្ឍន៍ ការធ្វើតេស្ត និងផលិតកម្មដោយសារតែការផ្លាស់ប្តូរដើមឈើអថេរ ហើយថែមទាំងបើកទ្វារឱ្យមានការវាយអក្សរ npm ប្រសិនបើកំហុសរអិលចូលទៅក្នុងឯកសារចាក់សោ។


នៅពេលប្រើប្រាស់បានត្រឹមត្រូវ package-lock.json ធានាដល់មនុស្សគ្រប់គ្នានៅក្នុងក្រុមរបស់អ្នក និង CI/CD pipeline ដំឡើង កូដដូចគ្នា។ ប៉ុន្តែកំហុសវាយអក្សរស្ងាត់ៗមួយនៅក្នុងឯកសារនេះអាចបញ្ជូនបន្តកម្មវិធីរបស់អ្នកទៅក្នុងអន្ទាក់ភ្លាមៗ។

តើ Typos នាំឱ្យមានការវាយប្រហារ NPM Typosquatting យ៉ាងដូចម្តេច?

ចូរនិយាយថាកញ្ចប់ស្របច្បាប់មួយនៅក្នុង កញ្ចប់ ត្រូវបានសរសេរបានត្រឹមត្រូវ ដូចជា lodashប៉ុន្តែ​ធាតុ​ដែល​បាន​វាយ​ខុស​នៅ​ក្នុង កញ្ចប់-lock.json, ដូចជា ឡូដាសនៅតែអាចលួចចូលទៅក្នុងដើមឈើអាស្រ័យរបស់អ្នក ជាពិសេសប្រសិនបើមាននរណាម្នាក់កែសម្រួលវាដោយដៃ ឬឧបករណ៍មានបញ្ហាបានសរសេរវាឡើង។

អ្នកវាយប្រហារពឹងផ្អែកលើកំហុសវាយអក្សរទាំងនេះដោយប្រើបច្ចេកទេសមួយហៅថា npm typosquatting។ ពួកគេផ្ទុកឡើងកញ្ចប់ព្យាបាទដែលមានឈ្មោះស្រដៀងនឹងកញ្ចប់ពេញនិយម (ឧ. ប្រតិកម្ម-ដូម, បញ្ចេញមតិ, មុំ) ប្រសិនបើ JSON ចាក់សោកញ្ចប់របស់អ្នករួមបញ្ចូលកំហុសវាយអក្សរបែបនោះ npm នឹងដំឡើងកញ្ចប់របស់អ្នកវាយប្រហារដោយគ្មានសំណួរ ពីព្រោះអ្នកបានប្រាប់វាយ៉ាងច្បាស់។

ការវាយអក្សរខុសប្រភេទ npm មិនមែនគ្រាន់តែជាទ្រឹស្តីនោះទេ។ ការវាយប្រហារវាយអក្សរខុសប្រភេទ npm ក្នុងពិភពពិតបានក្លាយជាចំណងជើងព័ត៌មាន។ ឧទាហរណ៍មួយក្នុងចំណោមឧទាហរណ៍ទាំងនោះគឺ ការសម្របសម្រួលកញ្ចប់ Coa, ដែលជាកន្លែងដែល កូដព្យាបាទ ត្រូវបានដឹកជញ្ជូនតាមរយៈការអាប់ដេតកញ្ចប់ដែលទុកចិត្ត។ ភាពខុសគ្នាគឺថា ជាមួយនឹងកំហុស npm typosquatting អ្នកអភិវឌ្ឍន៍អញ្ជើញអ្នកវាយប្រហារចូលដោយចៃដន្យដោយវាយខុសភាពអាស្រ័យ។

ហានិភ័យពិតប្រាកដនៅក្នុង CI/CD Pipelines បណ្តាលមកពីកំហុស json ចាក់សោកញ្ចប់

សម័យទំនើប CI/CD pipelineការព្យាបាល កញ្ចប់-lock.json ជាប្រភពនៃសេចក្តីពិត។ ក្នុងអំឡុងពេលសាងសង់ ឬការដាក់ពង្រាយ pipeline ការរត់ npm ស៊ី or ល្ងាចដំឡើងដែលទាំងពីរអានចេញពីឯកសារចាក់សោ។ ប្រសិនបើមានកំហុសវាយអក្សរ កញ្ចប់ព្យាបាទនឹងត្រូវបានទាញចូលដោយស្វ័យប្រវត្តិ។ គ្មានការជូនដំណឹង។ គ្មានការជំរុញទេ។

នោះមានន័យថា កំហុសវាយអក្សរដែលបានណែនាំក្នុងអំឡុងពេលអភិវឌ្ឍន៍ក្នុងស្រុកអាចរីករាលដាលដោយស្ងៀមស្ងាត់រហូតដល់ដំណាក់កាល ឬសូម្បីតែផលិតកម្ម។ អ្នកវាយប្រហារអាចបង្កប់ឧបករណ៍លួចអត្តសញ្ញាណ អ្នកជីកយករ៉ែគ្រីបតូ ឬទ្វារខាងក្រោយដែលធ្វើឱ្យសកម្មក្រោយពេលដាក់ពង្រាយ។ ទាំងអស់នេះអាចកើតឡើងដោយមិនចាំបាច់បង្កឱ្យមានឧបករណ៍សុវត្ថិភាពទេ ពីព្រោះការពឹងផ្អែកត្រូវបាន "ប្រកាស" នៅក្នុង កញ្ចប់-lock.json.

នេះមិនមែនគ្រាន់តែជាកំហុសនោះទេ។ វាជាការបំពានខ្សែសង្វាក់ផ្គត់ផ្គង់ដែលកំពុងរង់ចាំកើតឡើង ហើយការវាយអក្សរ npm ធ្វើឱ្យវាក្លាយជាការគំរាមកំហែងពិតប្រាកដ។

ការរកឃើញ និងការទប់ស្កាត់កំហុសវាយអក្សរ Dependency Typos ដើម្បីកាត់បន្ថយកំហុសវាយអក្សរ NPM Typosquatting

កំហុសវាយអក្សរ កញ្ចប់-lock.json ពួកវាមើលមិនឃើញទេ លុះត្រាតែអ្នកស្វែងរកពួកវាយ៉ាងសកម្ម។ នេះជារបៀបចាប់ផ្តើម៖

  • ការវិភាគឋិតិវន្ត: ឧបករណ៍មួយចំនួនមិនចាប់បញ្ហាទាំងនេះទេ ប៉ុន្តែម៉ាស៊ីនស្កេនភាពអាស្រ័យដែលឧទ្ទិសដល់អាចធ្វើបាន។ រួមបញ្ចូលឧបករណ៍ដែលស្កេនរកលំនាំវាយអក្សរ npm ហើយពិនិត្យមើលរបស់អ្នក កញ្ចប់-lock.json ចំពោះភាពមិនស៊ីសង្វាក់គ្នា។
  • ឯកសារចាក់សោ Linting: ប្រើច្បាប់ linting ផ្ទាល់ខ្លួន ឬកម្មវិធីជំនួយដើម្បីផ្ទៀងផ្ទាត់ កញ្ចប់-lock.json ធាតុ​ទល់នឹង​បញ្ជី​សុវត្ថិភាព​ដែលគេស្គាល់។
  • ការពិនិត្យកូដការវាយតម្លៃពីមិត្តភក្ដិគឺមានសារៈសំខាន់ណាស់។ ភាពខុសគ្នារបស់ Lockfile មានសំឡេងរំខាន ប៉ុន្តែត្រូវបង្រៀនក្រុមរបស់អ្នកឱ្យពិនិត្យមើលវាដូចជាកូដដែរ។
  • ការត្រួតពិនិត្យដោយស្វ័យប្រវត្តិ៖ រៀបចំ pre-commit hooks ឬការងារ CI ដើម្បីបដិសេធធាតុដែលមិនបានផ្ទៀងផ្ទាត់ ឬគួរឱ្យសង្ស័យនៅក្នុង កញ្ចប់-lock.json.

នេះជាឧទាហរណ៍ជាក់ស្តែងមួយដោយប្រើ GitHub Actions៖

នេះមិនមែនជារឿងងាយស្រួលនោះទេ ប៉ុន្តែវាបង្ហាញពីឈ្មោះកញ្ចប់ចម្លែកៗ ដែលអាចបង្ហាញពីកំហុសក្នុងការវាយអក្សរលើ npm។

ការធានាសុវត្ថិភាពគម្រោង Node.js ប្រឆាំងនឹងការវាយប្រហារ NPM Typosquatting និង Supply Chain

ដើម្បីចាក់សោកម្មវិធី Node.js របស់អ្នក និងការពារការវាយប្រហារតាមរយៈ កញ្ចប់-lock.json:

  • ការ​ដាក់​កូដ​កំណែ​តឹងរ៉ឹងជៀសវាងជួរកំណែ (^, ~) នៅ កញ្ចប់ចាក់សោ​ការពឹងផ្អែក​ទាំងអស់​ទៅ​កំណែ​ពិតប្រាកដ ដើម្បីកាត់បន្ថយ​ការអាប់ដេត និង​ការរសាត់​ដែលមិនបានរំពឹងទុក។
  • ការផ្ទៀងផ្ទាត់ហត្ថលេខាប្រើប្រាស់ឧបករណ៍ដូចជា Sigstore និងលក្ខណៈពិសេសនៃប្រភពដើមរបស់ npm ដើម្បីផ្ទៀងផ្ទាត់ភាពត្រឹមត្រូវ និងប្រភពដើមនៃកញ្ចប់។
  • សំណង់ដែលមិនអាចផ្លាស់ប្តូរបាន៖ ប្រើជានិច្ច npm ស៊ី ដែលមានការផ្ទៀងផ្ទាត់ កញ្ចប់-lock.json ឯកសារនៅក្នុងបរិយាកាសផលិតកម្ម។ កុំពឹងផ្អែកលើ ល្ងាចដំឡើង ក្នុងអំឡុងពេលដាក់ពង្រាយ ព្រោះវាអាចណែនាំការផ្លាស់ប្តូរដែលមិនទាន់បានត្រួតពិនិត្យ។
  • តាមដានបន្ត៖ ប្រើដំណោះស្រាយត្រួតពិនិត្យដែលជូនដំណឹងអ្នកនៅពេល៖
    • កញ្ចប់ថ្មីលេចឡើងនៅក្នុងរបស់អ្នក កញ្ចប់-lock.json
    • កញ្ចប់ដែលមានស្រាប់ផ្លាស់ប្តូរដោយមិននឹកស្មានដល់
    • លំនាំគួរឱ្យសង្ស័យ (ឧទាហរណ៍ ឈ្មោះកញ្ចប់ដូចជា បញ្ចេញមតិ, ប្រតិកម្ម-ដូម, មុំ) ត្រូវបានរកឃើញ
  • ឧបករណ៍​ត្រួតពិនិត្យ​ភាពអាស្រ័យ: រួមបញ្ចូលឧបករណ៍ស្វ័យប្រវត្តិដូចជា npm សវនកម្ម, សេនីកស៊ីហ្គេនី ចូលទៅក្នុង CI របស់អ្នក pipeline ដើម្បីស្កេនរកចំណុចខ្សោយ និងសូចនាករកំហុសវាយអក្សរ។
  • អនាម័យ​ឯកសារ​ចាក់សោ៖ ព្យាបាល កញ្ចប់-lock.json ជាកូដ។ ពិនិត្យមើលវាក្នុងអំឡុងពេល pull requestsជាពិសេសនៅពេលដែលភាពអាស្រ័យត្រូវបានធ្វើបច្ចុប្បន្នភាព ឬបន្ថែម។
  • ស្វ័យប្រវត្តិ Pre-Commit ពិនិត្យ: ប្រើ pre-commit hooks ដើម្បីផ្ទៀងផ្ទាត់ឯកសារចាក់សោរបស់អ្នក មុនពេលវាឈានដល់ការគ្រប់គ្រងកំណែ។

កញ្ចប់-lock.json គឺជាគោលដៅតម្លៃខ្ពស់នៅក្នុងការវាយប្រហារវាយអក្សរ npm។ កំហុសវាយអក្សរដូចជា ប្រតិកម្ម-ដូម or ឡូដាស ផ្តល់ឱ្យអ្នកវាយប្រហារនូវផ្លូវផ្ទាល់ចូលទៅក្នុងការសាងសង់របស់អ្នក pipelineការប្រុងប្រយ័ត្នជុំវិញឯកសារនេះគឺចាំបាច់សម្រាប់ការរក្សាបាននូវសុចរិតភាពនៃខ្សែសង្វាក់ផ្គត់ផ្គង់។

ដូច្នេះ កំហុសវាយអក្សរតែមួយអាចធ្វើឱ្យសំណង់របស់អ្នកលិច។ កុំឱ្យវាកើតឡើង!

កំហុសវាយអក្សរ កញ្ចប់-lock.json មិនមែនគ្រាន់តែជាការសរសេរកូដមិនស្អាតនោះទេ។ វាជាវ៉ិចទ័រគំរាមកំហែងពិតប្រាកដសម្រាប់ការវាយអក្សរ npm typosquatting។ ឯកសារនេះគឺជាអ្នកយាមទ្វារ ហើយប្រសិនបើវាត្រូវបានលួចចូល របស់អ្នក pipeline ក៏ដូចគ្នាដែរ។ ការជួសជុលនេះមិនទាក់ទាញទេ៖ បន្ថយល្បឿន ពិនិត្យមើលឯកសារចាក់សោ ធ្វើឱ្យការត្រួតពិនិត្យដោយស្វ័យប្រវត្តិ និងតាមដានការផ្លាស់ប្តូរ។ ប៉ុន្តែវាមានតម្លៃណាស់។

ដើម្បីបង្កើនកម្រិតការពាររបស់អ្នក សូមពិចារណាប្រើឧបករណ៍ដូចជា Xygeni ដែលត្រូវបានរចនាឡើងដើម្បីរកឃើញការវាយអក្សរខុស ត្រួតពិនិត្យ សោកញ្ចប់ JSON ឯកសារ និងការពារភាពសុចរិតនៃកញ្ចប់ពេញមួយរបស់អ្នក CI/CD pipelineនៅក្នុងយុគសម័យនៃប្រភពបើកចំហ ទំនុកចិត្តត្រូវបានទទួលបាន និងផ្ទៀងផ្ទាត់។

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

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

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