Kas teid rünnatakse? Võtke ühendust intsidentidele reageerimise meeskonnaga

info@angelforce.eu
Veebiturvalisus

Olulised turvapäised ja need, millest loobuda

Praktiline juhend: CSP koos nonce’idega, HSTS ja eellaadimine, frame-ancestors, Referrer-Policy, Permissions-Policy ja COOP, näited ning millest loobuda.

Saadaval ka:EnglishTürkçeDeutschFrançaisEspañolItalianoPolskiNederlands

Illustratsioon: Olulised turvapäised ja need, millest loobuda

HTTP-vastuse päised ütlevad brauserile, kuidas teie lehtedega ümber käia: milliseid skripte tohib käivitada, kas saiti tohib raamida ja kas see tuleb alati laadida HTTPS-i kaudu. Käputäis neist blokeerib peaaegu kuluta terveid ründeliike. Teised on aegunud ja tekitavad ainult müra või isegi riski.

Lähtetase, millest alustada

See on mõistlik lähtepunkt HTML-rakendusele, mida pakutakse ainult HTTPS-i kaudu. Ärge kleepige seda muutmata. Eriti CSP peab vastama sellele, kuidas teie lehed skripte laadivad, selle nonce peab olema iga vastuse jaoks uus ja HSTS-i eellaadimist on raske tagasi võtta.

Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
Content-Security-Policy: script-src 'nonce-3f9a1c7e2b' 'strict-dynamic'; object-src 'none'; base-uri 'none'; frame-ancestors 'none'
X-Content-Type-Options: nosniff
Referrer-Policy: strict-origin-when-cross-origin
Permissions-Policy: geolocation=(), camera=(), microphone=()
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Resource-Policy: same-site

Content-Security-Policy

CSP piirab, kust skriptid ja muud ressursid tohivad tulla. Selle peamine ülesanne on muuta saitidevahelise skriptimise (XSS) haavatavused palju raskemini ärakasutatavaks.

OWASP-i CSP spikker eelistab pikale lubatud domeenide loendile nonce’idel või räsidel põhinevat ranget poliitikat. Liiga laiadest või liiga detailsetest lubatud loenditest pääsetakse sageli mööda. Nonce’il põhinev poliitika näeb välja selline:

Content-Security-Policy: script-src 'nonce-3f9a1c7e2b' 'strict-dynamic'; object-src 'none'; base-uri 'none'

Iga skriptisilt kannab siis sama väärtust, näiteks <script nonce="3f9a1c7e2b">. Nonce peab olema juhuslik ja iga vastuse jaoks uus; fikseeritud väärtus nullib selle mõtte. Looge see oma mallikihis. OWASP hoiatab vahevara eest, mis lisab nonce’i igale skriptisildile, sest see õnnistaks ka süstitud skripte.

Kui teie lehed on staatilised, kasutage selle asemel räsisid: iga tekstisisese skripti jaoks väärtus 'sha256-...'. Iga muudatus skriptis, isegi tühikutes, muudab räsi.

Vältige direktiivis script-src väärtusi 'unsafe-inline' ja 'unsafe-eval'. Need avavad uuesti täpselt selle, mille sulgemiseks CSP on mõeldud.

Et kasutuselevõtt midagi katki ei teeks, saatke poliitika esmalt päisena Content-Security-Policy-Report-Only. Brauserid teatavad rikkumistest ilma midagi blokeerimata. Parandage see, mida aruanded näitavad, ja minge seejärel üle jõustamisele.

Trusted Types

Trusted Types on suunatud DOM-põhisele XSS-ile, kus teie enda JavaScript edastab ründaja kontrollitud stringe ohtlikele API-dele, nagu innerHTML, eval() või skriptielemendi src. Need lülitatakse sisse CSP-ga:

Content-Security-Policy: require-trusted-types-for 'script'; trusted-types app-policy

