Defaults.Exposed

Defaults.ExposedKorjaukset › MIME-sniffing-suojaus (X-Content-Type-Options)

Kuinka korjata MIME-sniffing-suojaus (X-Content-Type-Options)

Yksirivi otsikko, joka estää selaimia arvailemasta, mikä tiedosto todella on. Ilman sitä tiedosto, jonka joku lataa sivustollesi – tai tiedosto omilla sivuillasi – voidaan lukea väärin selaimessa ja ajaa koodina, mikä on täsmälleen se tapa, jolla jotkut hyökkäykset muuttavat harmittomalta näyttävän latauksen tavaksi varastaa asiakkaidesi istunnot.

Lyhyesti liiketoiminnallesi: Puuttuva otsikko on selkeä, skannattava merkki siitä, että perusasiat eivät ole paikoillaan. Yksinään se harvoin kaataa sivustoa, mutta yhdistettynä tiedostojen lataamiseen tai käyttäjien tuottamaan sisältöön se avaa hyökkääjälle polun ajaa haitallista koodia kävijöidesi selaimissa – kaapaten kirjautuneiden istunnot, varastamalla korttitiedot tai kirjautumistiedot, ja asettaen sinut väärälle puolelle tietomurtokeskustelua. Se on yksi halvimmista tietoturvakorjauksista: yksi rivi, ilmainen, noin viisi minuuttia.

Mitä tämä voi maksaa sinulle

Miksi tällä on merkitystä. Selaimet, kun palvelin on epämääräinen siitä, mikä tiedosto on, yrittävät arvata ('haistaa') sisältötyypin. Hyökkääjät hyödyntävät tätä arvausta: lataavat tiedoston, jonka palvelin merkitsee kuvaksi, mutta muotoilevat sen sisällön niin, että selain päättää sen olevan JavaScript – ja ajaa sen. X-Content-Type-Options: nosniff -otsikko kertoo jokaiselle selaimelle lopettaa arvaaminen ja luottaa palvelimen ilmoittamaan tyyppiin, sulkien koko tämän luokan temppuja. Se on pisteytetty tarkistus, jonka arvo on 25 pistettä, ja se arvioidaan keskitason vakavuutena puuttuessaan.

Lyhyt versio omistajalle

Jokaiseen verkkoselaimeen on rakennettu hiljainen olettamus: kun se lataa tiedoston sivustoltasi, se yrittää selvittää, minkä tyyppinen tiedosto se on. Yleensä se luottaa palvelimesi kertomaan. Mutta jos palvelimesi on epämääräinen, selain arvaa – ja tätä arvausta kutsutaan MIME-sniffingiksi.

Ongelma on, että hyökkääjät voivat pelata arvauksen kanssa. He voivat muotoilla tiedoston, jonka palvelimesi vilpittömästi uskoo olevan harmittoman kuvan, mutta jonka selain arvauksensa perusteella päättää olevan itse asiassa ohjelmakoodi – ja ajaa sen, suoraan asiakkaasi selaimessa, verkkotunnuksellasi.

On yksirivi ohje, joka kytkee arvaamisen pois päältä: X-Content-Type-Options: nosniff. Se kertoo jokaiselle selaimelle: “älä arvaa – luota täsmälleen siihen, mitä palvelimeni kertoo sinulle.” Siinä koko korjaus. Se on ilmainen, vie noin viisi minuuttia, ja oikein rakennetulla sivustolla se ei riko mitään.

Tämä tarkistus etsii tätä otsikkoa. Jos se puuttuu, menetät 25 pistettä ja se arvioidaan keskitason vakavuuden ongelmaksi – ei koska otsikko yksinään on katastrofi, vaan koska sen puuttuminen on luotettava merkki siitä, että perusasioita ei ole lukittu.

Mitä tämä voi maksaa yrityksellesi

Nämä ovat realistisia, liiketoimintatasoisia skenaarioita – ei pahin mahdollinen skenaario.

Mikään näistä ei edellytä kehittynyttä hyökkääjää. MIME-sniffingin väärinkäyttö on hyvin ymmärrettyä ja automatisoitua, ja juuri siksi skannerit merkitsevät puuttuvan otsikon niin tiukasti.

Mitä se oikeasti on

Kun selain vastaanottaa tiedoston, palvelimen pitäisi merkitä se sisältötyypillä (esimerkiksi image/png PNG-kuvalle tai text/html verkkosivulle). Historiallisesti selaimet eivät täysin luottaneet tuohon merkintään – osaksi koska jotkut palvelimet saivat sen väärin – joten ne kurkistavat tiedoston todellisiin tavuihin ja päättävät itse. Tätä kurkistamista on MIME-sniffing.

Se oli mukavuus, josta tuli riski. Jos hyökkääjä saa tiedoston sivustollesi (latamaislomakkeen, kommenttikenttän tai tuodun asiakirjan kautta) ja vaikuttaa sen sisältöön, he voivat muotoilla jotain, jonka palvelin merkitsee harmittomasti, mutta jonka selain haistaa ajettavaksi skriptiksi. Selain ajaa sen sitten verkkotunnuksellasi, kaikella luottamuksella, jonka verkkotunnuksesi kantaa.

X-Content-Type-Options: nosniff poistaa arvailun kokonaan. Sen ollessa asettettuna, selaimelle kerrotaan: käytä palvelimen ilmoittamaa tyyppiä eikä muuta. Kuvaksi merkitty tiedosto käsitellään kuvana, piste – vaikka sen sisältö näyttäisikin skriptiltä. Hyökkäysvektori sulkeutuu.

