Hacker News

ಪೆಂಟೆಸ್ಟರ್‌ಗಳಿಗಾಗಿ ಸಿಎಸ್‌ಪಿ: ಮೂಲಭೂತ ಅಂಶಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು

ಕಾಮೆಂಟ್‌ಗಳು

2 min read Via www.kayssel.com

Mewayz Team

Editorial Team

Hacker News

ಪ್ರತಿ ಪೆಂಟೆಸ್ಟರ್ ವಿಷಯ ಭದ್ರತಾ ನೀತಿಯನ್ನು ಏಕೆ ಕರಗತ ಮಾಡಿಕೊಳ್ಳಬೇಕು

ಕಂಟೆಂಟ್ ಸೆಕ್ಯುರಿಟಿ ಪಾಲಿಸಿ (CSP) ಕ್ರಾಸ್-ಸೈಟ್ ಸ್ಕ್ರಿಪ್ಟಿಂಗ್ (XSS), ಡೇಟಾ ಇಂಜೆಕ್ಷನ್ ಮತ್ತು ಕ್ಲಿಕ್‌ಜಾಕಿಂಗ್ ದಾಳಿಗಳ ವಿರುದ್ಧ ಅತ್ಯಂತ ನಿರ್ಣಾಯಕ ಬ್ರೌಸರ್-ಸೈಡ್ ರಕ್ಷಣಾ ಕಾರ್ಯವಿಧಾನಗಳಲ್ಲಿ ಒಂದಾಗಿದೆ. ಆದರೂ ಒಳಹೊಕ್ಕು ಪರೀಕ್ಷೆಯ ತೊಡಗುವಿಕೆಗಳಲ್ಲಿ, CSP ಹೆಡರ್‌ಗಳು ಹೆಚ್ಚಾಗಿ ತಪ್ಪಾಗಿ ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾದ - ಮತ್ತು ತಪ್ಪಾಗಿ ಅರ್ಥೈಸಿಕೊಳ್ಳಲಾದ - ಭದ್ರತಾ ನಿಯಂತ್ರಣಗಳಲ್ಲಿ ಒಂದಾಗಿದೆ. 1 ಮಿಲಿಯನ್‌ಗಿಂತಲೂ ಹೆಚ್ಚು ವೆಬ್‌ಸೈಟ್‌ಗಳನ್ನು ವಿಶ್ಲೇಷಿಸುವ 2024 ರ ಅಧ್ಯಯನವು ಕೇವಲ 12.8% ರಷ್ಟು ಮಾತ್ರ CSP ಹೆಡರ್‌ಗಳನ್ನು ನಿಯೋಜಿಸಿದೆ ಎಂದು ಕಂಡುಹಿಡಿದಿದೆ ಮತ್ತು ಅವುಗಳಲ್ಲಿ ಸುಮಾರು 94% ರಷ್ಟು ಕನಿಷ್ಠ ಒಂದು ನೀತಿ ದೌರ್ಬಲ್ಯವನ್ನು ಬಳಸಿಕೊಳ್ಳಬಹುದು. ಪೆಂಟೆಸ್ಟರ್‌ಗಳಿಗೆ, CSP ಅನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಐಚ್ಛಿಕವಲ್ಲ - ಇದು ಮೇಲ್ಮೈ ಮಟ್ಟದ ಮೌಲ್ಯಮಾಪನ ಮತ್ತು ಕ್ಲೈಂಟ್‌ನ ಭದ್ರತಾ ಭಂಗಿಯನ್ನು ಬಲಪಡಿಸುವ ವರದಿಯ ನಡುವಿನ ವ್ಯತ್ಯಾಸವಾಗಿದೆ.

