Defaults.Exposed › Popravki › Zaščita pred MIME-sniffingom (X-Content-Type-Options)
Kako popraviti Zaščita pred MIME-sniffingom (X-Content-Type-Options)
Glava ene vrstice, ki prepreči brskalnikom ugibanje, kaj datoteka dejansko je. Brez nje je datoteko, ki jo nekdo naloži na vašo stran — ali datoteko na vaših lastnih straneh — brskalnik napačno prebere in zažene kot kodo, kar je natanko to, kako nekateri napadi spremenijo navidezmno nenevno nalaganje v način za krajo sej vaših strank.
Bistvo za vaše podjetje: Manjkajoča ta glava je jasen, preiskljiv znak, da osnove niso bile zaklenjene. Sama po sebi redko vzame stran ven, a v kombinaciji z obrazcem za nalaganje datotek ali vsebino, ki jo ustvari uporabnik, odpre pot za napadalca, da zažene zlonamerno kodo v brskalnikih vaših obiskovalcev — ugrabitev prijavljenih sej, kraja podatkov za vnos kartice ali prijave in vas postavi na napačno stran pogovora o kršitvi podatkov. Je ena od najcenejših popravkov v varnosti: ena vrstica, brezplačna, okoli pet minut.
Kaj vas to lahko stane
- Katera koli stran, kjer stranke ali zaposleni lahko nalagajo datoteke (avatarji, dokumenti, priponke za podporo, fotografije oglaševanja), postane možno izhodišče za napade na strani brskalnika.
- Napadalec zlonamerno kodo lahko prikrije kot sliko ali besedilno datoteko in brskalnik obiskovalca jo zažene — ukrade njihovo prijavljeno sejo na vaši strani.
- Varnostni vprašalniki, preverjanja kibernetskega zavarovalništva in kupci podjetij pregledajo to glavo; njena odsotnost bere kot 'ne naredijo osnov' in lahko zaustavi ali potopi posel.
- Starejši brskalniki in nekatere integracije 'vohljajo' tipe vsebine in datoteke napačno obravnavajo na načine, ki kršijo zaupanje ali puščajo podatke.
Zakaj je to pomembno. Brskalniki, ko je strežnik nedoločen glede tega, kaj datoteka je, poskušajo uganiti ("vohljati") tip vsebine. Napadalci izkoriščajo to ugibanje: nalagajo datoteko, ki jo strežnik pošteno verjame, da je nenevna slika, a je njene vsebine takšne, da brskalnik — prepuščen ugibanju — odloči, da je dejansko koda JavaScript — in jo zažene, neposredno znotraj brskalnika vaše stranke, na vaši domeni. Glava `X-Content-Type-Options: nosniff` brskalniku naroči, da preneha ugibati in zaupa strežnikovemu navedenemu tipu, kar zapre cel razred tega tripa. Je ocenjevano preverjanje, vredno 25 točk in ocenjeno z srednjo resnostjo, ko manjka.
Kratek pregled za lastnika
V vsakem spletnem brskalniku je vgrajena tiha predpostavka: ko prenese datoteko z vaše strani, poskuša ugotoviti, kakšna vrsta datoteke je. Navadno zaupa vašemu strežniku. A če je vaš strežnik nedoločen, bo brskalnik ugibal — in to ugibanje se imenuje MIME-sniffing.
Problem je, da napadalci lahko igrajo na ugibanje. Oblikujejo datoteko, ki jo vaš strežnik pošteno verjame, da je nenevna slika, a ki jo brskalnik — prepuščen ugibanju — odloči, da je dejansko del programske kode — in jo nato zažene, neposredno znotraj brskalnika vaše stranke, na vaši domeni.
Obstaja navodilo ene vrstice, ki ugibanje izklopi: X-Content-Type-Options: nosniff. Vsakemu brskalniku pove: “Ne ugibaj — zaupaj natanko temu, kar ti pove moj strežnik.” To je cel popravek. Je brezplačen, vzame okoli pet minut in na pravilno zgrajenem mestu nič ne pokvari.
To preverjanje išče to glavo. Če manjka, izgubite 25 točk in je ocenjeno kot težava srednje resnosti — ne ker je glava sama po sebi katastrofa, a ker njena odsotnost zanesljivo kaže, da osnov niso bile zaklenena.
Kaj vas to lahko stane
To so realistični poslovni scenariji — ne gledališka najslabša primera.
-
“Nevredna” priponka, ki to ni bila. Upravljate podporni portal ali tržnico, kjer stranke nalagajo datoteke — potrdila, fotografije, dokumente. Napadalec naloži datoteko, ki jo vaš sistem shrani in streže kot sliko. Brez nosniff brskalnik žrtve ugane, da je datoteka dejansko skripta in jo zažene — tiho krade prijavljeno sejo te stranke na vaši strani. Zdaj je napadalec oni: postavlja naročila, bere sporočila, spreminja podrobnosti. Izveste, ko stranke začnejo pritoževati glede dejavnosti, ki je niso storili.
-
Posel, ki se zaustavi pri varnostnem vprašalniku. Nabavna ekipa večjega naročnika pred podpisom zažene avtomatiziran pregled vaše strani. Manjkajoče varnostne glave se takoj pokažejo. Čeprav ničesar ni bilo nikoli izkoriščenega, poročilo pravi “odsotne osnovne varnostne glave spletnega mesta” in nenadoma odgovarjate na vprašanja o sanaciji in pomikate datum zaključka za tedne — za popravek, ki bi vzel pet minut.
-
Obnovitev kibernetskega zavarovanja, ki postane težja. Več zavarovalnic zdaj pred ponudbo ali obnovitvijo zažene zunanja pregledanja. Čist profil glave je poceni dokaz higiene; manjkajoč je majhna črna oznaka, ki v kopičenju z drugimi dvigne vašo premijo ali zniža vaše pogoje.
-
Udarec po ugledu, ki ga ni enostavno razveljaviti. Če incident ugrabitve seje poveže nazaj do datoteke, servovane z vaše domene, zgodba ni “manjkala je obscurna glava” — je “[vaše podjetje] je pušćalo račune strank”. To je različica, ki si jo stranke zapomnijo in stane daleč več od popravka.
Nobena od teh zahteva prefinjenega napadalca. Zloraba MIME-sniffinga je dobro razumljena in avtomatizirana, kar je natanko razlog, zakaj skenerji manjkajočo glavo tako trdno označijo.
Kaj to dejansko je
Ko brskalnik prejme datoteko, bi moral strežnik označiti z tipom vsebine (na primer image/png za PNG sliko ali text/html za spletno stran). Zgodovinsko brskalniki niso v celoti zaupali tej oznaki — deloma ker so jo nekateri strežniki napačno nastavili — zato so vohali dejansko vsebino datoteke in se sami odločili. To vohanje je MIME-sniffing.
Bila je priročnost, ki je postala odgovornost. Če napadalec dobi datoteko na vašo stran (prek obrazca za nalaganje, polja za komentarje, uvoženega dokumenta) in vpliva na njeno vsebino, jo oblikuje tako, da jo strežnik nenevno označi, a jo brskalnik volja kot izvršljivo skripto. Brskalnik jo nato zažene na vaši domeni z vsem zaupanjem, ki ga vaša domena nosi.
X-Content-Type-Options: nosniff v celoti odstrani ugibanje. Z njim nastavljenim je brskalniku naročeno: uporabi strežnikov navedeni tip in nič drugega. Datoteka, označena kot slika, se obravnava kot slika, točka — četudi njena vsebina izgleda kot skripta. Vektor napada se zapre.
Kako izgleda “dobro”: vsak odziv z vaše strani — strani in premoženja enako — nosi natanko to glavo:
X-Content-Type-Options: nosniff
Ni veljavnih vrednosti in ni nastavkov. Če vaš CDN in vaš strežnik oba dodata to (tako da vidite nosniff, nosniff), je to v redu in še vedno šteje kot uspeh.
Kako to popraviti (brezplačno, ~5 minut)
Posredujte ta razdelek tistemu, ki vodi vašo spletno stran — vaši IT osebi, spletnemu razvijalcu ali podpori gostovanja. Popravek je brezplačen in hiter; ničesar ni za kupiti. Kar sprašujete, je preprosto: “Dodajte glavo odziva X-Content-Type-Options: nosniff vsaki strani in premoženju na strani.”
Tukaj so podrobnosti za njih, po skupni platformi.
Cloudflare (ali podoben CDN/proxy) — pogosto najhitrejše mesto za to, ki pokriva celotno stran hkrati:
- Uporabite Pravilo preoblikovanja glave odziva (Pravila → Pravila preoblikovanja → Spremi glavo odziva), da nastavite
X-Content-Type-Optionsnanosniffza vse dohodne zahteve.
Nginx — dodajte znotraj ustreznega bloka server (ali location):
add_header X-Content-Type-Options "nosniff" always;
Ključna beseda always zagotavlja, da se pošilja tudi pri odzivih napak. Znova naložite Nginx po shranjevanju.
Apache — zahteva mod_headers omogočen; v konfiguraciji mesta ali .htaccess:
Header always set X-Content-Type-Options "nosniff"
IIS / Windows gostovanje — v web.config pod <system.webServer>:
<httpProtocol>
<customHeaders>
<add name="X-Content-Type-Options" value="nosniff" />
</customHeaders>
</httpProtocol>
Node / Express — nastavite ga za vsak odziv:
app.use((req, res, next) => {
res.setHeader('X-Content-Type-Options', 'nosniff');
next();
});
(Ali uporabite paket helmet, ki to in več varnostnih glav privzeto nastavi.)
Google Workspace / Microsoft 365 strani: ti upravljata vašo e-pošto in dokumente, ne gostovanje vaše javne spletne strani, zato glava tam ni nastavljena — nastavite jo kjerkoli je vaša spletna stran dejansko servovana (vaš CDN, spletni strežnik ali gradnik strani). Če uporabljate gostovani gradnik strani (Squarespace, Wix, Shopify in podobni), jih mnogi za vas samodejno dodajo to glavo; preverite rezultat namesto predpostavljanja in za pomoč prosito njihovo podporo, če manjka.
Po deployment preverite. Znova zaženite pregled, ali pa vaš razvijalec v orodjih za razvijalce brskalnika (Omrežje zavihek → kliknite katerokoli zahtevo → Glave odziva) in potrdi, da je X-Content-Type-Options: nosniff prisotna. Kratko preizkusite stran, da potrdite, da se nič stiliziranega ali skriptiranega ni pokvarilo — na pravilno zgrajenem mestu se ne bo.
Pogoste napake
- Nastavitev le na domači strani. Glava mora biti pri vsakem odzivu — vključno s slikami, skriptami, slogovnimi listami in naloženinimi datotekami — ker so to viri, na katere vohanje vpliva. Nanjo nanašajte na ravni strežnika ali CDN-a, da je univerzalna, ne stran po stran.
- Tipkarska napaka v vrednosti. Edina veljavna vrednost je
nosniff. Karkoli drugega (prazna vrednost, napačno zapisano) preverjanje ne prestane in ne nudi zaščite. - Predpostavljanje, da nadomešča politiko varnosti vsebine. nosniff je ena plast. Ne nadzira, katere skripte smejo teči — to je delo CSP. Zdaj dodajte nosniff kot hitro zmago in ustrezno CSP obravnavajte kot večje nadaljevanje.
- Odstranjevanje “duplikata”. Če ga nastavita tako CDN kot izvorno, ga boste videli dvakrat. To je nenevno — ne tratite časa z izstranitvijo enega.
- Plačevanje zanj. Je brezplačna konfiguracijska sprememba. Revizije, stalno spremljanje in pregledovalniki portfoliov so zakonito plačani; dodajanje posamezne glave ni.
Posredujte vaši IT osebi
Tehnični povzetek: to preverjanje pregleda glave odgovora HTTP in prestane, ko je X-Content-Type-Options prisoten in njena (neobčutljiva na velikost) vrednost vsebuje nosniff — vključno z večvirovim primerom nosniff, nosniff, kjer ga nastavita tako CDN kot izvorno. Manjkajoče ali kakršna koli ne-nosniff vrednost ne prestane. Je ocenjevano preverjanje P2, vredno 25 točk, ocenjeno z srednjo resnostjo pri neuspehu in se nanaša na OWASP Top 10 A05 (Varnostna napačna konfiguracija). Sanacija je ena statična odgovornik glava, nameščena pri vseh odzivih; ni parametrov in ni veljavnih alternativnih vrednosti. Nastavite jo na robu (CDN) za pokritost celotnega mesta ali na spletnem strežniku s semantiko always, da se oddaja pri odzivih napak, nato potrdite v odzivih glav.
Pogosta vprašanja
Nikomur ne dovolimo nalaganja datotek. Ali to še vedno potrebujemo?
Da, in je še vedno vredno narediti. Glava je zaščita v globino: prav tako preprečuje brskalnikovo napačno branje skript, slogovnih listov in podatkovnih datotek, servovanih z vaše lastne strani, kar ščiti pred številnimi triki skriptiranja na strani mesta celo na straneh brez obrazca za nalaganje. Ne stane nič in na pravilno zgrajenem mestu nikoli nič ne pokvari, zato ni razloga, da jo preskočite.
Ali bo dodajanje tega pokvarilo karkoli na naši spletni strani?
Skoraj nikoli. nosniff preprosto naredi, da brskalniki upoštevajo tip vsebine, ki ga vaš strežnik že pošilja. Edini način, da povzroči težave, je, če vaš strežnik napačno označuje datoteke — na primer pošilja slogovno listo ali skripto z napačnim tipom. Če se kaj pokvari, je to prava napaka, ki jo je nosniff razkrilo, ne povzročilo, in je vseeno vredno popraviti.
Kako 'dobro' dejansko izgleda?
Ena odgovornik glava pri vsaki strani in premoženju: X-Content-Type-Options: nosniff. To je celotna pravilna konfiguracija — ni veljavnih vrednosti in ni nastavkov za prilagajanje.
Naš CDN (Cloudflare ali podoben) in naš strežnik ga oba dodajata — ali je to problem?
Ne. Videnje vrednosti dvakrat ('nosniff, nosniff'), ker jo nastavita tako CDN kot izvorno mesto, je v celoti v redu in še vedno šteje kot uspeh. Enega ni treba odstraniti.
Ali popravek stane denar?
Ne. Popravek je ena vrstica brezplačne konfiguracije na vašem spletnem strežniku ali CDN-u. Kdorkoli vam zaračuna za dodajanje posamezne glave, pretirava. Edine stvari, ki so vredne plačila na tem področju, so stalno spremljanje, poglede na portfolio in formalna revizija — ne sam popravek.
Kako se to razlikuje od politike varnosti vsebine (CSP)?
Sta dopolnilni. CSP nadzira, katere skripte in vire je sploh dovoljeno nalagati; nosniff prepreči brskalnikovo napačno razvrščanje datoteke, ki se naloži. Hočete oboje. nosniff je daleč enostavnejši in hitrejši za dodajanje, zato je dobro izhodišče na poti k polni CSP.