Hacker News

CSP pentesters: supratimas pagrindai

komentarai

13 min read Via www.kayssel.com

Mewayz Team

Editorial Team

Hacker News

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ę