Kui jõustamine on sees, põhjustab lihtsa stringi edastamine mõnele neist sihtkohtadest vea. Kood peab edastama nimelise poliitika loodud väärtusi, tavaliselt sellise, mis puhastab HTML-i. MDN märgib API alates 2026. aasta veebruarist Baseline-staatusega, mis tähendab, et see töötab suuremate brauserite praegustes versioonides. Alustage report-only-režiimis, sest olemasolev kood võib kirjutada stringe otse DOM-i.

Strict-Transport-Security ja eellaadimine

HSTS käsib brauseritel ühenduda teie domeeniga ainult HTTPS-i kaudu nii mitme sekundi jooksul, kui on määratud väärtusega max-age. Koos includeSubDomains’iga hõlmab reegel ka kõiki alamdomeene.

Eellaadimise nimekiri läheb veelgi kaugemale. Brauserid tulevad nimekirjaga sisseehitatult, seega kasutab HTTPS-i isegi esimene külastus teie domeenile. Saidi hstspreload.org nõuded on:

  • kehtiv sertifikaat ja suunamine HTTP-lt HTTPS-ile samal hostil
  • kõiki alamdomeene, ka sisemisi, pakutakse HTTPS-i kaudu
  • max-age vähemalt 31536000 (üks aasta) ning lisaks includeSubDomains ja preload
  • HSTS-päis ka HTTPS-saidilt tulevatel suunamistel

Võtke see kasutusele etappide kaupa. Eellaadimise sait soovitab alustada väärtusega max-age=300, seejärel kasutada üht nädalat (604800) ja siis üht kuud (2592000), jälgides igal sammul, kas midagi läheb katki. Eellaadimise nimekirjast eemaldamine jõuab kasutajateni alles kuude pärast, seega veenduge, et iga alamdomeen suudab HTTPS-i pikaajaliselt toetada.

X-Content-Type-Options

X-Content-Type-Options: nosniff takistab brauseritel faili tüüpi selle sisu järgi ära arvamast. Kasutage seda koos õige Content-Type päisega igas vastuses, HTML-i puhul koos charset’iga, näiteks text/html; charset=UTF-8.

frame-ancestors ja X-Frame-Options

Klõpsuröövimine toimib nii, et teie leht laaditakse nähtamatult teise saidi raami sisse. CSP direktiiv frame-ancestors määrab, kes tohib teie lehte raamida, ja OWASP märgib, et seda toetavates brauserites asendab see päise X-Frame-Options.

Kaks üksikasja kipuvad inimesi üllatama. MDN-i järgi ei kasuta frame-ancestors varuvariandina default-src’i, seega tuleb see selgesõnaliselt määrata. Samuti pole sellel <meta>-sildis mingit mõju; see töötab ainult päisena. Vanemate brauserite jaoks ei tee kahju saata mõlemat:

Content-Security-Policy: frame-ancestors 'none'
X-Frame-Options: DENY

Kasutage frame-ancestors 'self', kui teie enda sait raamib oma lehti. Vältige aegunud väärtust X-Frame-Options: ALLOW-FROM. MDN märgib, et kaasaegsed brauserid eiravad selle nägemisel kogu päist.

Referrer-Policy

See päis määrab, kui suur osa praegusest URL-ist saadetakse teistele saitidele päises Referer. Kui te midagi ei määra, kasutavad brauserid vaikimisi väärtust strict-origin-when-cross-origin, mis saadab HTTPS-i kaudu teistele saitidele ainult päritolu. OWASP soovitab siiski selle selgesõnaliselt määrata. Kasutage no-referrer või same-origin, kui teie URL-id võivad sisaldada tõendeid või isikuandmeid.

Permissions-Policy

Permissions-Policy lülitab välja brauseri funktsioonid, mida teie sait ei kasuta. Tühi lubatud loend () keelab funktsiooni teie lehel ja igas selle sees olevas raamis:

Permissions-Policy: geolocation=(), camera=(), microphone=(), payment=()

Kui funktsiooni on vaja, lubage seda kitsalt, näiteks camera=(self).

