Hacker News

പെൻ്റസ്റ്റേഴ്സിനുള്ള സിഎസ്പി: അടിസ്ഥാനകാര്യങ്ങൾ മനസ്സിലാക്കൽ

അഭിപ്രായങ്ങൾ

2 min read Via www.kayssel.com

Mewayz Team

Editorial Team

Hacker News

എന്തുകൊണ്ടാണ് ഓരോ പെൻ്റസ്റ്ററും ഉള്ളടക്ക സുരക്ഷാ നയം മാസ്റ്റർ ചെയ്യേണ്ടത്

ക്രോസ്-സൈറ്റ് സ്ക്രിപ്റ്റിംഗ് (XSS), ഡാറ്റ കുത്തിവയ്പ്പ്, ക്ലിക്ക്ജാക്കിംഗ് ആക്രമണങ്ങൾ എന്നിവയ്ക്കെതിരായ ഏറ്റവും നിർണായകമായ ബ്രൗസർ-സൈഡ് പ്രതിരോധ സംവിധാനങ്ങളിലൊന്നായി ഉള്ളടക്ക സുരക്ഷാ നയം (CSP) മാറിയിരിക്കുന്നു. എന്നിരുന്നാലും, പെനെട്രേഷൻ ടെസ്റ്റിംഗ് ഇടപഴകലുകളിൽ, CSP തലക്കെട്ടുകൾ പലപ്പോഴും തെറ്റായി ക്രമീകരിച്ചതും തെറ്റിദ്ധരിക്കപ്പെട്ടതുമായ സുരക്ഷാ നിയന്ത്രണങ്ങളിൽ ഒന്നാണ്. 1 ദശലക്ഷത്തിലധികം വെബ്‌സൈറ്റുകൾ വിശകലനം ചെയ്ത 2024 ലെ ഒരു പഠനം കണ്ടെത്തി, 12.8% മാത്രമേ CSP തലക്കെട്ടുകൾ വിന്യസിച്ചിട്ടുള്ളൂ, അവയിൽ 94% ലും ഒരു നയപരമായ ദൗർബല്യമെങ്കിലും പ്രയോജനപ്പെടുത്താൻ കഴിയും. പെൻ്റസ്റ്ററുകൾക്ക്, CSP മനസ്സിലാക്കുന്നത് ഓപ്ഷണൽ അല്ല - ഇത് ഒരു ഉപരിതല-തല മൂല്യനിർണ്ണയവും ഒരു ക്ലയൻ്റിൻറെ സുരക്ഷാ നിലയെ യഥാർത്ഥത്തിൽ ശക്തിപ്പെടുത്തുന്ന ഒരു റിപ്പോർട്ടും തമ്മിലുള്ള വ്യത്യാസമാണ്.

നിങ്ങൾ വെബ് ആപ്ലിക്കേഷൻ അസെസ്‌മെൻ്റുകൾ നടത്തുകയാണെങ്കിലും ബഗ് ബൗണ്ടി ഹണ്ടിംഗ് നടത്തുകയാണെങ്കിലും അല്ലെങ്കിൽ സെൻസിറ്റീവ് ഉപഭോക്തൃ ഡാറ്റ കൈകാര്യം ചെയ്യുന്ന ഒരു ബിസിനസ് പ്ലാറ്റ്‌ഫോമിലേക്ക് സുരക്ഷ കെട്ടിപ്പടുക്കുകയാണെങ്കിലും, CSP അറിവ് അടിസ്ഥാനപരമാണ്. ഈ ഗൈഡ് എന്താണ് CSP, അത് എങ്ങനെ പ്രവർത്തിക്കുന്നു, എവിടെയാണ് അത് പരാജയപ്പെടുന്നത്, പെൻ്റസ്റ്ററുകൾക്ക് എങ്ങനെ വ്യവസ്ഥാപിതമായി ദുർബലമായ നയങ്ങൾ വിലയിരുത്താനും മറികടക്കാനും കഴിയും എന്നിവ വിശദീകരിക്കുന്നു.

ഉള്ളടക്ക സുരക്ഷാ നയം യഥാർത്ഥത്തിൽ എന്താണ് ചെയ്യുന്നത്

അതിൻ്റെ കാതൽ, CSP എന്നത് ഒരു HTTP പ്രതികരണ തലക്കെട്ട് (അല്ലെങ്കിൽ സാധാരണയായി, ടാഗ്) വഴി വിതരണം ചെയ്യുന്ന ഒരു ഡിക്ലറേറ്റീവ് സുരക്ഷാ സംവിധാനമാണ്. ഏത് ഉള്ളടക്ക സ്രോതസ്സുകളാണ് - സ്ക്രിപ്റ്റുകൾ, ശൈലികൾ, ഇമേജുകൾ, ഫോണ്ടുകൾ, ഫ്രെയിമുകൾ എന്നിവയും അതിലേറെയും - നൽകിയിരിക്കുന്ന പേജിൽ ലോഡ് ചെയ്യാനും എക്സിക്യൂട്ട് ചെയ്യാനും അനുവാദമുള്ളത് ബ്രൗസറിന് ഇത് നിർദ്ദേശിക്കുന്നു. ഒരു ഉറവിടം നയം ലംഘിക്കുമ്പോൾ, ബ്രൗസർ അത് തടയുകയും ഓപ്ഷണലായി ഒരു നിർദ്ദിഷ്ട എൻഡ് പോയിൻ്റിലേക്ക് ലംഘനം റിപ്പോർട്ട് ചെയ്യുകയും ചെയ്യുന്നു.

