Defaults.Exposed

Defaults.ExposedParandused › MIME-nuusutamise kaitse (X-Content-Type-Options)

Kuidas parandada MIME-nuusutamise kaitse (X-Content-Type-Options)

Üherealine päis, mis takistab brauseritel arvamast, mis tüüpi fail tegelikult on. Ilma selleta saab keegi teie saidile üles laaditud fail — või fail teie enda lehtedel — brauseri poolt valesti lugeda ja programmi koodina käivitada, mis on täpselt see, kuidas mõned rünnakud muudavad kahjuliku näiva üleslaadimise viisiks teie klientide sessioonide varastamiseks.

Põhijareldus sinu ettevõttele: Selle päise puudumine on selge, skannidava märk, et põhialuseid pole lukustatud. Üksi võtab see saidi harva maha, kuid kombineerituna faili üleslaadimise vormi või kasutaja loodud sisuga avab see tee ründajale pahatahtliku koodi käivitamiseks teie külastajate brauserites — sisse logitud sessioonide kaaperdamine, kaardi sisestamise või sisselogimise üksikasjade vargus ning panemine teid andmekaitserikkumise vestluse valele küljele. See on üks odavamaid turbeparandusi: üks rida, tasuta, umbes viis minutit.

Mida see sulle maksab

Miks see on oluline. Brauserid, kui server on faili tüübi osas ebaselge, üritavad arvata ('nuusutada') sisu tüüpi. Ründajad kasutavad seda arvamist: laadivad üles faili, mille server ausalt usub olevat kahjutu pilt, kuid mille sisu on käsitletud nii, et brauser, jäetuna arvama, otsustab, et see on tegelikult JavaScripti tükk — ja seejärel käivitab selle, otse teie kliendi brauseris, teie domeenil. X-Content-Type-Options: nosniff päis ütleb igale brauserile arvamise välja lülitada ja usaldada serveri deklareeritud tüüpi, sulgedes terve selle trikkerite klassi. See on hindamisväärt kontroll, mis on väärt 25 punkti, ning hinnatud keskmise raskusega, kui puudub.

Lühidalt omanikule

Igas veebibrauseris on vaikne eeldus: kui see laadib alla faili teie saidilt, üritab see välja selgitada, mis tüüpi fail see on. Tavaliselt usaldab see teie serverit. Kuid kui teie server on ebaselge, brauser arvab — ja seda arvamist nimetatakse MIME-nuusutamiseks.

Probleem on selles, et ründajad saavad arvamist manipuleerida. Nad saavad luua faili, mida teie server ausalt usub olevat kahjutu pilt, kuid mida brauser, jäetuna arvama, otsustab olevat tegelikult programmikood — ja seejärel käivitab selle, otse teie kliendi brauseris, teie domeenil.

On üherealine juhis, mis lülitab arvamise välja: X-Content-Type-Options: nosniff. See ütleb igale brauserile: “ärge arvake — usaldage täpselt seda, mida minu server teile ütleb.” See on kogu parandus. See on tasuta, võtab umbes viis minutit ning õigesti ehitatud saidil ei lõhu see midagi.

See kontroll otsib seda päist. Kui see puudub, kaotate 25 punkti ning see on hinnatud keskmise raskusega probleemina — mitte seetõttu, et päis üksi oleks katastroof, vaid seetõttu, et selle puudumine on usaldusväärne märk, et põhitõdesid pole lukustatud.

Mida see võib teile maksma minna

Need on realistlikud, äritaseme stsenaariumid.

Ühtegi neist ei nõua keerukat ründajat. MIME-nuusutamise kuritarvitamine on hästi mõistetud ja automatiseeritud, mis on täpselt see, miks skannerid märgivad puuduva päise nii kindlalt.

Mis see tegelikult on

Kui brauser saab faili, eeldatakse, et server märgistab selle sisu tüübiga (näiteks image/png PNG-pildi jaoks või text/html veebilehe jaoks). Ajalooliselt ei usaldanud brauserid seda märgistust täielikult — osaliselt seetõttu, et mõned serverid said selle valesti — nii et nad piiluvad faili tegelikku baiti ning otsustavad ise. See piilutamine on MIME-nuusutamine.

See oli mugavus, mis muutus kohustuseks. Kui ründaja saab faili teie saidile (üleslaadimise vormi, kommentaaride välja, imporditud dokumendi kaudu) ja mõjutada selle sisu, saavad nad luua midagi, mida server märgistab kahjutult, kuid brauser nuusutab täidetava skriptina. Brauser käivitab selle seejärel teie domeenil, koos kogu usaldusväärsusega, mida teie domeen kannab.

X-Content-Type-Options: nosniff eemaldab arvamise täielikult. Sellega seatult on brauserile öeldud: kasutage serveri deklareeritud tüüpi ja mitte midagi muud. Pildina märgistatud faili käsitletakse pildina, punkt — isegi kui selle sisu näib skriptina. Ründe vektor sulgub.

Milline näeb välja “hea” tulemus: iga vastus teie saidilt — nii lehed kui varad — kannab täpselt seda päist:

X-Content-Type-Options: nosniff

Pole muid kehtivaid väärtusi ega häälestamist. Kui teie CDN ja teie server mõlemad lisavad selle (nii et näete nosniff, nosniff), on see fine ja loetakse ikka läbimisena.

Kuidas seda parandada (tasuta, ~5 minutit)

Andke see jaotis kellelele, kes haldab teie veebisaiti — teie IT-inimesele, veebiarendajale või hostiteenuse toele. Parandus on tasuta ja kiire; pole midagi osta. See, mida te küsite, on lihtne: “Lisage vastuse päis X-Content-Type-Options: nosniff igale lehele ja varale saidil.”

