Hacker News

CSP សម្រាប់ Pentesters: ការយល់ដឹងអំពីមូលដ្ឋានគ្រឹះ

មតិយោបល់

2 min read Via www.kayssel.com

Mewayz Team

Editorial Team

Hacker News

ហេតុអ្វីបានជា Pentester គ្រប់រូបត្រូវការធ្វើជាម្ចាស់លើគោលការណ៍សុវត្ថិភាពមាតិកា

គោលការណ៍សុវត្ថិភាពខ្លឹមសារ (CSP) បានក្លាយជាយន្តការការពារផ្នែកខាងកម្មវិធីរុករកតាមអ៊ីនធឺណិតដ៏សំខាន់បំផុតមួយប្រឆាំងនឹងការសរសេរស្គ្រីបឆ្លងគេហទំព័រ (XSS) ការចាក់ទិន្នន័យ និងការវាយប្រហារដោយ clickjacking។ ប៉ុន្តែនៅក្នុងការចូលរួមការសាកល្បងការជ្រៀតចូល បឋមកថា CSP នៅតែជាការគ្រប់គ្រងសុវត្ថិភាពមួយដែលត្រូវបានកំណត់ខុសញឹកញាប់បំផុត - និងមានការយល់ច្រលំ - ។ ការសិក្សាឆ្នាំ 2024 ដែលធ្វើការវិភាគលើគេហទំព័រជាង 1 លានបានរកឃើញថាមានតែ 12.8% ប៉ុណ្ណោះដែលបានដាក់ពង្រាយបឋមកថា CSP ហើយក្នុងចំណោមនោះ ជិត 94% មានចំណុចខ្សោយគោលនយោបាយយ៉ាងហោចណាស់មួយដែលអាចត្រូវបានគេកេងប្រវ័ញ្ច។ សម្រាប់ pentesters ការយល់ដឹងអំពី CSP មិនមែនជាជម្រើសទេ វាជាភាពខុសគ្នារវាងការវាយតម្លៃកម្រិតផ្ទៃ និងរបាយការណ៍ដែលពិតជាពង្រឹងឥរិយាបថសុវត្ថិភាពរបស់អតិថិជន។

មិនថាអ្នកកំពុងធ្វើការវាយតម្លៃកម្មវិធីគេហទំព័រ ការស្វែងរកប្រាក់រង្វាន់ ឬការកសាងសុវត្ថិភាពទៅក្នុងវេទិកាអាជីវកម្មដែលគ្រប់គ្រងទិន្នន័យអតិថិជនដ៏រសើបនោះទេ ចំណេះដឹង CSP គឺជាមូលដ្ឋានគ្រឹះ។ ការណែនាំនេះបំបែកនូវអ្វីដែល CSP ជាអ្វី របៀបដែលវាដំណើរការនៅក្រោមក្រណាត់ កន្លែងដែលវាបរាជ័យ និងរបៀបដែល pentesters អាចវាយតម្លៃជាប្រព័ន្ធ និងរំលងគោលការណ៍ខ្សោយ។

អ្វី​ដែល​គោលការណ៍​សុវត្ថិភាព​ខ្លឹមសារ​ធ្វើ​ជាក់ស្តែង

នៅស្នូលរបស់វា CSP គឺជាយន្តការសុវត្ថិភាពប្រកាសដែលផ្តល់តាមរយៈបឋមកថាការឆ្លើយតប HTTP (ឬតិចជាងធម្មតា ស្លាក ) ។ វាណែនាំកម្មវិធីរុករកដែលប្រភពនៃមាតិកា - ស្គ្រីប រចនាប័ទ្ម រូបភាព ពុម្ពអក្សរ ស៊ុម និងច្រើនទៀត - ត្រូវបានអនុញ្ញាតឱ្យផ្ទុក និងប្រតិបត្តិនៅលើទំព័រដែលបានផ្តល់ឱ្យ។ នៅពេលដែលធនធានបំពានគោលការណ៍នេះ កម្មវិធីរុករកតាមអ៊ីនធឺណិតនឹងបិទវា ហើយរាយការណ៍ការបំពាននេះទៅចំណុចបញ្ចប់ដែលបានបញ្ជាក់។

