On Mon, 23 Feb 2009, Roy T. Fielding wrote:
> On Feb 23, 2009, at 3:42 PM, Mark Nottingham wrote:
>
>> See:
>> http://www.kb.cert.org/vuls/id/435052
>>
>> From an HTTP perspective, there are a number of potential reactions;
>>
>> 1) intercepting proxies are bad; we told you so!
>>
>> 2) we should accommodate intercepting proxies in HTTPbis, because they're a
>> reality.
>>
>> 2a) we should note this type of attack in Security Considerations, and more
>> strongly recommend that clients send an absolute URI on the request-line,
>> even when not using a configured proxy.
>>
>> Just food for thought...
>
> 3) This report blames intercepting proxies for reading and acting
> upon the HTTP stream instead of blaming browsers for sending an
> HTTP message that contradicts its routing via TCP/IP. I would think
> that the fix is to plug the apparent (unconfirmed) security hole in
> the browsers that allows plug-ins to set the value of Host independent
> of the requested URI. What's up with that?
>
> Expecting an intercepting proxy to have access to the TCP/IP
> information (as believed by the client) and be able to compare it
> to the DNS records of the Host (as believed by the proxy) doesn't
> seem likely to work given what we know about DNS.
>
> Fixing the browser bug, OTOH, would work.
>From the CERT report, it wasn't clear to me that the vulnerability was
much larger with a subverted browser than it would be with a program which
simulates a browser and sends the out of sync host: values.
I think the additional exposure would be if the nasty site managed to
redirect the user to an intranet server (intercepting proxy uses an
internal DNS and resolves the intranet host name) which then engages in an
authentication dialog with the user who just happens to have been
subverted AND doesn't recognize the diversion to an unexpected dialog AND
has credentials for that intranet server. Even than while I'm willing,
for this dicussion, to stipulate that the poorly written browser allows
active content to set the host: value, I don't understand how the repeated
tweaking of the host value and URI is accomplished as the authentication
process occurs, etc. Pretty unlikely.
This whole attack vector can be blocked with proper protection of the
interception proxy so that it can't be used to connect to an internal
server it isn't supposed to. The CERT message pretty much covered all
the necessary steps. At most, we could add a security note that indicates
that if the host: value is used to route the proxied connection, the value
must be validated to insure it can only resolve to one of the IPs already
authorized for the invisible redirection.
Dave Morris