XSS ആക്രമണങ്ങൾ ലഘൂകരിക്കുക എന്നതായിരുന്നു CSP യുടെ പിന്നിലെ യഥാർത്ഥ പ്രചോദനം. ഇൻപുട്ട് സാനിറ്റൈസേഷൻ, ഔട്ട്‌പുട്ട് എൻകോഡിംഗ് എന്നിവ പോലുള്ള പരമ്പരാഗത XSS പ്രതിരോധങ്ങൾ ഫലപ്രദമാണ്, എന്നാൽ പൊട്ടുന്നതാണ് - ഒരു മിസ്ഡ് കോണ്ടക്‌സ്‌റ്റോ എൻകോഡിംഗ് പിശകോ അപകടസാധ്യത വീണ്ടും അവതരിപ്പിക്കും. CSP ഒരു ഡിഫൻസ്-ഇൻ-ഡെപ്ത് ലെയർ ചേർക്കുന്നു: ഒരു ആക്രമണകാരി DOM-ലേക്ക് ഒരു ക്ഷുദ്ര സ്‌ക്രിപ്റ്റ് ടാഗ് കുത്തിവച്ചാലും, ശരിയായി ക്രമീകരിച്ച നയം ബ്രൗസറിനെ അത് എക്‌സിക്യൂട്ട് ചെയ്യുന്നതിൽ നിന്ന് തടയുന്നു.

CSP ഒരു വൈറ്റ്‌ലിസ്റ്റ് മോഡലിൽ പ്രവർത്തിക്കുന്നു. അറിയപ്പെടുന്ന-മോശമായ ഉള്ളടക്കം തടയാൻ ശ്രമിക്കുന്നതിനുപകരം, അത് വ്യക്തമായി അനുവദനീയമായത് നിർവ്വചിക്കുന്നു. മറ്റെല്ലാം സ്ഥിരസ്ഥിതിയായി നിഷേധിക്കപ്പെടുന്നു. സുരക്ഷാ മാതൃകയുടെ ഈ വിപരീതം സിദ്ധാന്തത്തിൽ ശക്തമാണ്, എന്നാൽ പ്രായോഗികമായി, സങ്കീർണ്ണമായ വെബ് ആപ്ലിക്കേഷനുകളിലുടനീളം കർശനമായ നയങ്ങൾ നിലനിർത്തുന്നത് - പ്രത്യേകിച്ച് CRM, ഇൻവോയ്സിംഗ്, അനലിറ്റിക്സ്, ബുക്കിംഗ് സിസ്റ്റങ്ങൾ തുടങ്ങിയ ഡസൻ കണക്കിന് സംയോജിത മൊഡ്യൂളുകൾ കൈകാര്യം ചെയ്യുന്ന പ്ലാറ്റ്ഫോമുകൾ - കുപ്രസിദ്ധമായി ബുദ്ധിമുട്ടാണ്.

ഒരു CSP തലക്കെട്ടിൻ്റെ ശരീരഘടന: നിർദ്ദേശങ്ങളും ഉറവിടങ്ങളും

ഒരു CSP തലക്കെട്ടിൽ നിർദ്ദേശങ്ങൾ അടങ്ങിയിരിക്കുന്നു, ഓരോന്നും ഒരു പ്രത്യേക ഉറവിട തരം നിയന്ത്രിക്കുന്നു. ഒരു ടാർഗെറ്റിൻ്റെ നയം വിലയിരുത്തുന്ന ഏതൊരു പെൻ്റസ്റ്ററിനും ഈ നിർദ്ദേശങ്ങൾ മനസ്സിലാക്കേണ്ടത് അത്യാവശ്യമാണ്. ഏറ്റവും പ്രധാനപ്പെട്ട നിർദ്ദേശങ്ങളിൽ default-src (വ്യക്തമായി സജ്ജീകരിച്ചിട്ടില്ലാത്ത ഏതെങ്കിലും ഡയറക്‌ടീവിൻ്റെ ഫാൾബാക്ക്), script-src (JavaScript എക്‌സിക്യൂഷൻ), style-src (CSS), img-src (ചിത്രങ്ങൾ), കണക്‌ട്, എഫ്എസ്ആർസി, കണക്ഷനുകൾ), frame-src (ഉൾച്ചേർത്ത iframes), ഒപ്പം object-src (Flash അല്ലെങ്കിൽ Java applets പോലുള്ള പ്ലഗിനുകൾ).