ការលើកទឹកចិត្តដើមនៅពីក្រោយ CSP គឺដើម្បីកាត់បន្ថយការវាយប្រហារ XSS។ ការការពារ XSS បែបប្រពៃណីដូចជា អនាម័យនៃការបញ្ចូល និងការអ៊ិនកូដលទ្ធផលគឺមានប្រសិទ្ធភាព ប៉ុន្តែមានភាពផុយស្រួយ — បរិបទដែលខកខានតែមួយ ឬកំហុសក្នុងការអ៊ិនកូដអាចណែនាំឡើងវិញនូវភាពងាយរងគ្រោះ។ CSP បន្ថែមស្រទាប់ការពារក្នុងជម្រៅ៖ ទោះបីជាអ្នកវាយប្រហារបញ្ចូលស្លាកស្គ្រីបព្យាបាទទៅក្នុង DOM ក៏ដោយ គោលការណ៍ដែលបានកំណត់រចនាសម្ព័ន្ធត្រឹមត្រូវរារាំងកម្មវិធីរុករកពីការប្រតិបត្តិវា។

CSP ដំណើរការលើ គំរូបញ្ជីស។ ជាជាងការព្យាយាមទប់ស្កាត់ខ្លឹមសារមិនល្អដែលគេស្គាល់ វាកំណត់នូវអ្វីដែលអនុញ្ញាតយ៉ាងច្បាស់។ អ្វីៗផ្សេងទៀតត្រូវបានបដិសេធតាមលំនាំដើម។ ការបញ្ច្រាសនៃគំរូសុវត្ថិភាពនេះមានឥទ្ធិពលខ្លាំងនៅក្នុងទ្រឹស្តី ប៉ុន្តែនៅក្នុងការអនុវត្ត ការរក្សាគោលការណ៍តឹងរ៉ឹងនៅលើកម្មវិធីបណ្តាញស្មុគស្មាញ ជាពិសេសវេទិកាដែលគ្រប់គ្រងម៉ូឌុលរួមបញ្ចូលគ្នារាប់សិបដូចជា CRM វិក្កយបត្រ ការវិភាគ និងប្រព័ន្ធកក់ទុក — គឺពិតជាពិបាកខ្លាំងណាស់។

កាយវិភាគសាស្ត្រនៃបឋមកថា CSP៖ ការណែនាំ និងប្រភព

បឋមកថា CSP ត្រូវបានផ្សំឡើងដោយ ការណែនាំ ដែលនីមួយៗគ្រប់គ្រងប្រភេទធនធានជាក់លាក់មួយ។ ការយល់ដឹងអំពីការណែនាំទាំងនេះគឺចាំបាច់សម្រាប់ pentester ណាមួយដែលវាយតម្លៃគោលនយោបាយរបស់គោលដៅ។ ការណែនាំសំខាន់ៗរួមមាន default-src (ការត្រលប់មកវិញសម្រាប់ការណែនាំណាមួយដែលមិនត្រូវបានកំណត់ច្បាស់លាស់), script-src (ការប្រតិបត្តិ JavaScript), style-src (CSS), img-src (images), connect-src (XHR>, fractions) (embedded iframes) និង object-src (កម្មវិធីជំនួយដូចជា Flash ឬ Java applets)។

