Hacker News

Pentesters үчүн CSP: Негиздерин түшүнүү

Комментарийлер

2 min read Via www.kayssel.com

Mewayz Team

Editorial Team

Hacker News

Эмне үчүн ар бир Пентестер Мазмунду коопсуздук саясатын өздөштүрүшү керек

Мазмундук коопсуздук саясаты (CSP) сайттар аралык скрипттерге (XSS), маалыматтарды киргизүүгө жана кликтөө чабуулдарына каршы серепчилердин эң маанилүү коргонуу механизмдеринин бири болуп калды. Бирок, кирүү тестирлөө иш-чараларында, CSP аталыштары эң көп туура эмес конфигурацияланган жана туура эмес түшүнүлгөн коопсуздукту башкаруу элементтеринин бири бойдон калууда. 2024-жылы 1 миллиондон ашык веб-сайтты талдоо көрсөткөндөй, 12,8% гана CSP аталыштарын орноткон жана алардын дээрлик 94% пайдаланылышы мүмкүн болгон жок дегенде бир саясат алсыздыгын камтыган. Пентестер үчүн CSPти түшүнүү милдеттүү эмес — бул беттик деңгээлдеги баалоо менен кардардын коопсуздук абалын чындап бекемдеген отчеттун ортосундагы айырма.

Сиз веб-тиркемелерди баалоо, мүчүлүштүктөрдү табуу же коопсуздукту кардарлардын купуя маалыматтарын иштеткен бизнес платформасында куруп жатасызбы, CSP билими негиздүү болуп саналат. Бул колдонмо CSP деген эмне экенин, анын кантип иштээрин, кайсы жерде ийгиликсиз болуп жатканын жана пентестерлердин алсыз саясаттарды системалуу түрдө баалап, кантип кыйгап өтүшү мүмкүн экенин түшүндүрөт.

Мазмундун коопсуздук саясаты иш жүзүндө эмне кылат

Негизи, CSP HTTP жооп аталышы (же көбүнчө теги) аркылуу жеткирилген декларативдик коопсуздук механизми. Ал браузерге мазмундун кайсы булактарын — скрипттерди, стилдерди, сүрөттөрдү, шрифттерди, жээкчелерди жана башкаларды — берилген баракка жүктөөгө жана аткарууга уруксат берерин айтат. Ресурс саясатты бузса, серепчи аны бөгөттөп, эреже бузууну белгиленген акыркы чекитке кабарлайт.

CSPтин түпкү мотиви XSS чабуулдарын азайтуу болгон. Киргизүүнү санитардык тазалоо жана чыгарууну коддоо сыяктуу салттуу XSS коргонуу каражаттары эффективдүү, бирок морт — бир эле өткөрүп жиберилген контекст же коддоо катасы аялуулукту кайра киргизиши мүмкүн. CSP терең коргоо катмарын кошот: чабуулчу DOMга зыяндуу скрипт тэгин киргизсе да, туура конфигурацияланган саясат браузердин аны аткаруусуна жол бербейт.

CSP ак тизменин моделинде иштейт. Белгилүү-жаман мазмунду бөгөттөө аракетинин ордуна, ал эмнелерге ачык уруксат берилгенин аныктайт. Калганынын баары демейки боюнча четке кагылган. Бул коопсуздук моделин инверсиялоо теориялык жактан күчтүү, бирок иш жүзүндө татаал веб-тиркемелерде – өзгөчө CRM, эсеп-фактура, аналитика жана брондоо системалары сыяктуу ондогон интеграцияланган модулдарды башкарган платформаларда катуу саясатты сактоо өтө кыйын.

CSP башынын анатомиясы: Директивалар жана булактар

CSP аталышы ар бири белгилүү бир ресурс түрүн башкарган директивалардан турат. Бул директиваларды түшүнүү максаттуу саясатты баалаган ар бир пентестер үчүн маанилүү. Эң маанилүү директиваларга default-src (ачык орнотулбаган ар кандай директива үчүн резервдик), script-src (JavaScript аткарылышы), style-src (CSS), img-src (сүрөттөр), connect-src (XHR, Fetch), frame-src (камтылган iframes) жана object-src (Flash же Java апплеттери сыяктуу плагиндер).

Ар бир директива уруксат берилген булактарды аныктаган бир же бир нече булак туюнтмаларын кабыл алат. Бул белгилүү хост аттарынан (https://cdn.example.com) кененирээк ачкыч сөздөргө чейин:

  • 'self' — документ менен бир келип чыккан ресурстарга уруксат берет
  • 'эч ким' — ошол түрдөгү бардык ресурстарды бөгөттөйт
  • 'unsafe-inline' — саптык скрипттерге же стилдерге уруксат берет (XSS коргоону эффективдүү нейтралдаштырат)
  • 'unsafe-eval' — eval(), setTimeout(string) жана ушул сыяктуу динамикалык кодду аткарууга мүмкүндүк берет
  • 'nonce-{random}' — дал келген криптографиялык nonce менен тегделген белгилүү бир саптык скрипттерге уруксат берет
  • 'катуу-динамикалык' — мурунтан эле ишенимдүү скрипттер жүктөгөн скрипттерге ишенет, хостко негизделген уруксат тизмелерин этибарга албайт
  • data: — мазмун булагы катары берилиштердин URIларына уруксат берет

Чыныгы дүйнөдөгү CSP аталышы төмөнкүдөй көрүнүшү мүмкүн: Мазмун-Коопсуздук-Саясат: default-src 'self'; script-src 'self' https://cdn.jsdelivr.net 'nonce-abc123'; style-src 'self' 'кооптуу-inline'; img-src *; object-src 'жок'. Пентестер катары сиздин милдетиңиз бул саясатты окуп чыгып, анын кайсы жерде күчтүү, кайсы жерде алсыз жана кайсы жерде колдонулушу мүмкүн экенин дароо аныктоо.

Жалпы CSP туура эмес конфигурациялары Pentesters максаттуу болушу керек

CSP башын жайгаштыруу мененнатыйжалуу CSP башын колдонуунун ортосундагы ажырым абдан чоң. Иш жүзүндө, көпчүлүк саясаттар иштеп чыгуучунун ыңгайлуулугу, үчүнчү тараптын интеграциясы же жөнөкөй түшүнбөстүк менен киргизилген алсыз жактарды камтыйт. Баалоо учурунда пентестер бул жалпы каталарды системалуу түрдө текшериши керек.

Эң кыйратуучу туура эмес конфигурация - бул script-src директивасында 'unsafe-inline' болушу. Бул жалгыз ачкыч сөз CSPтин анти-XSS пайдасын дээрлик пайдасыз кылат, анткени ал браузерге каалаган