gemengde inhoud problemen ontstaan wanneer websites leveren hun pagina ‘ s via HTTPS, maar toestaan dat sommige van de bronnen worden geleverd in platte tekst. De actieve netwerk aanvaller kan niets doen aan het versleutelde verkeer, maar knoeien met de platte tekst kan resulteren in aanvallen variërend van phishing in het beste geval tot volledige browser compromis in het slechtste. Een enkel script is voldoende: de aanvaller kan de verbinding kapen en injecteren willekeurige aanval payloads erin.
we hebben de neiging om veel te praten over andere aspecten van SSL/TLS, maar gemengde inhoud is misschien wel de makkelijkste manier om uw website encryptie volledig te verknoeien.
in de vroege dagen van het Web was alle gemengde inhoud toegestaan; webbrowsers verwachtten dat de exploitanten van de site zouden nadenken over de gevolgen van het mengen van inhoud. Dat heeft natuurlijk niet met grote zekerheid geleid. Site-exploitanten deden wat ze nodig hadden om hun werk gedaan te krijgen en de kosten te verlagen. Pas in de afgelopen jaren hebben browser leveranciers beginnen om aandacht te besteden en beginnen om gemengde inhoud te beperken.
gemengde inhoud in moderne browsers
tegenwoordig hebben bijna alle grote browsers de neiging gemengde inhoud in twee categorieën op te splitsen: passief voor afbeeldingen, video ‘ s en geluid; en actief voor gevaarlijkere bronnen, zoals scripts. Ze hebben de neiging om passieve gemengde inhoud standaard toe te staan, maar actieve inhoud af te wijzen. Dit is duidelijk een compromis tussen het breken van het Web en redelijke veiligheid.
Internet Explorer is de leider op het gebied van veilige verwerking van gemengde inhoud. Al vanaf Internet Explorer 5 (volgens dit bericht) hadden ze standaard detectie en preventie van onveilige inhoud. Chrome begon standaard te blokkeren in 2011, en Firefox in 2013. De standaard Android browser en Safari, echter, nog steeds toestaan alle gemengde inhoud zonder enige beperkingen (en met bijna onbestaande waarschuwingen).
hier zijn de resultaten van mijn recente testen van welke onveilige inhoud standaard is toegestaan:
Browser | afbeeldingen | CSS | Scripts | XHR | WebSockets | Frames |
---|---|---|---|---|---|---|
Android browser 4.4.x | Ja | Ja | Ja | Ja | Ja | Ja |
Chrome 33 | Ja | Geen | Geen | Ja | Ja | Geen |
Firefox 28 | Ja | Geen | Geen | Geen | Geen | Geen |
Internet Explorer 11 | Ja | Geen | Geen | Geen | Geen | Geen |
Safari 7 | Ja | Ja | Ja | Ja | Ja | Ja |
ze zijn meestal zoals verwacht,maar er is een verrassing met Chrome, die blokkeert actieve pagina-inhoud, maar nog steeds maakt plaintext XMLHttpRequest en WebSocket verbindingen.
het is vermeldenswaard dat de tabel ons niet alles vertelt. Bijvoorbeeld, browsers hebben de neiging om niet te controleren wat hun plugins doen. Verder, bepaalde componenten (bijvoorbeeld Flash of Java) zijn volledige omgevingen in hun eigen recht, en er is weinig browsers kunnen doen om de beveiliging af te dwingen.
testen voor mixed content handling in SSL Labs
om het gemakkelijker te maken om browser handling van dit probleem te evalueren, heb ik onlangs de SSL Labs Client Test uitgebreid om mixed content handling te onderzoeken. Wanneer u de pagina bezoekt, wordt uw gebruikersbrowser getest en krijgt u vergelijkbare resultaten als deze:
prevalentie van gemengd gehalte
anekdotisch komt gemengd gehalte zeer vaak voor. Bij Qualys hebben we dit probleem in 2011 onderzocht, samen met een aantal andere problemen op applicatieniveau die resulteren in volledige breuk van encryptie in webapplicaties. We analyseerden de homepages van ongeveer 250.000 beveiligde websites uit de Alexa top 1 miljoen lijst, en vastgesteld dat 22.41% van hen gebruikt onveilige inhoud. Als afbeeldingen worden uitgesloten, daalt het aantal tot 18,71%.Een meer gedetailleerde studie van 18.526 sites uit Alexa top 100,000 vond plaats in 2013: a Dangerous Mix: Large-scale analysis of mixed-content websites (Chen et al.). Voor elke site werden tot 200 beveiligde pagina ’s geanalyseerd, wat neerkomt op een totaal van 481.656 pagina’ s. Uit de resultaten blijkt dat tot 43% van de websites gemengde inhoudsproblemen heeft.
mitigatie
de beste verdediging tegen gemengde inhoud problemen is gewoon niet hebben van dit soort problemen in uw code. Maar dat is gemakkelijk gezegd dan gedaan; er zijn vele manieren waarop gemengde inhoud kan kruipen. Als dat niet lukt, zijn er twee technologieën die nuttig kunnen zijn:
- HTTP Strict Transport Security (HST ‘ s) is een mechanisme dat beveiligde resource retrieval afdwingt, zelfs in het gezicht van gebruikersfouten (een poging om toegang te krijgen tot uw website op poort 80) en implementatiefouten (uw ontwikkelaars plaatsen een onveilige link in een beveiligde pagina). HST ‘ s is een van de beste dingen die TLS onlangs is overkomen, maar het werkt alleen op de hostnamen die u beheert.
- Content Security Policy (CSP) kan worden gebruikt om het ophalen van onveilige bronnen van websites van derden te blokkeren. Het heeft ook vele andere handige functies voor het aanpakken van andere applicatie beveiligingsproblemen, bijvoorbeeld XSS.