CSP pre Pentesters: Pochopenie základov
Komentáre
Mewayz Team
Editorial Team
Prečo si každý Pentester musí osvojiť zásady zabezpečenia obsahu
Zásady zabezpečenia obsahu (CSP) sa stali jedným z najdôležitejších obranných mechanizmov na strane prehliadača proti skriptovaniu medzi stránkami (XSS), vkladaniu údajov a útokom typu clickjacking. Pri penetračných testoch však hlavičky CSP zostávajú jednou z najčastejšie nesprávne nakonfigurovaných – a nepochopených – bezpečnostných kontrol. Štúdia z roku 2024, ktorá analyzovala viac ako 1 milión webových stránok, zistila, že iba 12,8 % vôbec nasadilo hlavičky CSP a z nich takmer 94 % obsahovalo aspoň jednu slabú stránku politiky, ktorú bolo možné využiť. Pre pentesterov nie je pochopenie CSP voliteľné – je to rozdiel medzi povrchovým hodnotením a správou, ktorá v skutočnosti posilňuje klientovu bezpečnostnú pozíciu.
Či už vykonávate hodnotenia webových aplikácií, bug bounty hunting alebo zabudovávate bezpečnosť do obchodnej platformy, ktorá spracováva citlivé údaje o zákazníkoch, znalosti CSP sú základom. Táto príručka rozoberá, čo je CSP, ako funguje pod kapotou, kde zlyháva a ako môžu pentesteri systematicky vyhodnocovať a obchádzať slabé politiky.
Čo v skutočnosti robí politika zabezpečenia obsahu
CSP je vo svojej podstate deklaratívny bezpečnostný mechanizmus poskytovaný prostredníctvom hlavičky odpovede HTTP (alebo menej obyčajne značky ). Inštruuje prehliadač, ktoré zdroje obsahu – skripty, štýly, obrázky, fonty, rámce a ďalšie – sa môžu načítať a spustiť na danej stránke. Keď zdroj porušuje pravidlá, prehliadač ho zablokuje a voliteľne nahlási porušenie určenému koncovému bodu.
Pôvodnou motiváciou CSP bolo zmierniť útoky XSS. Tradičné ochrany XSS, ako je dezinfekcia vstupu a kódovanie výstupu, sú účinné, ale krehké – jediný vynechaný kontext alebo chyba kódovania môže znova zaviesť zraniteľnosť. CSP pridáva hĺbkovú vrstvu obrany: aj keď útočník vloží značku škodlivého skriptu do DOM, správne nakonfigurovaná politika zabráni prehliadaču v jej spustení.
CSP funguje na modeli bielej listiny. Namiesto toho, aby sa pokúšal blokovať známy škodlivý obsah, definuje, čo je výslovne povolené. Všetko ostatné je štandardne odmietnuté. Táto inverzia bezpečnostného modelu je teoreticky výkonná, ale v praxi je udržiavanie prísnych zásad v rámci komplexných webových aplikácií – najmä platforiem spravujúcich desiatky integrovaných modulov, ako sú CRM, fakturačné, analytické a rezervačné systémy – notoricky náročné.
Anatómia hlavičky CSP: Smernice a zdroje
Hlavička CSP sa skladá z smerníc, z ktorých každá riadi špecifický typ zdroja. Pochopenie týchto smerníc je nevyhnutné pre každého pentestera, ktorý hodnotí politiku cieľa. Medzi najdôležitejšie direktívy patria default-src (záložný príkaz pre akúkoľvek direktívu, ktorá nie je explicitne nastavená), script-src (spustenie JavaScriptu), style-src (CSS), img-src (obrázky), connect-src (XHR, Fetch a vložené pripojenia),
Každá smernica akceptuje jeden alebo viacero zdrojových výrazov, ktoré definujú povolené zdroje. Tie siahajú od konkrétnych názvov hostiteľov (https://cdn.example.com) až po širšie kľúčové slová:
- 'self' – umožňuje zdroje z rovnakého pôvodu ako dokument
- 'žiadne' – blokuje všetky zdroje tohto typu
- 'unsafe-inline' – povoľuje vložené skripty alebo štýly (účinne neutralizuje ochranu XSS)
- 'unsafe-eval' – umožňuje eval(), setTimeout(string) a podobné dynamické spustenie kódu
- 'nonce-{random}' – umožňuje špecifické vložené skripty označené zodpovedajúcim kryptografickým nonce
- 'strict-dynamic' – dôveruje skriptom načítaným už dôveryhodnými skriptami, pričom ignoruje zoznamy povolených hostiteľov
- údaje: – povoľuje identifikátory URI údajov ako zdroje obsahu
Skutočná hlavička CSP môže vyzerať takto: Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.jsdelivr.net 'nonce-abc123'; style-src 'self' 'unsafe-inline'; img-src *; object-src 'none'. Vašou úlohou ako pentestera je prečítať si tieto zásady a okamžite zistiť, kde sú silné, kde slabé a kde sú zneužiteľné.
Bežné nesprávne konfigurácie CSP, na ktoré by sa mali pentesteri zamerať
Rozdiel medzi nasadením hlavičky CSP a nasadením účinnej hlavičky CSP je obrovský. V praxi väčšina politík obsahuje slabé miesta spôsobené pohodlnosťou vývojárov, integráciou tretích strán alebo jednoduchým nedorozumením. Počas hodnotenia by mali pentesteri systematicky kontrolovať tieto bežné zlyhania.
Najničivejšou chybnou konfiguráciou je prítomnosť 'unsafe-inline' v direktíve script-src. Toto jediné kľúčové slovo robí celú výhodu CSP proti XSS v podstate zbytočnou, pretože prehliadaču umožňuje spustiť akúkoľvek vloženú značku – presne to, čo by vložilo zaťaženie XSS. Napriek tomu približne 87 % stránok s CSP obsahuje vo svojom skripte src 'unsafe-inline', podľa výskumu zverejneného bezpečnostným tímom Google. Podobne 'unsafe-eval' otvára dvere na vykonávanie kódu prostredníctvom funkcií typu string-to-code, ktoré môžu útočníci spájať s injekčnými bodmi založenými na DOM.
Ďalšou zlatou baňou sú príliš široké zoznamy povolených hostiteľov. Pridanie celej domény CDN na bielu listinu, napríklad *.googleapis.com alebo *.cloudflare.com, znamená, že každý zdroj hostený na týchto platformách sa stane dôveryhodným zdrojom skriptov. Útočníci môžu do týchto služieb nahrať škodlivý JavaScript a nechať ho spustiť v rámci bezpečnostného kontextu cieľa. Nástroje ako CSP Evaluator (vyvinuté spoločnosťou Google) môžu tieto príliš tolerantné záznamy rýchlo označiť. Pentesters by tiež mali hľadať zdroje zástupných znakov (*), chýbajúce obmedzenia object-src a absenciu direktív base-uri a form-action – dva často prehliadané vektory na extrakciu údajov alebo únos odoslaných formulárov.
Praktické techniky obchádzania CSP
Keď pentester počas prieskumu identifikuje politiku CSP, ďalším krokom je určenie, či ju možno obísť. Existuje niekoľko dobre zdokumentovaných techník a ich použiteľnosť úplne závisí od konkrétnych smerníc a zdrojových výrazov v politike cieľa.
"Politika zabezpečenia obsahu je len taká silná, ako je silná jej najslabšia smernica. Jeden príliš tolerantný zdrojový výraz môže odhaliť inak robustnú politiku - a skúsení pentestri presne vedia, kde hľadať."
💡 DID YOU KNOW?
Mewayz replaces 8+ business tools in one platform
CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.
Start Free →
Zneužitie koncového bodu JSONP je jednou z najspoľahlivejších metód obchádzania. Ak CSP pridá na bielu listinu doménu, ktorá je hostiteľom koncového bodu JSONP (napríklad veľa rozhraní Google API), útočník môže vytvoriť parameter spätného volania, ktorý spustí ľubovoľný JavaScript. Ak napríklad script-src zahŕňa accounts.google.com, ako zdroj skriptu možno použiť koncový bod JSONP na adrese /o/oauth2/revoke?callback=alert(1). Pentesters by mali vymenovať všetky domény na zozname povolených domén a skontrolovať v každej z nich JSONP, hosťovanie knižnice Angular (ktoré umožňuje vkladanie šablón prostredníctvom aplikácie ng-app) alebo otvorené chyby zabezpečenia v presmerovaní, ktoré možno spojiť pomocou zoznamov povolených script-src.
Únos základného identifikátora URI funguje, keď v zásade chýba smernica base-uri. Vložením značky
Pre moderné aplikácie využívajúce CSP, ktoré nie sú založené na CSP, by pentesteri mali hľadať opätovné použitie bez použitia (nonce, ktoré sa medzi požiadavkami nemenia), nonce leak prostredníctvom chybových stránok alebo odpovedí uložených vo vyrovnávacej pamäti a príležitosti vložiť atribúty do existujúcich povolených značiek skriptov prostredníctvom manipulácie DOM. Miniaplikácie skriptov – legitímne skripty, ktorým politika už dôveruje a ktoré možno prinútiť vykonať vstup kontrolovaný útočníkom – predstavujú možno najsofistikovanejšiu kategóriu obídenia a vyžadujú dôkladné oboznámenie sa s kódovou základňou kódu JavaScript cieľa.
Vytvorenie metodiky hodnotenia CSP
Efektívne hodnotenie CSP vyžaduje skôr štruktúrovaný prístup ako testovanie ad hoc. Pentesters by mali začleniť analýzu CSP do svojho štandardného pracovného postupu testovania webových aplikácií, počnúc pasívnym prieskumom až po aktívne pokusy o využitie.
Začnite zhromaždením všetkých hlavičiek CSP a metaznačiek v aplikácii. Zásady sa môžu medzi koncovými bodmi líšiť – panel správcu môže mať prísnejšie kontroly ako marketingová vstupná stránka alebo naopak. Na zachytenie hlavičiek použite nástroje pre vývojárov prehliadača, kontrolu odozvy balíka Burp Suite alebo nástroje príkazového riadka ako curl -I. Zaveďte každú jedinečnú politiku do automatických hodnotiacich nástrojov: CSP Evaluator spoločnosti Google, observatórium Mozilla a úložisko csp-bypass na GitHub poskytujú rýchle počiatočné hodnotenia.
Ďalej priraďte politiku k skutočnému správaniu aplikácie pri načítavaní zdrojov. Existujú skripty načítané z domén, ktoré nie sú v zozname povolených domén (čo naznačuje, že politika môže byť v režime iba na zostavovanie alebo nie je vynútená)? Spolieha sa aplikácia vo veľkej miere na vložené skripty, ktoré by sa podľa prísnej politiky porušili – čo naznačuje, že vývojári mohli uvoľniť CSP, aby zachovali funkčnosť? Pre platformy s komplexnou architektúrou – myslite na nástroje na riadenie podniku s integrovanými modulmi zahŕňajúcimi analytické panely, plánovanie stretnutí, spracovanie platieb a tímovú spoluprácu – je udržiavanie tesného CSP na každom povrchu funkcií skutočnou inžinierskou výzvou. Pentestri by mali venovať veľkú pozornosť nedávno pridaným funkciám alebo integráciám tretích strán, pretože práve pri nich sa s najväčšou pravdepodobnosťou zaviedli výnimky z pravidiel.
- Zachyťte a katalogizujte hlavičky CSP z každého jedinečného koncového bodu a typu odpovede
- Spustite automatizovanú analýzu pravidiel pomocou nástroja CSP Evaluator a podobných nástrojov
- Uveďte zoznam všetkých povolených domén pre koncové body JSONP, knižnice Angular a otvorené presmerovania
- Otestujte predvídateľnosť, opätovné použitie alebo únik v politikách, ktoré nie sú založené na existencii
- Overte, že režim iba nahlasovania sa nezamieňa s vynúteným režimom
- Pokúste sa zdokumentovať techniky obídenia proti zisteným nedostatkom
- Zdokumentujte zistenia s usmerneniami na nápravu vrátane konkrétnych zmien smerníc
Zapisovanie použiteľných zistení CSP do správ Pentest
Identifikovanie slabých stránok CSP je len polovica práce – ich efektívna komunikácia s vývojovými tímami určuje, či budú skutočne opravené. Zistenie, ktoré jednoducho uvádza, že „CSP umožňuje nebezpečné vkladanie“ bez kontextu, bude pravdepodobne zbavené priority. Namiesto toho by mali pentesteri preukázať konkrétny dopad každej slabiny tak, že ju zreťazia so skutočným alebo teoretickým vektorom XSS špecifickým pre cieľovú aplikáciu.
Štruktúrujte svoje zistenia CSP tak, aby zahŕňali aktuálnu politiku (doslovne), konkrétnu smernicu alebo zdrojový výraz, ktorý je zraniteľný, dôkaz o koncepte, ktorý ukazuje zneužitie alebo jasný príbeh o útoku, a odporúčanú opravenú politiku. Ak je to možné, uveďte presnú hlavičku, ktorú by mal vývojový tím nasadiť. Pre organizácie prevádzkujúce komplexné webové aplikácie – platformy ako Mewayz, ktoré konsolidujú CRM, fakturáciu, mzdy, riadenie ľudských zdrojov a desiatky ďalších modulov do jedného rozhrania pre viac ako 138 000 používateľov – musia odporúčania na nápravu CSP zohľadňovať celý rozsah integrácií tretích strán a dynamického načítania obsahu. Príliš agresívna politika naruší funkčnosť; ten, ktorý je príliš tolerantný, poskytuje falošnú dôveru.
V konečnom dôsledku, CSP nie je strieborná guľka a pentestri by to mali vo svojich správach náležite zarámovať. Je to výkonná vrstva v stratégii ochrany do hĺbky, ktorá najlepšie funguje spolu s robustnou validáciou vstupu, kódovaním výstupov, integritou subresource (SRI) a bezpečnými postupmi vývoja. Organizácie, ktoré spravia CSP správne, to považujú za živú politiku – politiku, ktorá sa vyvíja spolu s ich aplikáciou, pravidelne sa testuje a nikdy sa nespolieha na 'unsafe-inline' ako trvalú skratku. Pre pentesterov zvládnutie analýzy CSP premení rutinnú kontrolu hlavičky na jeden z najcennejších výstupov v akomkoľvek hodnotení webových aplikácií.
Často kladené otázky
Čo je to politika zabezpečenia obsahu (CSP) a prečo by to malo záujemcov o to zaujímať?
Zásady zabezpečenia obsahu sú bezpečnostný mechanizmus na strane prehliadača, ktorý riadi, ktoré zdroje môže webová stránka načítať, a pomáha tak predchádzať útokom XSS, vkladaniu údajov a clickjackingu. Pentesters musia chápať CSP, pretože je to jedna z najčastejšie nesprávne nakonfigurovaných bezpečnostných kontrol – štúdie ukazujú, že takmer 94 % nasadených politík obsahuje zneužiteľné slabiny. Zvládnutie základov CSP umožňuje pentesterom identifikovať kritické zraniteľnosti, ktoré automatickým skenerom často úplne chýbajú.
Aké najčastejšie chybné konfigurácie CSP zisťujú pentesteri?
Najčastejšie chybné konfigurácie CSP zahŕňajú používanie direktív unsafe-inline a unsafe-eval, príliš tolerantné zdroje zástupných znakov, chýbajúce direktívy frame-ancestors, ktoré umožňujú clickjacking, a pridanie celých domén CDN na bielu listinu, ktoré hosťujú obsah kontrolovaný útočníkmi. Pentestri by tiež mali hľadať chýbajúce direktívy ako base-uri a form-action, ktoré možno využiť na phishing a exfiltráciu údajov, aj keď sa kontroly skriptov zdajú prísne.
Ako môžu firmy chrániť svoje webové aplikácie pomocou správnych hlavičiek CSP?
Firmy by mali začať s prísnym CSP a namiesto zoznamov povolených domén by mali používať skripty založené na iných alebo hašovacích skriptoch. Najprv nasaďte v režime len na hlásenie, aby ste pred presadzovaním identifikovali porušenia. Platformy ako Mewayz, 207-modulový podnikový operačný systém začínajúci na 19 USD/mesiac, pomáhajú tímom bezpečne spravovať ich prítomnosť na webe a zároveň dodržiavať moderné osvedčené postupy zabezpečenia vo všetkých digitálnych kontaktných bodoch.
Aké nástroje používajú pentesteri na hodnotenie účinnosti CSP?
Pentesteri bežne používajú CSP Evaluator od Google, nástroje pre vývojárov prehliadačov a rozšírenia Burp Suite na analýzu slabín v hlavičkách CSP. Manuálne testovanie zostáva nevyhnutné – automatickým nástrojom chýbajú obchádzania závislé od kontextu, ako sú koncové body JSONP a vkladanie šablón Angular do domén na zozname povolených. Dôkladné posúdenie kombinuje automatické skenovanie s manuálnym preverením každej smernice oproti známym obchádzacím technikám a špecifickému technologickému zásobníku aplikácie.
We use cookies to improve your experience and analyze site traffic. Cookie Policy