Hacker News

CSP pre Pentesters: Pochopenie základov

Komentáre

3 min read Via www.kayssel.com

Mewayz Team

Editorial Team

Hacker News

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), , iframsocket connection object-src (doplnky ako Flash alebo aplety Java).

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