HTTPS blandat innehåll: fortfarande det enklaste sättet att bryta SSL

blandat innehåll frågor uppstår när webbplatser levererar sina sidor via HTTPS, men tillåter en del av de resurser som ska levereras i klartext. Den aktiva nätverksangriparen kan inte göra någonting åt den krypterade trafiken, men att röra med klartext kan resultera i attacker som sträcker sig från phishing i bästa fall till full webbläsarkompromiss i värsta fall. Ett enda exponerat skript är tillräckligt: angriparen kan kapa anslutningen och injicera godtyckliga attackbelastningar i den.

vi brukar prata mycket om andra aspekter av SSL/TLS, men blandat innehåll är utan tvekan det enklaste sättet att helt förstöra din webbplatskryptering.

under de allra första dagarna av webben var allt blandat innehåll tillåtet; webbläsare förväntade webbplatsoperatörer att tänka igenom konsekvenserna av att blanda innehåll. Det resulterade naturligtvis inte med stor säkerhet. Webbplatsoperatörer gjorde vad de behövde för att få sitt arbete gjort och minska kostnaderna. Först under de senaste åren började webbläsarleverantörer uppmärksamma och börja begränsa blandat innehåll.

blandat innehåll i moderna webbläsare

idag tenderar nästan alla större webbläsare att bryta blandat innehåll i två kategorier: passiv för bilder, videor och ljud; och aktivför farligare resurser, till exempel skript. De tenderar att tillåta passivt blandat innehåll som standard, men avvisar aktivt innehåll. Detta är helt klart en kompromiss mellan att bryta webben och rimlig säkerhet.

Internet Explorer har varit ledande inom säker hantering av blandat innehåll. Så tidigt som Internet Explorer 5 (enligt detta inlägg) hade de upptäckt och förebyggande av osäkert innehåll som standard. Chrome började blockera som standard 2011 och Firefox 2013. Standard Android-webbläsaren och Safari tillåter dock fortfarande allt blandat innehåll utan några begränsningar (och med nästan obefintliga varningar).

här är resultaten av min senaste testning av vilket osäkert innehåll som är tillåtet som standard:

webbläsare bilder CSS skript XHR WebSockets ramar
Android webbläsare 4.4.x Ja Ja Ja Ja Ja Ja Ja
Chrome 33 Ja Nej Nej Ja Ja Ja Nej
Firefox 28 Ja Nej Nej Nej Nej Nej
Internet Explorer 11 Ja Nej Nej Nej Nej Nej
Safari 7 Ja Ja Ja Ja Ja Ja

de är mest som förväntat, men det finns en överraskning med Chrome, som blockerar aktivt sidinnehåll, men tillåter fortfarande klartext XMLHttpRequest och WebSocket-anslutningar.

det är värt att nämna att tabellen inte berättar allt för oss. Till exempel tenderar webbläsare att inte kontrollera vad deras plugins gör. Vidare är vissa komponenter (t.ex. Flash eller Java) fullständiga miljöer i sig, och det finns lite webbläsare kan göra för att upprätthålla säkerheten.

testning för hantering av blandat innehåll i SSL Labs

för att göra det enklare att utvärdera webbläsarhantering av detta problem utvidgade jag nyligen SSL Labs-Klienttestet för att undersöka hantering av blandat innehåll. När du besöker sidan testas din webbläsare och du får resultat som liknar dessa:

ssl-labs-client-test-mixed-content

prevalens för blandat innehåll

anekdotiskt är blandat innehåll mycket vanligt. På Qualys undersökte vi detta problem 2011, tillsammans med flera andra problem på applikationsnivå som resulterar i fullständig krypteringsbrytning i webbapplikationer. Vi analyserade hemsidorna på cirka 250 000 säkra webbplatser från Alexa top 1 million-listan och bestämde att 22,41% av dem använde osäkert innehåll. Om bilder utesluts faller antalet till 18,71%.

en mer detaljerad studie av 18 526 webbplatser extraherade från Alexa top 100 000 ägde rum 2013: A Dangerous Mix: storskalig analys av webbplatser med blandat innehåll (Chen et al.). För varje webbplats analyserades upp till 200 säkra sidor, vilket uppgick till totalt 481 656 sidor. Deras resultat tyder på att upp till 43% av webbplatser har problem med blandat innehåll.

begränsning

det bästa försvaret mot blandade innehållsproblem är helt enkelt inte att ha den här typen av problem i din kod. Men det är lätt sagt än gjort; det finns många sätt på vilka blandat innehåll kan krypa upp. När det misslyckas finns det två tekniker som kan komma till nytta:

  • HTTP Strict Transport Security (HSTS) är en mekanism som upprätthåller säker resurshämtning, även inför användarfel (försöker komma åt din webbplats på port 80) och implementeringsfel (dina Utvecklare placerar en osäker länk till en säker sida). HSTS är en av de bästa som hände med TLS nyligen, men det fungerar bara på värdnamnen du kontrollerar.
  • Content Security Policy (CSP) kan användas för att blockera osäker resurshämtning från tredje parts webbplatser. Det har också många andra användbara funktioner för att ta itu med andra applikationssäkerhetsproblem, till exempel XSS.

Write a Comment

Din e-postadress kommer inte publiceras.