Siin on detail nende jaoks levinud platvormi järgi.

Cloudflare (või sarnane CDN/puhverserver) — sageli kiireim koht seda teha, katab kogu saidi korraga:

Nginx — lisage vastava server (või location) bloki sisse:

add_header X-Content-Type-Options "nosniff" always;

always märksõna tagab, et see saadetakse ka veavastasel. Laadige Nginx uuesti pärast salvestamist.

Apache — nõuab mod_headers lubamist; saidi konfiguratsioonis või .htaccess-is:

Header always set X-Content-Type-Options "nosniff"

IIS / Windowsi hostimineweb.config-is <system.webServer> all:

<httpProtocol>
  <customHeaders>
    <add name="X-Content-Type-Options" value="nosniff" />
  </customHeaders>
</httpProtocol>

Node / Express — seadke see igale vastusele:

app.use((req, res, next) => {
  res.setHeader('X-Content-Type-Options', 'nosniff');
  next();
});

(Või kasutage helmet paketti, mis seab selle ja mitu muud turbe päist vaikimisi.)

Google Workspace / Microsoft 365 saidid: need haldavad teie meili ja dokumente, mitte teie avaliku veebisaidi hostimist, seega päist ei seadistata seal — see seadistatakse kus iganes teie veebisait ise teenindatakse (teie CDN-is, veebiserver või saidiehitajas). Kui kasutate hostitud saidiehitajat (Squarespace, Wix, Shopify ja sarnased), lisavad paljud selle päise teile automaatselt; kontrollige tulemust selle asemel, et eeldada, ja küsige nende toelt, kui see puudub.

Pärast juurutamist kontrollige seda. Käivitage uuesti skannimine, või laske teie arendajal kontrollida vastuse päiseid brauseri arendustööriistades (Võrgu sakk → klõpsake mis tahes päringutel → Vastuse päised) ning kinnitage X-Content-Type-Options: nosniff olemasolu. Testige saiti lühidalt, et kinnitada, et midagi stiili või skriptide osas ei lõhkunud — õigesti ehitatud saidil midagi ei lõhu.

Levinud vead

Andke see teie IT-inimesele

Tehniline kokkuvõte: see kontroll uurib HTTP vastuse päiseid ja läbib, kui X-Content-Type-Options on olemas ja selle (täheregistritundetu) väärtus sisaldab nosniff — sealhulgas mitme allika nosniff, nosniff juhul, kui CDN ja päritolu mõlemad selle seadistavad. Puuduvad või mitte-nosniff väärtus ebaõnnestub. See on hindamisväärt P2 kontroll, mis on väärt 25 punkti, hinnatud keskmise raskusega ebaõnnestumise korral ja vastab OWASP Top 10 A05-le (Turvalisuse konfiguratsiooni puudumine). Parandus on üks staatiline vastuse päis, mida rakendatakse kõigile vastustele; pole parameetreid ega kehtivaid alternatiivseid väärtusi. Seadistage see servas (CDN) kogu saidi katmiseks või veebiserver always semantikaga, nii et see edastatakse ka veavastusel, seejärel kinnitage vastuse päistes.

KKK

Me ei luba kellelgi faile üles laadida. Kas vajame ikka seda?

Jah, ja see on ikka seda väärt teha. Päis on kaitsesügavus: see takistab ka brauseril väärlugeda teie enda saidilt teenindatavaid skripte, stiilistikke ja andmefaile, mis kaitseb mitmete saidiüleste skriptimise trikke vastu isegi saitidel, millel pole üleslaadimise vormi. See ei maksa midagi ega lõhu õigesti konfigureeritud saiti, seega pole põhjust seda vahele jätta.

Kas selle lisamine lõhub midagi meie veebisaidil?

Peaaegu mitte kunagi. nosniff lihtsalt paneb brauserid austama teie server juba saadab sisu tüüpi. Ainus viis, kuidas see probleeme põhjustab, on kui teie server märgistab faile valesti — näiteks saadab stiilistiku või skripti vale tüübiga. Kui midagi lõhutub, on see tegelik viga, mille nosniff paljastas, mitte põhjustas, ja see on niikuinii parandamist väärt. Testige pärast juurutamist üks kord.

Milline näeb 'hea' tegelikult välja?

Üks vastuse päis igal lehel ja varal: X-Content-Type-Options: nosniff. See on kogu korrektne konfiguratsioon — pole muid kehtivaid väärtusi ega häälestamist vaja.

Meie CDN (Cloudflare või sarnane) ja meie server lisavad mõlemad selle — kas see on probleem?

Ei. Väärtuse topeltnägemine ('nosniff, nosniff'), sest nii CDN kui ka päritolu selle seadistavad, on täiesti fine ja läbib ikka. Te ei pea ühte eemaldama.

Kas see parandamine maksab midagi?

Ei. Parandus on üks rida tasuta konfiguratsiooni teie veebiserveri või CDN-is. Igaüks, kes küsib teilt tasu ühe päise lisamise eest, küsib üle. Ainsad asjad, mille eest tasub maksta, on jätkuv jälgimine, portfellide vaade mitme saidi üle või ametlik audit — mitte parandus ise.

Kuidas see erineb sisuturbepoliitikast (CSP)?

Need täiendavad üksteist. CSP kontrollib, millised skriptid ja ressursid üldse laadida lubatud on; nosniff takistab brauseril faili, mida ta laadib, valesti klassifitseerimast. Soovite mõlemat. nosniff on palju lihtsam ja kiirem lisada, seega on see hea esimene samm täieliku CSP poole teel.