ನೀವು ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ಮೌಲ್ಯಮಾಪನಗಳನ್ನು ನಡೆಸುತ್ತಿರಲಿ, ಬಗ್ ಬೌಂಟಿ ಬೇಟೆಯಾಡುತ್ತಿರಲಿ ಅಥವಾ ಸೆನ್ಸಿಟಿವ್ ಗ್ರಾಹಕ ಡೇಟಾವನ್ನು ನಿರ್ವಹಿಸುವ ವ್ಯಾಪಾರ ವೇದಿಕೆಯಲ್ಲಿ ಭದ್ರತೆಯನ್ನು ನಿರ್ಮಿಸುತ್ತಿರಲಿ, CSP ಜ್ಞಾನವು ಮೂಲಭೂತವಾಗಿದೆ. ಈ ಮಾರ್ಗದರ್ಶಿ CSP ಎಂದರೇನು, ಅದು ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ, ಎಲ್ಲಿ ವಿಫಲಗೊಳ್ಳುತ್ತದೆ ಮತ್ತು ಪೆಂಟೆಸ್ಟರ್‌ಗಳು ಹೇಗೆ ವ್ಯವಸ್ಥಿತವಾಗಿ ಮೌಲ್ಯಮಾಪನ ಮಾಡಬಹುದು ಮತ್ತು ದುರ್ಬಲ ನೀತಿಗಳನ್ನು ಬೈಪಾಸ್ ಮಾಡಬಹುದು.

ವಿಷಯ ಭದ್ರತಾ ನೀತಿಯು ನಿಜವಾಗಿ ಏನು ಮಾಡುತ್ತದೆ

ಅದರ ಮಧ್ಯಭಾಗದಲ್ಲಿ, CSP ಎನ್ನುವುದು HTTP ಪ್ರತಿಕ್ರಿಯೆ ಹೆಡರ್ (ಅಥವಾ ಕಡಿಮೆ ಸಾಮಾನ್ಯವಾಗಿ, ಟ್ಯಾಗ್) ಮೂಲಕ ವಿತರಿಸಲಾದ ಘೋಷಣಾತ್ಮಕ ಭದ್ರತಾ ಕಾರ್ಯವಿಧಾನವಾಗಿದೆ. ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳು, ಸ್ಟೈಲ್‌ಗಳು, ಇಮೇಜ್‌ಗಳು, ಫಾಂಟ್‌ಗಳು, ಫ್ರೇಮ್‌ಗಳು ಮತ್ತು ಹೆಚ್ಚಿನವುಗಳನ್ನು - ನಿರ್ದಿಷ್ಟ ಪುಟದಲ್ಲಿ ಲೋಡ್ ಮಾಡಲು ಮತ್ತು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಅನುಮತಿಸಲಾದ ವಿಷಯದ ಮೂಲಗಳನ್ನು ಇದು ಬ್ರೌಸರ್‌ಗೆ ಸೂಚಿಸುತ್ತದೆ. ಸಂಪನ್ಮೂಲವು ನೀತಿಯನ್ನು ಉಲ್ಲಂಘಿಸಿದಾಗ, ಬ್ರೌಸರ್ ಅದನ್ನು ನಿರ್ಬಂಧಿಸುತ್ತದೆ ಮತ್ತು ಐಚ್ಛಿಕವಾಗಿ ಉಲ್ಲಂಘನೆಯನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಅಂತಿಮ ಬಿಂದುವಿಗೆ ವರದಿ ಮಾಡುತ್ತದೆ.

