Re: [websec] Content sniffing

Adam Barth <ietf@adambarth.com> Mon, 09 July 2012 23:24 UTC

Return-Path: <ietf@adambarth.com>
X-Original-To: websec@ietfa.amsl.com
Delivered-To: websec@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 5B45B11E80A4 for <websec@ietfa.amsl.com>; Mon, 9 Jul 2012 16:24:14 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.977
X-Spam-Level:
X-Spam-Status: No, score=-2.977 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, FM_FORGED_GMAIL=0.622, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id w02HjEU+9JOL for <websec@ietfa.amsl.com>; Mon, 9 Jul 2012 16:24:13 -0700 (PDT)
Received: from mail-yx0-f172.google.com (mail-yx0-f172.google.com [209.85.213.172]) by ietfa.amsl.com (Postfix) with ESMTP id B5AA011E80D1 for <websec@ietf.org>; Mon, 9 Jul 2012 16:24:13 -0700 (PDT)
Received: by yenq13 with SMTP id q13so11681645yen.31 for <websec@ietf.org>; Mon, 09 Jul 2012 16:24:39 -0700 (PDT)
Received: by 10.236.183.227 with SMTP id q63mr48357631yhm.114.1341876279637; Mon, 09 Jul 2012 16:24:39 -0700 (PDT)
Received: from mail-ob0-f172.google.com (mail-ob0-f172.google.com [209.85.214.172]) by mx.google.com with ESMTPS id y66sm65654472yhi.10.2012.07.09.16.24.38 (version=SSLv3 cipher=OTHER); Mon, 09 Jul 2012 16:24:38 -0700 (PDT)
Received: by obbwc20 with SMTP id wc20so1281151obb.31 for <websec@ietf.org>; Mon, 09 Jul 2012 16:24:37 -0700 (PDT)
Received: by 10.60.13.201 with SMTP id j9mr42523018oec.51.1341876277348; Mon, 09 Jul 2012 16:24:37 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.182.226.5 with HTTP; Mon, 9 Jul 2012 16:24:07 -0700 (PDT)
In-Reply-To: <71595112-9084-47B8-BD2E-44381509536E@bbn.com>
References: <CC7E8027-2CCE-41B7-9244-1638C15830A5@bbn.com> <CAJE5ia-qAyM1v9JrKJaO6ORi48oVFfk9x13Pw48M8SnB746D9g@mail.gmail.com> <71595112-9084-47B8-BD2E-44381509536E@bbn.com>
From: Adam Barth <ietf@adambarth.com>
Date: Mon, 9 Jul 2012 16:24:07 -0700
Message-ID: <CAJE5ia_hM0J4QBYUcLKkei6bv+Pk4mGxWLhVtpi1S_D0tv=ezA@mail.gmail.com>
To: "Richard L. Barnes" <rbarnes@bbn.com>
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Cc: websec@ietf.org
Subject: Re: [websec] Content sniffing
X-BeenThere: websec@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Web Application Security Minus Authentication and Transport <websec.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/websec>, <mailto:websec-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/websec>
List-Post: <mailto:websec@ietf.org>
List-Help: <mailto:websec-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/websec>, <mailto:websec-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 09 Jul 2012 23:24:14 -0000

On Mon, Jul 9, 2012 at 4:19 PM, Richard L. Barnes <rbarnes@bbn.com> wrote:
> I haven't thought much about this, but a couple of thoughts:
>
> The binary prologue means that the document is not valid HTML, so in principle, it shouldn't be accepted as HTML.  It makes you wonder what other stuff you could put in there that the browser would stuff into the DOM without it being obvious on the wire, say, to a proxy.  I'm imagining things like encrypted / compressed Javascript code that could be unpacked by the more obviously HTML part of the page.

You don't have to imagine.  It's specified in HTML5.

> In a related vein, the "Text or Binary" section of draft-ietf-websec-mime-sniff says that nothing scriptable must come out of sniffing a binary blob.  Yet in this case, it produced "text/html", which is obviously scriptable.

The browser isn't sniffing HTML in this case.  The server sent a
Content-Type header with text/html.

Adam


> On Jul 9, 2012, at 5:05 PM, Adam Barth wrote:
>
>> Why is this sniffing gone awry?  Nothing bad seems to have happened in
>> this example.
>>
>> Adam
>>
>>
>> On Mon, Jul 9, 2012 at 1:55 PM, Richard L. Barnes <rbarnes@bbn.com> wrote:
>>> Related to draft-ietf-websec-mime-sniff, an example of sniffing gone awry:
>>> <http://lcamtuf.coredump.cx/squirrel/>
>>>
>>> It's a valid JPEG image that contains and HTML snippet in a comment segment.  As a result, when a browser loads the URL expecting an image, it renders the image content, and when it expects HTML, it skips the binary junk at the top and renders the HTML [*]. (In both cases, the server reports Content-Type text/html.)   What's even more startling is that Chrome helpfully adds the binary junk at the top as the first child of the <body> element in the parsed DOM!
>>>
>>> --Richard
>>>
>>>
>>> [*] At least in Chrome 20.0.1132.47
>>> _______________________________________________
>>> websec mailing list
>>> websec@ietf.org
>>> https://www.ietf.org/mailman/listinfo/websec
>