Miltä “hyvä” näyttää: jokainen sivustosi vastaus – sivut ja resurssit yhtäläisesti – kantaa täsmälleen tämän otsikon:

X-Content-Type-Options: nosniff

Ei muita kelvollisia arvoja eikä säätämistä. Jos CDN:si ja palvelimesi molemmat lisäävät sen (näet siis nosniff, nosniff), se on ok ja läpäisee silti.

Korjausohje (ilmainen, n. 5 minuuttia)

Anna tämä osio verkkosivustoasi hallinnoivalle – IT-henkilöllesi, webkehittäjällesi tai hosting-tuelle. Korjaus on ilmainen ja nopea; ei mitään ostettavaa. Pyydät yksinkertaisesti: “Lisää vastaustaho X-Content-Type-Options: nosniff jokaiselle sivulle ja resurssille sivustossa.”

Tässä yksityiskohdat heille, yleisimmän alustan mukaan.

Cloudflare (tai vastaava CDN/proxy) – usein nopein paikka tehdä se, kattaen koko sivuston kerralla:

Nginx – lisää asianmukaisen server (tai location) lohkon sisään:

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

always-avainsana varmistaa, että se lähetetään myös virhevastauksia. Lataa Nginx uudelleen tallentamisen jälkeen.

Apache – vaatii mod_headers käytössä; sivustokonfiguraatiossa tai .htaccess:issa:

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

IIS / Windows-hostingweb.config:issa <system.webServer>:n alla:

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

Node / Express – aseta jokaiseen vastaukseen:

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

(Tai käytä helmet-pakettia, joka asettaa tämän ja muita tietoturvaotsikkoja oletuksena.)

Google Workspace / Microsoft 365 -sivustot: nämä hallinnoivat sähköpostiasi ja asiakirjojasi, ei julkista websivustoasi, joten otsikkoa ei aseteta siellä – se asetetaan siellä, missä verkkosivustosi todella tarjoillaan (CDN:ssäsi, verkkopalvelimessasi tai sivustonrakentajassasi). Jos käytät isännöityä sivustonrakentajaa (Squarespace, Wix, Shopify ja vastaavat), monet lisäävät tämän otsikon automaattisesti puolestasi; tarkista tulos olettamisen sijaan, ja kysy heidän tueltaan, jos se puuttuu.

Käyttöönoton jälkeen vahvista. Suorita skannauksesi uudelleen, tai anna kehittäjäsi tarkistaa vastaustahot selaimen kehittäjätyökaluilla (Verkko-välilehti → klikkaa mitä tahansa pyyntöä → Vastaustahot) ja vahvista, että X-Content-Type-Options: nosniff on läsnä. Testaa sivusto lyhyesti varmistaaksesi, ettei mikään tyylitetty tai skriptattu rikkoutunut – oikein rakennetulla sivustolla mikään ei rikkoudu.

Yleisimmät virheet

UKK

Emme anna kenenkään ladata tiedostoja. Tarvitsemmeko silti tämän?

Kyllä, ja se kannattaa silti tehdä. Otsikko on syvyyspuolustus: se estää myös selainta lukemasta väärin omalta sivustoltasi tarjoiltuja skriptejä, tyylitiedostoja ja datatiedostoja, mikä suojaa useita sivustojen välisiä skriptaustemppuja vastaan myös sivustoilla, joilla ei ole latauslomaketta. Se ei maksa mitään eikä koskaan riko oikein rakennettua sivustoa, joten ei ole syytä jättää se lisäämättä.

Rikkoutuuko sivustomme jos lisäämme tämän?

Lähes koskaan. nosniff yksinkertaisesti saa selaimet kunnioittamaan sisältötyyppiä, jonka palvelimesi jo lähettää. Ainoa tapa aiheuttaa ongelmia on jos palvelimesi merkitsee tiedostoja väärin – esimerkiksi lähettää tyylitiedoston tai skriptin väärällä tyypillä. Jos jotain rikkoutuu, se on todellinen bugi, jonka nosniff paljasti eikä aiheuttanut, ja se kannattaa korjata joka tapauksessa. Testaa kerran käyttöönoton jälkeen.

Miltä 'hyvä' oikeasti näyttää?

Yksittäinen vastaustaho jokaisessa sivussa ja resurssissa: X-Content-Type-Options: nosniff. Se on koko oikea konfiguraatio – ei muita kelvollisia arvoja eikä säätämistä.

Sekä CDN (Cloudflare tai vastaava) että palvelimemme lisäävät sen – onko se ongelma?

Ei. Arvon näkeminen kahdesti ('nosniff, nosniff'), koska sekä CDN että lähtöpalvelin asettavat sen, on täysin ok ja läpäisee silti. Ei tarvitse poistaa toista.

Maksaako tämän korjaaminen?

Ei. Korjaus on yksi rivi ilmaista konfiguraatiota verkkopalvelimessasi tai CDN:ssäsi. Kukaan, joka veloittaa sinua yksittäisen otsikon lisäämisestä, laskuttaa liikaa. Ainoa asia, josta kannattaa maksaa tässä alueella, on jatkuva seuranta, portfolionäkymä useille sivustoille tai muodollinen tarkastus – ei itse korjaus.

Miten tämä eroaa Content Security Policysta (CSP)?

Ne täydentävät toisiaan. CSP hallitsee, mitä skriptejä ja resursseja ylipäätään saa ladata; nosniff estää selainta luokittelemasta väärin tiedostoa, jonka se lataa. Haluat molemmat. nosniff on paljon yksinkertaisempi ja nopeampi lisätä, joten se on hyvä ensiaskel kohti täyttä CSP:tä.