CSP ಯ ಹಿಂದಿನ ಮೂಲ ಪ್ರೇರಣೆ XSS ದಾಳಿಗಳನ್ನು ತಗ್ಗಿಸುವುದಾಗಿತ್ತು. ಇನ್‌ಪುಟ್ ಸ್ಯಾನಿಟೈಸೇಶನ್ ಮತ್ತು ಔಟ್‌ಪುಟ್ ಎನ್‌ಕೋಡಿಂಗ್‌ನಂತಹ ಸಾಂಪ್ರದಾಯಿಕ XSS ರಕ್ಷಣೆಗಳು ಪರಿಣಾಮಕಾರಿ ಆದರೆ ದುರ್ಬಲವಾಗಿರುತ್ತವೆ - ಒಂದು ತಪ್ಪಿದ ಸಂದರ್ಭ ಅಥವಾ ಎನ್‌ಕೋಡಿಂಗ್ ದೋಷವು ದುರ್ಬಲತೆಯನ್ನು ಮರುಪರಿಚಯಿಸಬಹುದು. CSP ಡಿಫೆನ್ಸ್-ಇನ್-ಡೆಪ್ತ್ ಲೇಯರ್ ಅನ್ನು ಸೇರಿಸುತ್ತದೆ: ಆಕ್ರಮಣಕಾರರು ದುರುದ್ದೇಶಪೂರಿತ ಸ್ಕ್ರಿಪ್ಟ್ ಟ್ಯಾಗ್ ಅನ್ನು DOM ಗೆ ಚುಚ್ಚಿದರೂ, ಸರಿಯಾಗಿ ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾದ ನೀತಿಯು ಬ್ರೌಸರ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವುದನ್ನು ತಡೆಯುತ್ತದೆ.

CSP ಶ್ವೇತಪಟ್ಟಿ ಮಾದರಿಯಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. ತಿಳಿದಿರುವ-ಕೆಟ್ಟ ವಿಷಯವನ್ನು ನಿರ್ಬಂಧಿಸಲು ಪ್ರಯತ್ನಿಸುವ ಬದಲು, ಅದು ಸ್ಪಷ್ಟವಾಗಿ ಅನುಮತಿಸಿರುವುದನ್ನು ವಿವರಿಸುತ್ತದೆ. ಉಳಿದಂತೆ ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ನಿರಾಕರಿಸಲಾಗಿದೆ. ಭದ್ರತಾ ಮಾದರಿಯ ಈ ವಿಲೋಮವು ಸಿದ್ಧಾಂತದಲ್ಲಿ ಪ್ರಬಲವಾಗಿದೆ, ಆದರೆ ಪ್ರಾಯೋಗಿಕವಾಗಿ, ಸಂಕೀರ್ಣ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಾದ್ಯಂತ ಕಟ್ಟುನಿಟ್ಟಾದ ನೀತಿಗಳನ್ನು ನಿರ್ವಹಿಸುವುದು - ವಿಶೇಷವಾಗಿ CRM, ಇನ್‌ವಾಯ್ಸಿಂಗ್, ವಿಶ್ಲೇಷಣೆಗಳು ಮತ್ತು ಬುಕಿಂಗ್ ಸಿಸ್ಟಮ್‌ಗಳಂತಹ ಡಜನ್‌ಗಟ್ಟಲೆ ಸಂಯೋಜಿತ ಮಾಡ್ಯೂಲ್‌ಗಳನ್ನು ನಿರ್ವಹಿಸುವ ಪ್ಲಾಟ್‌ಫಾರ್ಮ್‌ಗಳು ಕುಖ್ಯಾತವಾಗಿ ಕಷ್ಟಕರವಾಗಿದೆ.

CSP ಹೆಡರ್‌ನ ಅಂಗರಚನಾಶಾಸ್ತ್ರ: ನಿರ್ದೇಶನಗಳು ಮತ್ತು ಮೂಲಗಳು

