Hacker News

CSP za pentestere: Razumijevanje osnova

Komentari

13 min read Via www.kayssel.com

Mewayz Team

Editorial Team

Hacker News

Zašto svaki pentester mora savladati politiku sigurnosti sadržaja

Politika sigurnosti sadržaja (CSP) postala je jedan od najkritičnijih odbrambenih mehanizama na strani pretraživača od skriptovanja na više lokacija (XSS), ubrizgavanja podataka i napada klikova. Ipak, u angažmanima na testiranju penetracije, CSP zaglavlja ostaju jedna od najčešće pogrešno konfiguriranih — i pogrešno shvaćenih — sigurnosnih kontrola. Studija iz 2024. koja je analizirala preko 1 milion web stranica otkrila je da je samo 12,8% uopće implementiralo CSP zaglavlja, a od toga je skoro 94% sadržavalo barem jednu slabost politike koja bi se mogla iskoristiti. Za pentestere, razumijevanje CSP-a nije obavezno – to je razlika između procjene na površinskom nivou i izvještaja koji zapravo jača sigurnost klijenta.

Bilo da provodite procjenu web aplikacija, lov na greške ili ugrađujete sigurnost u poslovnu platformu koja rukuje osjetljivim podacima o klijentima, znanje CSP-a je temelj. Ovaj vodič razlaže šta je CSP, kako funkcioniše ispod haube, gde ne uspeva i kako pentesteri mogu sistematski proceniti i zaobići slabe politike.

Šta Politika sigurnosti sadržaja zapravo radi

U svojoj srži, CSP je deklarativni sigurnosni mehanizam koji se isporučuje putem HTTP zaglavlja odgovora (ili rjeđe, oznake). On daje instrukcije pretraživaču koji izvori sadržaja - skripte, stilovi, slike, fontovi, okviri i još mnogo toga - smiju učitavati i izvršavati na datoj stranici. Kada resurs prekrši pravilo, pretraživač ga blokira i opciono prijavljuje kršenje određenoj krajnjoj tački.

Prvobitna motivacija iza CSP-a bila je ublažavanje XSS napada. Tradicionalna XSS odbrana kao što je sanacija ulaza i kodiranje izlaza je efikasna, ali krhka - jedan propušten kontekst ili greška kodiranja može ponovo uvesti ranjivost. CSP dodaje dubinski sloj odbrane: čak i ako napadač ubaci oznaku zlonamjerne skripte u DOM, pravilno konfigurirana politika sprječava pretraživač da je izvrši.

CSP radi na modelu bijele liste. Umjesto da pokušava blokirati poznati loš sadržaj, on definira šta je izričito dozvoljeno. Sve ostalo je po defaultu odbijeno. Ova inverzija sigurnosnog modela je moćna u teoriji, ali u praksi, održavanje strogih politika u kompleksnim web aplikacijama – posebno platformama koje upravljaju desetinama integrisanih modula kao što su CRM, fakturiranje, analitika i sistemi za rezervacije – je notorno teško.

Anatomija CSP zaglavlja: Direktive i izvori

CSP zaglavlje se sastoji od direktiva, od kojih svaka kontrolira određeni tip resursa. Razumijevanje ovih direktiva je od suštinskog značaja za svakog pentestera koji procjenjuje politiku cilja. Najvažnije direktive uključuju default-src (zamjena za bilo koju direktivu koja nije eksplicitno postavljena), script-src (izvršenje JavaScripta), style-src (CSS), img-src (slike), connect-src, Fetch, Web veza frame-src (ugrađeni iframes) i object-src (dodaci kao što su Flash ili Java apleti).

Svaka direktiva prihvata jedan ili više izvornih izraza koji definiraju dozvoljeno porijeklo. Oni se kreću od specifičnih imena hosta (https://cdn.example.com) do širih ključnih riječi:

  • 'self' — dozvoljava resurse iz istog porijekla kao i dokument
  • 'none' — blokira sve resurse tog tipa
  • 'unsafe-inline' — dozvoljava ugrađene skripte ili stilove (efikasno neutralizira XSS zaštitu)
  • 'unsafe-eval' — omogućava eval(), setTimeout(string) i slično izvršavanje dinamičkog koda
  • 'nonce-{random}' — dozvoljava određene inline skripte označene odgovarajućim kriptografskim nonce
  • 'strict-dynamic' — vjeruje skriptama učitanim od strane već pouzdanih skripti, zanemarujući liste dopuštenja zasnovane na hostu
  • podaci: — dozvoljava URI-je podataka kao izvore sadržaja

Zaglavlje CSP-a u stvarnom svijetu može izgledati ovako: 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'. Kao pentester, vaš posao je da pročitate ovu politiku i odmah utvrdite gdje je jaka, gdje slaba, a gdje se može iskoristiti.

Uobičajene pogrešne konfiguracije CSP-a koje bi pentesteri trebali ciljati

Razlik između postavljanja CSP zaglavlja i implementacije efikasnog CSP zaglavlja je ogroman. U praksi, većina politika sadrži slabosti koje je uvela pogodnost programera, integracije treće strane ili jednostavni nesporazum. Tokom ocjenjivanja, pentesteri bi trebali sistematski provjeravati ove uobičajene greške.

Najrazornija pogrešna konfiguracija je prisustvo 'unsafe-inline' u script-src direktivi. Ova jedina ključna riječ čini cjelokupnu anti-XSS prednost CSP-a u suštini beskorisnom, jer omogućava pretraživaču da izvrši bilo koju inline oznaku