ഓരോ നിർദ്ദേശവും അനുവദനീയമായ ഉത്ഭവം നിർവചിക്കുന്ന ഒന്നോ അതിലധികമോ ഉറവിട പദപ്രയോഗങ്ങൾ സ്വീകരിക്കുന്നു. ഇവ നിർദ്ദിഷ്‌ട ഹോസ്റ്റ്നാമങ്ങൾ (https://cdn.example.com) മുതൽ വിശാലമായ കീവേഡുകൾ വരെ:

  • 'self' — പ്രമാണത്തിൻ്റെ അതേ ഉറവിടത്തിൽ നിന്നുള്ള ഉറവിടങ്ങൾ അനുവദിക്കുന്നു
  • 'ഒന്നുമില്ല' — ആ തരത്തിലുള്ള എല്ലാ ഉറവിടങ്ങളും തടയുന്നു
  • 'unsafe-inline' — ഇൻലൈൻ സ്ക്രിപ്റ്റുകളോ ശൈലികളോ അനുവദിക്കുന്നു (XSS പരിരക്ഷയെ ഫലപ്രദമായി നിർവീര്യമാക്കുന്നു)
  • 'unsafe-eval' — eval(), setTimeout(string), സമാനമായ ഡൈനാമിക് കോഡ് എക്‌സിക്യൂഷൻ എന്നിവ അനുവദിക്കുന്നു
  • 'nonce-{random}' — പൊരുത്തപ്പെടുന്ന ക്രിപ്‌റ്റോഗ്രാഫിക് നോൻസ് ഉപയോഗിച്ച് ടാഗ് ചെയ്‌ത നിർദ്ദിഷ്ട ഇൻലൈൻ സ്‌ക്രിപ്റ്റുകൾ അനുവദിക്കുന്നു
  • 'സ്‌ട്രിക്‌റ്റ്-ഡൈനാമിക്' — ഹോസ്റ്റ് അധിഷ്‌ഠിത അനുവദനീയമായ ലിസ്‌റ്റുകളെ അവഗണിച്ച്, ഇതിനകം വിശ്വസനീയമായ സ്‌ക്രിപ്റ്റുകൾ ലോഡ് ചെയ്‌ത സ്‌ക്രിപ്‌റ്റുകളെ വിശ്വസിക്കുന്നു
  • ഡാറ്റ: — ഉള്ളടക്ക സ്രോതസ്സുകളായി ഡാറ്റ യുആർഐകളെ അനുവദിക്കുന്നു

ഒരു യഥാർത്ഥ ലോക CSP തലക്കെട്ട് ഇതുപോലെയായിരിക്കാം: ഉള്ളടക്ക-സുരക്ഷാ-നയം: default-src 'self'; script-src 'self' https://cdn.jsdelivr.net 'nonce-abc123'; style-src 'self' 'safe-inline'; img-src *; object-src 'ഒന്നുമില്ല'. ഒരു പെൻ്റസ്റ്റർ എന്ന നിലയിൽ, നിങ്ങളുടെ ജോലി ഈ നയം വായിച്ച് അത് എവിടെയാണ് ശക്തവും എവിടെയാണ് ദുർബലവും എവിടെയാണ് ചൂഷണം ചെയ്യപ്പെടുന്നതെന്ന് ഉടനടി തിരിച്ചറിയുക എന്നതാണ്.

പൊതുവായ CSP തെറ്റായ കോൺഫിഗറേഷനുകൾ പെൻ്റസ്റ്റർമാർ ലക്ഷ്യമിടുന്നു

ഒരു CSP തലക്കെട്ട് വിന്യസിക്കുന്നതും ഫലപ്രദമായ CSP തലക്കെട്ട് വിന്യസിക്കുന്നതും തമ്മിലുള്ള അന്തരം വളരെ വലുതാണ്. പ്രായോഗികമായി, മിക്ക പോളിസികളിലും ഡെവലപ്പർ സൗകര്യം, മൂന്നാം കക്ഷി സംയോജനം അല്ലെങ്കിൽ ലളിതമായ തെറ്റിദ്ധാരണ എന്നിവയാൽ അവതരിപ്പിച്ച ബലഹീനതകൾ അടങ്ങിയിരിക്കുന്നു. മൂല്യനിർണ്ണയ വേളയിൽ, ഈ സാധാരണ പരാജയങ്ങൾ പെൻ്റസ്റ്ററുകൾ വ്യവസ്ഥാപിതമായി പരിശോധിക്കണം.

ഏറ്റവും വിനാശകരമായ തെറ്റായ കോൺഫിഗറേഷൻ script-src നിർദ്ദേശത്തിലെ 'unsafe-inline' സാന്നിധ്യമാണ്. ഈ ഒരൊറ്റ കീവേഡ് CSP-യുടെ മുഴുവൻ ആൻ്റി-എക്സ്എസ്എസ് ആനുകൂല്യവും ഉപയോഗശൂന്യമാക്കുന്നു, കാരണം ഇത് ഏത് ഇൻലൈൻ