ការណែនាំនីមួយៗទទួលយក កន្សោមប្រភព មួយ ឬច្រើន ដែលកំណត់ប្រភពដើមដែលបានអនុញ្ញាត។ ជួរទាំងនេះពីឈ្មោះម៉ាស៊ីនជាក់លាក់ (https://cdn.example.com) ទៅពាក្យគន្លឹះទូលំទូលាយ៖

  • 'self' — អនុញ្ញាត​ឱ្យ​មាន​ធនធាន​មក​ពី​ប្រភព​ដូច​គ្នា​នឹង​ឯកសារ
  • 'none' — ទប់ស្កាត់ធនធានទាំងអស់នៃប្រភេទនោះ
  • 'unsafe-inline' — អនុញ្ញាត​ឱ្យ​មាន​ស្គ្រីប​ក្នុង​បន្ទាត់ ឬ​រចនាប័ទ្ម (ធ្វើឱ្យ​មាន​ប្រសិទ្ធភាព​ការពារ XSS)
  • 'unsafe-eval' — អនុញ្ញាត eval(), setTimeout(string) និងដំណើរការកូដថាមវន្តស្រដៀងគ្នា
  • 'nonce-{random}' — អនុញ្ញាត​ឱ្យ​មាន​ស្គ្រីប​ក្នុង​បន្ទាត់​ជាក់លាក់​ដែល​មាន​ស្លាក​លេខ​កូដ​ដែល​ផ្គូផ្គង​នឹង​លេខ​កូដ​សម្ងាត់
  • 'strict-dynamic' — ទុក​ចិត្ត​ស្គ្រីប​ដែល​ផ្ទុក​ដោយ​ស្គ្រីប​ដែល​ទុក​ចិត្ត​រួច​ហើយ មិន​អើពើ​បញ្ជី​អនុញ្ញាត​ដែល​មាន​មូលដ្ឋាន​លើ​ម៉ាស៊ីន
  • ទិន្នន័យ៖ — អនុញ្ញាត URI ទិន្នន័យជាប្រភពមាតិកា

បឋមកថា CSP ពិភពពិតអាចមើលទៅដូចនេះ៖ ខ្លឹមសារ-សុវត្ថិភាព-គោលការណ៍៖ default-src 'ខ្លួនឯង'; script-src 'ខ្លួនឯង' https://cdn.jsdelivr.net 'nonce-abc123'; style-src 'ខ្លួនឯង' 'unsafe-inline'; img-src *; object-src 'គ្មាន'។ ក្នុងនាមជា pentester ការងាររបស់អ្នកគឺត្រូវអានគោលការណ៍នេះ ហើយកំណត់ភ្លាមៗថាតើកន្លែងណាខ្លាំង កន្លែងណាខ្សោយ និងកន្លែងណាដែលអាចកេងប្រវ័ញ្ចបាន។

ការ​កំណត់​រចនាសម្ព័ន្ធ​ខុស​ទូទៅ​របស់ CSP Pentesters គួរ​តែ​កំណត់​គោលដៅ

គម្លាត​រវាង​ការ​ដាក់​ពង្រាយ​បឋមកថា CSP និង​ការ​ដាក់​ពង្រាយ​បឋមកថា CSP ដែល​មាន​ប្រសិទ្ធភាព គឺ​ធំ​សម្បើម។ នៅក្នុងការអនុវត្ត គោលការណ៍ភាគច្រើនមានចំណុចខ្សោយដែលណែនាំដោយភាពងាយស្រួលរបស់អ្នកអភិវឌ្ឍន៍ ការរួមបញ្ចូលភាគីទីបី ឬការយល់ខុសសាមញ្ញ។ កំឡុងពេលវាយតម្លៃ អ្នកស្រាវជ្រាវគួរតែពិនិត្យមើលជាប្រព័ន្ធសម្រាប់ការបរាជ័យទូទៅទាំងនេះ។

ការកំណត់រចនាសម្ព័ន្ធខុសដែលបំផ្លិចបំផ្លាញបំផុតគឺវត្តមានរបស់ 'unsafe-inline' នៅក្នុងការណែនាំ script-src ។ ពាក្យគន្លឹះតែមួយនេះបង្ហាញអត្ថប្រយោជន៍ប្រឆាំង XSS ទាំងមូលរបស់ CSP ដោយគ្មានប្រយោជន៍ ព្រោះវាអនុញ្ញាតឱ្យកម្មវិធីរុករកតាមអ៊ីនធឺណិតដំណើរការស្លាក