ಒಂದು CSP ಹೆಡರ್ ನಿರ್ದೇಶನಗಳಿಂದ ಸಂಯೋಜಿಸಲ್ಪಟ್ಟಿದೆ, ಪ್ರತಿಯೊಂದೂ ನಿರ್ದಿಷ್ಟ ಸಂಪನ್ಮೂಲ ಪ್ರಕಾರವನ್ನು ನಿಯಂತ್ರಿಸುತ್ತದೆ. ಗುರಿಯ ನೀತಿಯನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡುವ ಯಾವುದೇ ಪೆಂಟೆಸ್ಟರ್‌ಗೆ ಈ ನಿರ್ದೇಶನಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಅತ್ಯಗತ್ಯ. ಪ್ರಮುಖ ನಿರ್ದೇಶನಗಳಲ್ಲಿ ಡೀಫಾಲ್ಟ್-src (ಯಾವುದೇ ನಿರ್ದೇಶನಕ್ಕೆ ಫಾಲ್‌ಬ್ಯಾಕ್ ಸ್ಪಷ್ಟವಾಗಿ ಹೊಂದಿಸಲಾಗಿಲ್ಲ), script-src (JavaScript ಎಕ್ಸಿಕ್ಯೂಷನ್), style-src (CSS), img-src (ಚಿತ್ರಗಳು), connect, FSch-s ಸಂಪರ್ಕಗಳು), frame-src (ಎಂಬೆಡ್ ಮಾಡಿದ iframes), ಮತ್ತು object-src (ಫ್ಲಾಶ್ ಅಥವಾ ಜಾವಾ ಆಪ್ಲೆಟ್‌ಗಳಂತಹ ಪ್ಲಗಿನ್‌ಗಳು).

