CSP pentesters: supratimas pagrindai
komentarai
Mewayz Team
Editorial Team
Kodėl kiekvienas Pentesteris turi įsisavinti turinio saugos politiką
Turinio saugos politika (CSP) tapo vienu iš svarbiausių naršyklės apsaugos mechanizmų nuo scenarijų tarp svetainių (XSS), duomenų įterpimo ir paspaudimų užgrobimo atakų. Tačiau atliekant įsiskverbimo testavimo užduotis, CSP antraštės išlieka viena iš dažniausiai netinkamai sukonfigūruotų ir nesuprantamų saugos valdiklių. 2024 m. atliktame tyrime, kuriame buvo analizuojama daugiau nei 1 milijonas svetainių, nustatyta, kad tik 12,8 % iš viso įdiegė CSP antraštes, o beveik 94 % iš jų buvo bent vienas politikos trūkumas, kurį būtų galima išnaudoti. Dalyviams CSP suprasti nebūtina – tai skirtumas tarp paviršiaus lygio įvertinimo ir ataskaitos, kuri iš tikrųjų sustiprina kliento saugos poziciją.
Nesvarbu, ar vertinate žiniatinklio programas, ieškote klaidų, ar kuriate saugumą verslo platformoje, kuri tvarko jautrius klientų duomenis, CSP žinios yra esminės. Šiame vadove paaiškinama, kas yra CSP, kaip jis veikia po gaubtu, kur sugenda ir kaip besidomintys gali sistemingai įvertinti ir apeiti silpnas strategijas.
Ką iš tikrųjų daro turinio saugos politika
Iš esmės CSP yra deklaratyvus saugos mechanizmas, pateikiamas per HTTP atsako antraštę (arba rečiau žymą). Jis nurodo naršyklei, kuriuos turinio šaltinius – scenarijus, stilius, vaizdus, šriftus, rėmelius ir kt. – leidžiama įkelti ir vykdyti tam tikrame puslapyje. Kai šaltinis pažeidžia politiką, naršyklė jį blokuoja ir pasirinktinai praneša apie pažeidimą nurodytam galutiniam taškui.
Pradinė CSP motyvacija buvo sušvelninti XSS atakas. Tradicinės XSS apsaugos priemonės, pvz., įvesties valymas ir išvesties kodavimas, yra veiksmingos, bet trapios – vienas praleistas kontekstas arba kodavimo klaida gali vėl sukelti pažeidžiamumą. CSP prideda nuodugnios apsaugos sluoksnį: net jei užpuolikas į DOM įterpia kenkėjiško scenarijaus žymą, tinkamai sukonfigūruota politika neleidžia naršyklei jos vykdyti.
CSP veikia pagal baltojo sąrašo modelį. Užuot bandę blokuoti žinomą blogą turinį, jis apibrėžia, kas yra aiškiai leidžiama. Visa kita pagal numatytuosius nustatymus atmesta. Šis saugos modelio pakeitimas teoriškai yra galingas, tačiau praktiškai sudėtingose žiniatinklio programose, ypač platformose, valdančiose dešimtis integruotų modulių, pvz., CRM, sąskaitų faktūrų išrašymo, analizės ir rezervavimo sistemų, yra labai sunku laikytis griežtos politikos.
CSP antraštės anatomija: direktyvos ir šaltiniai
CSP antraštė sudaryta iš direktyvų, kurių kiekviena valdo konkretų išteklių tipą. Šių direktyvų supratimas yra būtinas kiekvienam pentesteriui, vertinančiam taikinio politiką. Svarbiausios direktyvos yra default-src (bet kurios aiškiai nenustatytos direktyvos atsarginė dalis), script-src (JavaScript vykdymas), style-src (CSS), img-src (vaizdai), connect-src (XHR, Fetch-me). (įterptieji „iframe“) ir object-src (įskiepiai, pvz., „Flash“ arba „Java“ programėlės).
Kiekviena direktyva priima vieną ar daugiau šaltinio išraiškų, kurios apibrėžia leistiną kilmę. Tai svyruoja nuo konkrečių prieglobos pavadinimų (https://cdn.example.com) iki platesnių raktinių žodžių:
- „Savas“ – leidžia išteklius iš tos pačios kilmės kaip ir dokumentas
- Nėra – blokuoja visus tokio tipo išteklius
- „nesaugus įterptas“ – leidžia eilutinius scenarijus arba stilius (veiksmingai neutralizuoja XSS apsaugą)
- „nesafe-eval“ – leidžia vykdyti eval(), setTimeout(string) ir panašų dinaminio kodo vykdymą.
- nonce-{random} – leidžia konkrečius eilutinius scenarijus, pažymėtus atitinkamu kriptografiniu nonce
- „griežtas dinaminis“ – pasitiki scenarijais, įkeliamais jau patikimų scenarijų, nepaisydamas prieglobos leidžiamųjų sąrašų
- duomenys: – leidžia duomenų URI naudoti kaip turinio šaltinius
Tikra CSP antraštė gali atrodyti taip: Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.jsdelivr.net 'nonce-abc123'; style-src 'self' 'nesaugus inline'; img-src *; object-src 'nėra'. Jūsų, kaip entuziasto, darbas yra perskaityti šią politiką ir nedelsiant nustatyti, kur ji stipri, kur silpna ir kur ją galima išnaudoti.
Dažniausios netinkamos CSP konfigūracijos, į kurias turėtų taikyti pentesters
Atotrūkis tarp CSP antraštės ir veiksmingos CSP antraštės yra didžiulis. Praktiškai daugumoje politikų yra trūkumų, kuriuos sukelia kūrėjo patogumas, trečiųjų šalių integravimas arba paprastas nesusipratimas. Vertindami pentestuotojai turėtų sistemingai tikrinti, ar nėra šių bendrų klaidų.
Labiausiai niokojanti netinkama konfigūracija yra „nesafe-inline“ buvimas direktyvoje script-src. Dėl šio vieno raktinio žodžio visa anti-XSS teikiama CSP nauda iš esmės tampa nenaudinga, nes leidžia naršyklei vykdyti bet kurią eilutę žymą – būtent tai, ką įneštų XSS naudingoji apkrova. Nepaisant to, remiantis „Google“ saugos komandos paskelbtu tyrimu, maždaug 87 % svetainių, kuriose yra CSP, į savo scenarijų src yra įtraukta „nesafe-inline“. Panašiai, „nesafe-eval“ atveria duris kodo vykdymui naudojant eilučių į kodą funkcijas, kurias užpuolikai gali susieti su DOM įpurškimo taškais.
Per platūs prieglobos leidžiami sąrašai yra dar viena aukso kasykla. Viso CDN domeno, pvz., *.googleapis.com arba *.cloudflare.com įtraukimas į baltąjį sąrašą reiškia, kad bet koks išteklius, priglobtas šiose platformose, tampa patikimu scenarijaus šaltiniu. Užpuolikai gali įkelti kenkėjišką „JavaScript“ į šias paslaugas ir priversti ją vykdyti tikslinės saugos kontekste. Tokie įrankiai kaip CSP Evaluator (sukūrė „Google“) gali greitai pažymėti šiuos pernelyg leistinus įrašus. Pentestuotojai taip pat turėtų ieškoti pakaitos simbolių šaltinių (*), trūkstamų object-src apribojimų ir base-uri bei form-action direktyvų nebuvimo – dviejų dažnai nepastebimų vektorių, skirtų duomenims išfiltruoti arba formų pateikimui užgrobti.
Praktiniai CSP apėjimo būdai
Kai pentesteris atpažįsta CSP politiką, kitas žingsnis yra nustatyti, ar ją galima apeiti. Yra keletas gerai dokumentuotų metodų, o jų pritaikymas visiškai priklauso nuo konkrečių direktyvų ir šaltinio išraiškų tikslo politikoje.
"Turinio saugos politika yra tiek stipri, kiek stipri jos silpniausia direktyva. Viena pernelyg leistina šaltinio išraiška gali išardyti kitu atveju tvirtą politiką – ir patyrę besidomintys tiksliai žino, kur jos ieškoti."
💡 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 →
JSONP galutinio taško piktnaudžiavimas yra vienas patikimiausių apėjimo metodų. Jei CSP įtraukiamas į baltąjį sąrašą domenas, kuriame yra JSONP galutinis taškas (pavyzdžiui, daug Google API), užpuolikas gali sukurti atgalinio skambinimo parametrą, kuris vykdo savavališką JavaScript. Pavyzdžiui, jei script-src apima accounts.google.com, JSONP galutinis taškas adresu /o/oauth2/revoke?callback=alert(1) gali būti naudojamas kaip scenarijaus šaltinis. Testuotojai turėtų išvardyti visus į baltąjį sąrašą įtrauktus domenus ir patikrinti, ar juose nėra JSONP, kampinės bibliotekos prieglobos (kuri leidžia įterpti šabloną per ng-app) arba atidaryti peradresavimo spragas, kurias galima susieti su script-src leidžiamaisiais sąrašais.
Pagrindinio URI užgrobimas veikia, kai politikoje nėra base-uri direktyvos. Įvedus
Šiuolaikinėse programose, naudojančiose nepagrįstą CSP, bandytojai turėtų ieškoti vienkartinio pakartotinio naudojimo (nevienodo pakartotinio naudojimo), vienkartinio nutekėjimo klaidų puslapiuose arba talpykloje saugomuose atsakymuose ir galimybių įterpti atributus į esamas baltojo sąrašo scenarijaus žymas manipuliuojant DOM. Scenarijaus programėlės – teisėti scenarijai, kuriais jau pasitikima pagal politiką ir kurie gali būti priversti vykdyti užpuoliko valdomą įvestį – yra bene sudėtingiausia apėjimo kategorija ir reikalauja gilaus pažinimo su taikinio JavaScript kodų baze.
CSP vertinimo metodikos kūrimas
Efektyviam CSP vertinimui reikalingas struktūrinis metodas, o ne ad hoc testavimas. Pentestuotojai turėtų įtraukti CSP analizę į savo standartinę žiniatinklio programų testavimo darbo eigą, pradedant pasyvia žvalgyba ir pereinant prie aktyvių išnaudojimo bandymų.
Pradėkite rinkdami visas CSP antraštes ir metažymes visoje programoje. Priklausomai nuo galutinių taškų politikos gali skirtis – administratoriaus skydelis gali turėti griežtesnę kontrolę nei rinkodaros nukreipimo puslapis, arba atvirkščiai. Norėdami užfiksuoti antraštes, naudokite naršyklės kūrėjo įrankius, „Burp Suite“ atsakymo patikrinimą arba komandų eilutės įrankius, pvz., curl -I. Kiekvieną unikalią politiką įtraukite į automatinius vertinimo įrankius: „Google“ CSP vertintojas, „Mozilla“ observatorija ir csp-bypass saugykla „GitHub“ teikia greitus pradinius vertinimus.
Toliau susiekite politiką su faktiniu programos išteklių įkėlimo elgesiu. Ar yra scenarijų, įkeltų iš domenų, neįtrauktų į baltąjį sąrašą (tai rodo, kad politika gali būti tik ataskaitos režimu arba neįgyvendinta)? Ar programa labai priklauso nuo įterptųjų scenarijų, kurie būtų pažeisti laikantis griežtos politikos – tai rodo, kad kūrėjai galėjo atlaisvinti CSP, kad išlaikytų funkcionalumą? Sudėtingos architektūros platformoms – pagalvokite apie verslo valdymo įrankius su integruotais moduliais, apimančiais analizės prietaisų skydelius, susitikimų planavimą, mokėjimų apdorojimą ir komandos bendradarbiavimą – išlaikyti griežtą CSP visose funkcijų srityse yra tikras inžinerinis iššūkis. Pentestuotojai turėtų atkreipti ypatingą dėmesį į neseniai pridėtas funkcijas arba trečiųjų šalių integracijas, nes dažniausiai tai yra politikos išimtys.
- Užfiksuokite ir kataloguokite CSP antraštes iš kiekvieno unikalaus galutinio taško ir atsako tipo
- Vykdykite automatinę politikos analizę naudodami CSP Evaluator ir panašius įrankius
- Išvardykite visus JSONP galutinių taškų, kampinių bibliotekų ir atvirų peradresavimų į baltąjį sąrašą įtrauktus domenus
- Patikrinkite nenuspėjamumą, pakartotinį naudojimą ar nutekėjimą, kai tai nėra pagrįsta politika
- Patikrinkite, ar tik ataskaitų režimas nėra painiojamas su priverstiniu režimu
- Bandykite dokumentais pagrįstus apėjimo būdus, kad išvengtumėte nustatytų trūkumų
- Dokumentuokite išvadas su ištaisymo gairėmis, įskaitant konkrečius direktyvos pakeitimus
Veiksmingų CSP išvadų rašymas Pentest ataskaitose
Nustatyti CSP trūkumus yra tik pusė darbo – veiksmingai pranešus apie juos kūrėjų komandoms, nustatoma, ar jie iš tikrųjų bus ištaisyti. Tikėtina, kad išvados, kurioje paprasčiausiai nurodoma „CSP leidžia nesaugų įterpimą“, be konteksto, nebus teikiama pirmenybė. Vietoj to, bandytojai turėtų parodyti konkretų kiekvienos silpnybės poveikį, susiejant jį su faktiniu arba teoriniu XSS vektoriumi, būdingu tikslinei programai.
Struktūruokite savo CSP išvadas, kad įtrauktumėte dabartinę politiką (pažodžiui), konkrečią direktyvą arba šaltinio išraišką, kuri yra pažeidžiama, koncepcijos įrodymą, rodantį išnaudojimą arba aiškų atakos pasakojimą, ir rekomenduojamą pataisytą politiką. Jei įmanoma, pateikite tikslią antraštę, kurią turėtų įdiegti kūrimo komanda. Organizacijoms, naudojančioms sudėtingas žiniatinklio programas – tokias platformas kaip „Mewayz“, kurios sujungia CRM, sąskaitų faktūrų išrašymą, darbo užmokesčio išrašymą, personalo valdymą ir daugybę kitų modulių į vieną sąsają, skirtą daugiau nei 138 000 vartotojų – CSP taisymo rekomendacijose turi būti atsižvelgta į visą trečiųjų šalių integravimo ir dinaminio turinio įkėlimą. Per daug agresyvi politika sugadins funkcionalumą; per daug leistinas suteikia klaidingą pasitikėjimą.
Galų gale, CSP nėra sidabrinė kulka, todėl bandytojai turėtų tai atitinkamai išdėstyti savo ataskaitose. Tai galingas gilios gynybos strategijos sluoksnis, kuris geriausiai veikia kartu su patikimu įvesties patvirtinimu, išvesties kodavimu, antrinių išteklių vientisumu (SRI) ir saugia kūrimo praktika. Organizacijos, kurios tinkamai naudoja CSP, ją traktuoja kaip gyvą politiką – tokią, kuri vystosi kartu su jų programa, reguliariai tikrinama ir niekada nepasikliauja „nesaugiu įterpimu“ kaip nuolatine nuoroda. Įvaldžius CSP analizę, įprastas antraštės tikrinimas paverčiamas vienu vertingiausių bet kurios žiniatinklio programos vertinimo rezultatų.
Dažniausiai užduodami klausimai
Kas yra turinio saugos politika (CSP) ir kodėl tai turėtų rūpėti dalyviams?
Turinio saugos politika yra naršyklės saugos mechanizmas, kuris valdo, kokius išteklius gali įkelti tinklalapis, ir padeda išvengti XSS, duomenų įterpimo ir spustelėjimų užgrobimo atakų. Pentestuotojai turi suprasti CSP, nes tai yra viena iš dažniausiai netinkamai sukonfigūruotų saugos valdiklių – tyrimai rodo, kad beveik 94 % įdiegtų strategijų turi trūkumų, kuriuos galima išnaudoti. Įvaldę CSP pagrindus, bandytojai gali nustatyti kritines spragas, kurių automatiniai skaitytuvai dažnai visiškai nepastebi.
Kokias CSP klaidingas konfigūracijas dažniausiai randa bandytojai?
Dažniausiai pasitaikančios netinkamos CSP konfigūracijos apima direktyvų unsafe-inline ir nesafe-eval naudojimą, pernelyg leistinus pakaitos simbolių šaltinius, trūkstamas rėmo pirmtakų direktyvas, kurios įgalina spustelėjimų užgrobimą, ir ištisų CDN domenų, kuriuose yra užpuoliko valdomas turinys, įtraukimas į baltąjį sąrašą. Pentestuotojai taip pat turėtų ieškoti trūkstamų direktyvų, pvz., base-uri ir form-action, kurios gali būti panaudotos sukčiavimui ir duomenų išfiltravimui, net jei scenarijaus valdikliai atrodo griežti.
Kaip įmonės gali apsaugoti savo žiniatinklio programas naudodamos tinkamas CSP antraštes?
Verslas turėtų pradėti nuo griežto CSP, naudodamas scenarijų leidžiamųjų sąrašų sąrašą, kurio negalima naudoti pagal maišą, o ne domenų baltuosius sąrašus. Pirmiausia įdiekite tik ataskaitų režimu, kad nustatytumėte pažeidimus prieš vykdymą. Tokios platformos kaip Mewayz, 207 modulių verslo OS, kainuojanti nuo 19 USD per mėnesį, padeda komandoms saugiai valdyti savo buvimą žiniatinklyje, laikantis šiuolaikinės geriausios saugos praktikos visuose skaitmeniniuose kontaktiniuose taškuose.
Kokias priemones naudoja pentestuotojai, kad įvertintų CSP efektyvumą?
Pentestuotojai dažniausiai naudoja „Google“ CSP vertintoją, naršyklės kūrėjo įrankius ir „Burp Suite“ plėtinius, kad analizuotų CSP antraštes ir ieškotų trūkumų. Neautomatinis testavimas išlieka labai svarbus – automatiniai įrankiai praleidžia nuo konteksto priklausančius apėjimus, pvz., JSONP galutinius taškus ir kampinio šablono įterpimą į baltąjį sąrašą įtrauktuose domenuose. Atliekant išsamų įvertinimą, automatinis nuskaitymas derinamas su kiekvienos direktyvos rankiniu būdu peržiūra, atsižvelgiant į žinomus apėjimo būdus ir programos specifinę technologijų krūvą.
Try Mewayz Free
All-in-one platform for CRM, invoicing, projects, HR & more. No credit card required.
Get more articles like this
Weekly business tips and product updates. Free forever.
You're subscribed!
Start managing your business smarter today
Join 30,000+ businesses. Free forever plan · No credit card required.
Ready to put this into practice?
Join 30,000+ businesses using Mewayz. Free forever plan — no credit card required.
Start Free Trial →Related articles
Hacker News
Mothers Defense (YC X26) Is Hiring in Austin
Mar 14, 2026
Hacker News
XML Is a Cheap DSL
Mar 14, 2026
Hacker News
Megadev: A Development Kit for the Sega Mega Drive and Mega CD Hardware
Mar 14, 2026
Hacker News
Mouser: An open source alternative to Logi-Plus mouse software
Mar 13, 2026
Hacker News
1M context is now generally available for Opus 4.6 and Sonnet 4.6
Mar 13, 2026
Hacker News
Tennessee grandmother jailed after AI face recognition error links her to fraud
Mar 13, 2026
Ready to take action?
Start your free Mewayz trial today
All-in-one business platform. No credit card required.
Start Free →14-day free trial · No credit card · Cancel anytime