COOP ja CORP

Cross-Origin-Opener-Policy: same-origin paigutab teie lehe oma sirvimiskonteksti rühma. Leht, mis avab teie lehe funktsiooniga window.open(), ei saa seejärel sellele viidet säilitada, mis sulgeb terve klassi saitidevahelisi lekkeründeid (XS-Leaks). Kui kasutate ühekordse sisselogimise või maksete jaoks hüpikaknaid, hoiab same-origin-allow-popups need töös.

Cross-Origin-Resource-Policy: same-site takistab teistel saitidel teie ressursse, näiteks pilte või skripte, manustamast. Cross-Origin-Embedder-Policy: require-corp on vajalik ainult päritoluülese isolatsiooni jaoks, mida nõuavad sellised funktsioonid nagu SharedArrayBuffer. Jätke COEP välja, kui te neid funktsioone ei vaja, sest see blokeerib päritoluülesed ressursid, mis pole sellega nõustunud.

Päised, millest loobuda

PäisOlekMida teha
X-XSS-ProtectionAegunud ja mittestandardne; MDN hoiatab, et see võib muidu turvalistes saitides XSS-vigu tekitadaEemaldage see või saatke 0 ja tuginege CSP-le
Expect-CTAegunudEemaldage see
Public-Key-PinsEemaldatud Chromiumist 2018. aastalEemaldage see; kasutage selle asemel sertifikaatide läbipaistvust (Certificate Transparency) ja CAA-kirjeid
X-Frame-Options: ALLOW-FROMAegunudKasutage frame-ancestors direktiivi
Server, X-Powered-ByPaljastavad tarkvara ja versioonidEemaldage need või kasutage neutraalset väärtust

Kust alustada

  1. Kontrollige meie turvapäiste skanneriga, mida teie sait praegu saadab.
  2. Lisage kõigepealt väikese riskiga päised: X-Content-Type-Options, Referrer-Policy, Permissions-Policy ja frame-ancestors.
  3. Võtke HSTS kasutusele lühikese max-age väärtusega ja suurendage seda järk-järgult. Kaaluge eellaadimist alles siis, kui kõik alamdomeenid on valmis.
  4. Käitage CSP-d mõni nädal report-only-režiimis, parandage rikkumised ja jõustage see seejärel.

Kui ehitate uut rakendust ja soovite, et need oleksid algusest peale lahendusse sisse projekteeritud, aitab meie turvalise tarkvaraarenduse meeskond.

Kuidas saame aidata

Turvapäiste skanner

Hinnake veebisaidi HTTP-turvapäiseid, küpsiseid ja TLS-sertifikaati ning saage iga leiu kohta parandus.

Kirjutage meile
AngelForce’i meeskond

Kirjutanud AngelForce’i meeskond: CEH-, LPT Masteri ja CISA-sertifikaadiga turvakonsultandid, kes testivad, jälgivad ja kaitsevad organisatsioonide süsteeme kogu Euroopas ja Türgis.

Artikkel on kirjutatud tehisintellekti abil allpool loetletud avalike allikate põhjal ning AngelForce’i meeskond vaatas selle enne avaldamist üle.

Allikad

  1. cheatsheetseries.owasp.org/cheatsheets/HTTP_Headers_Cheat_Sheet.html
  2. cheatsheetseries.owasp.org/cheatsheets/Content_Security_Policy_Cheat_Sheet.html
  3. hstspreload.org/
  4. developer.mozilla.org/en-US/docs/Web/API/Trusted_Types_API
  5. developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/X-XSS-Protection
  6. developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Cross-Origin-Opener-Policy

Artiklid teemal „Veebiturvalisus“

Rääkige meile, mida soovite kaitsta

Kirjeldage oma keskkonda ja seda, mida soovite saavutada. Vastame e-posti teel.

Kirjutage meile
info@angelforce.eu

AngelForce OÜ · Tallinn, Eesti