ಪ್ರತಿ ನಿರ್ದೇಶನವು ಅನುಮತಿಸಲಾದ ಮೂಲಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವ ಒಂದು ಅಥವಾ ಹೆಚ್ಚಿನ ಮೂಲ ಅಭಿವ್ಯಕ್ತಿಗಳನ್ನು ಸ್ವೀಕರಿಸುತ್ತದೆ. ಇವು ನಿರ್ದಿಷ್ಟ ಹೋಸ್ಟ್ ಹೆಸರುಗಳಿಂದ (https://cdn.example.com) ವಿಶಾಲವಾದ ಕೀವರ್ಡ್‌ಗಳವರೆಗೆ:

  • 'self' — ಡಾಕ್ಯುಮೆಂಟ್‌ನ ಅದೇ ಮೂಲದಿಂದ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಅನುಮತಿಸುತ್ತದೆ
  • 'ಯಾವುದೂ ಇಲ್ಲ' — ಆ ಪ್ರಕಾರದ ಎಲ್ಲಾ ಸಂಪನ್ಮೂಲಗಳನ್ನು ನಿರ್ಬಂಧಿಸುತ್ತದೆ
  • 'unsafe-inline' — ಇನ್‌ಲೈನ್ ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳು ಅಥವಾ ಶೈಲಿಗಳನ್ನು ಅನುಮತಿಸುತ್ತದೆ (ಪರಿಣಾಮಕಾರಿಯಾಗಿ XSS ರಕ್ಷಣೆಯನ್ನು ತಟಸ್ಥಗೊಳಿಸುತ್ತದೆ)
  • 'unsafe-eval' — eval(), setTimeout(string), ಮತ್ತು ಇದೇ ಡೈನಾಮಿಕ್ ಕೋಡ್ ಎಕ್ಸಿಕ್ಯೂಶನ್ ಅನ್ನು ಅನುಮತಿಸುತ್ತದೆ
  • 'nance-{random}' — ಹೊಂದಾಣಿಕೆಯಾಗುವ ಕ್ರಿಪ್ಟೋಗ್ರಾಫಿಕ್ ನಾನ್ಸ್‌ನೊಂದಿಗೆ ಟ್ಯಾಗ್ ಮಾಡಲಾದ ನಿರ್ದಿಷ್ಟ ಇನ್‌ಲೈನ್ ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳನ್ನು ಅನುಮತಿಸುತ್ತದೆ
  • 'ಕಟ್ಟುನಿಟ್ಟಾದ-ಡೈನಾಮಿಕ್' — ಈಗಾಗಲೇ-ವಿಶ್ವಾಸಾರ್ಹ ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳಿಂದ ಲೋಡ್ ಮಾಡಲಾದ ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳನ್ನು ನಂಬುತ್ತದೆ, ಹೋಸ್ಟ್-ಆಧಾರಿತ ಅನುಮತಿಪಟ್ಟಿಗಳನ್ನು ನಿರ್ಲಕ್ಷಿಸುತ್ತದೆ
  • ಡೇಟಾ: — ಡೇಟಾ URI ಗಳನ್ನು ವಿಷಯ ಮೂಲಗಳಾಗಿ ಅನುಮತಿಸುತ್ತದೆ

ನೈಜ-ಜಗತ್ತಿನ CSP ಹೆಡರ್ ಈ ರೀತಿ ಕಾಣಿಸಬಹುದು: ವಿಷಯ-ಭದ್ರತೆ-ನೀತಿ: default-src 'self'; script-src 'self' https://cdn.jsdelivr.net 'nonce-abc123'; style-src 'self' 'unsafe-inline'; img-src *; object-src 'ಯಾವುದೂ ಇಲ್ಲ'. ಪೆಂಟೆಸ್ಟರ್ ಆಗಿ, ನಿಮ್ಮ ಕೆಲಸವು ಈ ನೀತಿಯನ್ನು ಓದುವುದು ಮತ್ತು ಅದು ಎಲ್ಲಿ ಪ್ರಬಲವಾಗಿದೆ, ಎಲ್ಲಿ ದುರ್ಬಲವಾಗಿದೆ ಮತ್ತು ಎಲ್ಲಿ ಅದನ್ನು ಬಳಸಿಕೊಳ್ಳಬಹುದು ಎಂಬುದನ್ನು ತಕ್ಷಣವೇ ಗುರುತಿಸುವುದು.

ಸಾಮಾನ್ಯ CSP ತಪ್ಪು ಸಂರಚನೆಗಳು ಪೆಂಟೆಸ್ಟರ್‌ಗಳು ಗುರಿಯಾಗಬೇಕು

CSP ಹೆಡರ್ ಅನ್ನು ನಿಯೋಜಿಸುವುದು ಮತ್ತು ಪರಿಣಾಮಕಾರಿ CSP ಹೆಡರ್ ಅನ್ನು ನಿಯೋಜಿಸುವುದರ ನಡುವಿನ ಅಂತರವು ಅಗಾಧವಾಗಿದೆ. ಪ್ರಾಯೋಗಿಕವಾಗಿ, ಹೆಚ್ಚಿನ ನೀತಿಗಳು ಡೆವಲಪರ್ ಅನುಕೂಲಕ್ಕಾಗಿ ಪರಿಚಯಿಸಲಾದ ದೌರ್ಬಲ್ಯಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತವೆ, ಮೂರನೇ ವ್ಯಕ್ತಿಯ ಸಂಯೋಜನೆಗಳು ಅಥವಾ ಸರಳ ತಪ್ಪುಗ್ರಹಿಕೆಯಿಂದ. ಮೌಲ್ಯಮಾಪನದ ಸಮಯದಲ್ಲಿ, ಪೆಂಟೆಸ್ಟರ್‌ಗಳು ಈ ಸಾಮಾನ್ಯ ವೈಫಲ್ಯಗಳನ್ನು ವ್ಯವಸ್ಥಿತವಾಗಿ ಪರಿಶೀಲಿಸಬೇಕು.

ಅತ್ಯಂತ ವಿನಾಶಕಾರಿ ತಪ್ಪು ಕಾನ್ಫಿಗರೇಶನ್ script-src ನಿರ್ದೇಶನದಲ್ಲಿ 'unsafe-inline' ಇರುವಿಕೆಯಾಗಿದೆ. ಈ ಏಕೈಕ ಕೀವರ್ಡ್ CSP ಯ ಸಂಪೂರ್ಣ ವಿರೋಧಿ XSS ಪ್ರಯೋಜನವನ್ನು ಮೂಲಭೂತವಾಗಿ ನಿಷ್ಪ್ರಯೋಜಕವಾಗಿಸುತ್ತದೆ, ಏಕೆಂದರೆ ಇದು ಬ್ರೌಸರ್ ಅನ್ನು ಯಾವುದೇ ಇನ್ಲೈನ್ ​​