Closed Bug 303672 Opened 19 years ago Closed 19 years ago

XmlHttp can be tricked into requested pages from other servers if a 'transparent' proxy exists

Categories

(SeaMonkey :: Security, defect)

x86
All
defect
Not set
normal

Tracking

(Not tracked)

RESOLVED DUPLICATE of bug 302263

People

(Reporter: swhite, Assigned: dveditz)

References

()

Details

(Whiteboard: [sg:dupe 302263])

User-Agent:       Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20050716 Firefox/1.0.6
Build Identifier: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20050716 Firefox/1.0.6

If web requests from a client computer are forced through a 'transparent' proxy
then it is possible to trick mozilla's XmlHttp component to request pages from
any server via the inclusion of a 'Host' header in the request.  Such proxies
are not uncommon, and it appears that this exploit does not depend on the
particular proxy employed (I have tested it with both the Squid based proxy in
IpCop and NTL's proxy, which I think is a NetApp NetCache appliance).

If the 'Host' header exists the proxies appear to use this in preference to the
IP address that is the real destination of the request.  It could be argued that
this is a bug in the web proxy in question, but I think the browser should
attempt to make it harder to exploit this issue.  I have been unable to carry
out the exploit under IE6 on Windows XP SP2 with all updates applied, though I
have managed older IE6 installs - so it looks like this may be something that
Microsoft have already addressed.  I have not yet investigated the impact of
this on Java (rather than JavaScript) code, as Java applets are also allowed to
make web requests - though with the same limitation that they should only be
made to the server from which the applet came.

Reproducible: Always

Steps to Reproduce:
1. Find a computer behind a transparent web proxy.  Many ISPs (such as NTL in
the UK) force requests though a web proxy.  IpCop can be configured to force all
requests from machines on the local network through its web proxy.
2. Go to http://trillian.randomstuff.org.uk/~stephen/badxmlhttp.html

Actual Results:  
The javascript will sucessfully request the contents of the 'news.bbc.co.uk'
site, which is not something JavaScript could be allowed to do.  There are many
potential privacy, phishing, cross site scripting and related exploits that I
think could be made easier or possible through such an ability.

Expected Results:  
Either reported a security error or ignored the request to add a 'Host' header
to the web request.

Tested under Firefox 1.0.6 on Windows and Linux, plus a few previous versions of
Firefox and of the Mozilla application suite.
In a trunk build I get:

Error: uncaught exception: [Exception... "Component returned failure code:
0x80070057 (NS_ERROR_ILLEGAL_VALUE) [nsIXMLHttpRequest.setRequestHeader]" 
nsresult: "0x80070057 (NS_ERROR_ILLEGAL_VALUE)"  location: "JS frame ::
http://trillian.randomstuff.org.uk/~stephen/badxmlhttp.html :: <TOP_LEVEL> ::
line 25"  data: no]

*** This bug has been marked as a duplicate of 302263 ***
Status: UNCONFIRMED → RESOLVED
Closed: 19 years ago
Resolution: --- → DUPLICATE
Whiteboard: [sg:dupe 302263]
Group: security
You need to log in before you can comment on or make changes to this bug.