HTTP Request Smuggling
cyphersteve writes "Multiple vendors are vulnerable to a new class of attack named 'HTTP Request Smuggling' that revolves around piggybacking a HTTP request inside of another HTTP request, which could let a remote malicious user conduct cache poisoning, cross-site scripting, session hijacking, as well as bypassing web application firewall protection and other attacks. HTTP Request Smuggling works by taking advantage of the discrepancies in parsing when one or more HTTP devices are between the user and the web server. CERT has ranked this attack and the associated vulnerabilties found in multiple products as High Risk. The authors (Amit Klein, Steve Orrin, Ronen Heled, and Chaim Linhart) have published a whitepaper describing this technique in detail."
Now let's take packet A. Do an MD5 sum (or similar) on it. Send it to the end user. Have the end user's browser do a similar check on it and send it to the server. IF the server green flags it, then show the page.
This shouldn't become a speed problem on broadband machines because it'll only mean 2 or 3 times more packets (but you can always increase packet size).
Call the new standard something like HTTPS 2.0.
~Ilyanep
To get message, take amount of carrier pigeons at each stage mod 2. Then decode binary.
ISS steps in and claims that their products automagically figured this out, because they don't "use signatures" and that anyone who's a customer is automatically "protected." right.
-- http://www.criticalassets.com
Tried to do a copy and paste, but the lameness filter wont let me. DRM in force! ;)
I am a viral sig. Please copy me and help me spread. Thank you.
I noticed that 3 months ago.
I prefer the "u" in honour as it seems to be missing these days.
AC = No Karma Whoring
HTTP REQUEST SMUGGLING
CHAIM LINHART (chaiml@post.tau.ac.il)
AMIT KLEIN (aksecurity@hotpop.com)
RONEN HELED
AND STEVE ORRIN (sorrin@ix.netcom.com)
A whitepaper from Watchfire
TABLE OF CONTENTS
Abstract 1
Executive Summary 1
What is HTTP Request Smuggling? 2
What damage can HRS inflict? 2
Example #1: Web Cache Poisoning 4
Example #2: Firewall/IPS/IDS evasion 5
Example #3: Forward vs. backward HRS 7
Example #4: Request Hijacking 9
Example #5: Request Credential Hijacking 10
HRS techniques 10
Protecting your site against HRS 19
Squid 19
Check Point FW-1 19
Final note regarding solutions 19
About Watchfire 20
References 21
Copyright © 2005 Watchfire Corporation. All Rights Reserved. Watchfire, WebCPO, WebXM,
WebQA, Watchfire Enterprise Solution, WebXACT, Linkbot, Macrobot, Metabot, Bobby,
Sanctum, AppScan, the Sanctum Logo, the Bobby Logo and the Flame Logo are trademarks or
registered trademarks of Watchfire Corporation. GómezPro is a trademark of Gómez, Inc., used
under license. All other products, company names, and logos are trademarks or registered
trademarks of their respective owners.
Except as expressly agreed by Watchfire in writing, Watchfire makes no representation about the
suitability and/or accuracy of the information published in this whitepaper. In no event shall
Watchfire be liable for any direct, indirect, incidental, special or consequential damages, or
damages for loss of profits, revenue, data or use, incurred by you or any third party, arising from
your access to, or use of, the information published in this whitepaper, for a particular purpose.
www.watchfire.com
HTTP REQUEST SMUGGLING
© Copyright 2005. Watchfire Corporation. All Rights Reserved. 1
ABSTRACT
This document summarizes our work on HTTP Request Smuggling, a new attack technique that has
recently emerged. We'll describe this technique and explain when it can work and the damage it can do.
This paper assumes the reader is familiar with the basics of HTTP. If not, the reader is referred to the
HTTP/1.1 RFC [4].
EXECUTIVE SUMMARY
We describe a new web entity attack technique - "HTTP Request Smuggling." This attack technique, and
the derived attacks, are relevant to most web environments and are the result of an HTTP server or device's
failure to properly handle malformed inbound HTTP requests.
HTTP Request Smuggling works by taking advantage of the discrepancies in parsing when one or more
HTTP devices/entities (e.g. cache server, proxy server, web application firewall, etc.) are in the data flow
between the user and the web server. HTTP Request Smuggling enables various attacks - web cache
poisoning, session hijacking, cross-site scripting and most importantly, the ability to bypass web application
firewall protection. It sends multiple specially-crafted HTTP requests that cause the two attacked entities to
see two different sets of requests, allowing the hacker to smuggle a request to one device without the other
device being aware of it. In the web cache poisoning attack, this smuggled request will trick the cache
server into unintentionally associating a URL to another URL's page (content), and caching this content for
the URL. In the web application firewall attack, the smuggled request can be a worm (like Nimda or Code
Red) or buffer overflow attack targeting the web server. Finally, because HTTP Request Smuggling enables
the attacker to insert or sneak a request into the flow, it allows the attacker to manipulate the web server's
request/response sequencing which can allow for credential hijacking and other malicious outcomes.
HTTP REQUEST SMUGGLING
© Copyright 2005. Watchfire Corporation. All Rights Reserved. 2
WHAT IS HTTP REQUEST SMUGGLING?
HTTP Request Smuggling ("HRS") is a new hacking technique that targets HTTP devices. Indeed, whenever
HTTP requests originating from a client pass through
I posted it.. It took deleting all the "..." crap in the ToC to get it past the lameness filter.
The truth about Scientology, Xenu, and you: Operation Clambake
I like to use 'piggybacking' as well, it makes me sound technical but cool at the same time.
http://www.p45rant.net/boards/attachment.php?atta
If there is ANY communications path, it can be used for anything... If you have cooperating applications, anything that passes at least "a bit" can be subverted for another purpose. You could do Morse code using ICMP Echo Requests, with the packet size determining whether it's a dot or a dash... Whatever... Again, why is this particular technique news?
Folks, hiding one HTTP request inside another is not the same HTTP request hijacking technique that appeared in Doctor Dobbs journal some months ago... I can't recall the edition...
-- Por mais que eu ande no vale das trevas e da morte, meu PowerMac G4 Não Travará!!!
This exploit is interesting, and is related to a cultural issue: how do you handle malformed input?
There are two basic approached to this: either you reject it (the sound, security-concious way), or you attempt to make sense of it (the compatible way). The second solution allows your software to interface with badly-written external code, at the cost of interfacing with intentionally malformed requests like the exploit the describe.
The reason the exploit works is that different people have different methods for determining what the sender of the malformed packet really meant, and if two different interpretations are applied to the same packet you can use the resulting "confusion" to your advantage. Different recount results which depend on guessing "voter intent" from malformed ballots in Florida comes to mind.
It is unethical and immoral. Some HTTP requests even time-out and have died doing this! Also be aware that some vigilante border gateway protocols have sprung up in the south looking for smuggled HTTP requests. Also new federal legislation may require all web servers to validate the HTTP request's green packets before responding.
Yes, but if you use HTTP Request Snuggling you wont mind the extra packets.
Everybody likes snuggling.
Starsucks
Here is a link:p df
http://www.gatech-edu.org/HTTP-Request-Smuggling.
Scenario: Vulnerable web server for popular blogging site, compromised by this or other attack, RSS feed used to broadcast exploit against vulnerable IE 7.0 clients. predicted at www.threatchaos.com att he beginning of the year.
Due to bad handling of borderline html, some web servers will see extra requests that front end servers (cache, proxies) don't see. This is due http keepalive (so that more than one request can be processed in a stream) and malicious http headers. This seems to be implemented mostly by sending duplicate or invalid content length headers.
I'm sure that all of these problems will be quickly patched. All of these issues would be fixed by tighter HTTP parsing specifications. However, buggy software will always exist, and always be exploited.
This paper discusses potential exploitation of poor HTTP parsing in specific applications. Potential applications include cache poisoning and hijacking user credentials but it requires the victim to be behind a vulnerable proxy/firewall.
Why not just issue seperate advisories and inform the respective vendors? Seems to me like they bundled multiple flaws in multiple products so they could be creditied with discovering a new class of vulnerability.
http://cr.yp.to/publicfile.html, publicfiloe, is not mentioned.
http://stephan.sugarmotor.org
This will be PATRIOT ACT V (3 and 4 were allowed to be hidden from the public). It will be pushed by GWB and Tom Tancredo.
It's an interesting find, pretty clever, but according to the whitepaper, it doesn't apply to all web servers in general (you need to know the specifics of all the machines involved) so its not a general problem. As well, it will probably be patched soon, so that it won't work. Once one of the machines involved in the HTTP chaining is fixed then it appears that the entire exploit no longer works.
From TFA:
Conclusion: We have seen that there are many pairs (proxy/firewall servers and web servers) of vulnerable systems. Particularly, we demonstrated that the following pairs are vulnerable: PCCA o IIS/5.0 o Tomcat 5.0.19 (probably with Tomcat 4.1.x as well) Squid 2.5stable4 (Unix) and Squid 2.5stable5 for NT o IIS/5.0 o WebLogic 8.1 SP1 Apache 2.0.45 o IIS/5.0 o IS/6.0 o Apache 1.3.29 o Apache 2.0.45 o WebSphere 5.1 and 5.0 o WebLogic 8.1 SP1 o Oracle9iAS web server 9.0.2 o SunONE web server 6.1 SP4 ISA/2000 o IIS/5.0 o Tomcat 5.0.19 o Tomcat 4.1.24 o SunONE web server 6.1 SP4 DeleGate 8.9.2 o IIS/6.0 o Tomcat 5.0.19 o Tomcat 4.1.24 o SunONE web server 6.1 SP4 Oracle9iAS cache server 9.0.2 o WebLogic 8.1 SP1 SunONE proxy server 3.6 SP4 o Tomcat 5.0.19 o Tomcat 4.1.24 o SunONE web server 6.1 SP4 FW-1 Web Intelligence kernel 55W beta (the IIS 48K technique probably works with R55W) o IIS/5.0 This is a partial list - there are many pairs we did not test and there are likely many other web servers and cache servers we did not test for lack of hardware and software. Of course, there are probably many more similar techniques.
Yeah, really? I'd like to see a much broader list laid out, and preferably before it becomes another net disaster.
If this was strictly a Microsoft thing we'd be hearing cries for blood, or at least an app to check if your setup was vulnerable. Since it is much broader than that, if checking for this doesn't become part of a security toolkit, we may well wish it had.
Oh well. At least we got this much warning this much in advance. Anyone want to take bets on how long till some malware weasels make this a point and click thing in another script kiddie kit? My guess is before the security world makes a test app to check for it.
If my grammar and spelling are off, I am [distracted/tired/careless] (take your pick)
Why not just (a) be less trusting of Content-Length, and (b) reject malformed requests with two of them?
Apache already does this. Multiple content-length fire an error, as well as
requests using chunked transfer-encoding.
You're forced to trust Content-Length because it's the only way to know when
to stop reading. It's just as if you proposed to be less trusting on the length
field in an IP packet.
Willy
The world is full of hypotheticals...can someone actually point us to a working example of this alleged exploit? If not, I'll just file it away as "cool information with little practical impact on my daily life."
This is Slashdot, News for Nerds, not "your average bloke on the street".
Your post would make alot more sense if the article was mentioned on CNN.com or the like, but not here.
see here:
- Smuggling.pdf
http://mstauffer.homeunix.net/markus/HTTP-Request
Does anyone have any idea what the Popular Commercial Cache Appliance is? The PDF doesn't say and we have a few cache appliances at my office (intranet and internet). I'd like to know just vunerable we are to this type of thing.
Official Heretic from the "Church of Global Warming". Proven right thanks to whistle blowers. AGW = Flat Earth Theory
is this feature available only for windows? or is it platform independant?
This post was brought to you by WebScurity.com.
Enjoy the new freedoms of the internet you receive when you utilize the amazing potential of WebScurity products!
Do you have that over ftp? ;)
Analogies don't equal equalities, they are merely somewhat analogous.
I wrote my own web server 5 years ago.. faster than Apache, cheaper than others. Doesn't have this problem.
-Pan
I said no... but I missed and it came out yes.
Not that it really matters, but my karma is just spiffy. Aside from a few dings here and there, made up for by accepted submissions and moderated posts, It's probably 50, or within a few points of it, as that's what it was back when they took away the karma scoring..
The truth about Scientology, Xenu, and you: Operation Clambake
Bah, I'm a reseller who enjoys a product... is it so wrong to share it with people? I have no dog in this fight.
Good security is based upon reality and common sense. Common sense is a function of having common knowledge.
go shove your bullshit babble up your ass.
"artificial intelligence engine" that "maps business logic".
fucking wanker.
This guy isn't talking about anything remotely related to the article, which is discussing a very specific type of attack. How in hell is that insightful? It's just plain old -1 RTFA.
Can they not just patent the technique and then sue the pants off any hackers?
Use the connector (mod_jk) to let httpd handle the HTTP protocol and forward it to Tomcat (or Tomcat-embedding appservers such as JBoss)
When will HTTP Customs be introduced as a fix?
Post us a link then, if you think it's worth it :P
The AACS key is NOT 0xF606EEFD628B1CA427BEA93A9CA9773F
Go read the article. Apache, nor IIS is vulnerable on their own. The problem is interaction between proxy servers and webservers. Since yours cannot possibly act the same as all proxy servers, yours is just as vulnerable, though likely to a different subset of proxy servers than either Apache or IIS.
Very interesting... just curious, what is this URL? The WHOIS on this site and the 'official' gatech.edu webpage differ significantly, but the links on this page point to gatech.edu.
Is this some oddball splinter webpage, or what?
Everything they do has to be hyped up. It's the law or something.
lamefilter: # Please try to keep posts on topic. # Try to reply to other people's comments instead of starting new threads. # Read other people's messages before posting your own to avoid simply duplicating what has already been said. # Use a clear subject that describes what your message is about. # Offtopic, Inflammatory, Inappropriate, Illegal, or Offensive comments might be moderated. (You can read everything, even moderated posts, by adjusting your threshold on the User Preferences Page)
"Our interests are to see if we can't scale it up to something more exciting," he said.
It is a joke, read the first article ;)
As I read it, his server could be secure if it drops the HTTP connection whenever it receives a malformed request. Also, any server that doesn't support keep-alive is not going to be affected by this.
The fault here lies with broken HTTP implementations, not with the protocol or with interactions between compliant implementations. Taking just the first example from the paper, any implementation that receives 2 "Content-Length" headers should reject the request because it's an illegal format.
is exactly the same as by the multiple-header rule (RFC 2616 sec. 4.2), but Content-Length doesn't allow multiple values (ibid sec. 14.13). In this example, both the proxy and the webserver are out of spec and should (at a minimum) discard the blue-and-purple request, and should probably close the connection and ignore the red request was well, since the body of a POST cannot be of indeterminate size.google cache of the pdf http://64.233.187.104/search?q=cache:TWK7qyxXeYIJ: www.watchfire.com/resources/HTTP-Request-Smuggling .pdf+&hl=en