Vulnerability in HTTP.sys Could Allow Remote Code Execution
technet.microsoft.com
technet.microsoft.com
I am curious as to what the reasons are - what are the benefits of this that outweigh the huge risk (as demonstrated repeatedly by the various vulnerabilities) of running in HTTP code in the kernel? Only thing I can think of is they are trying to squeeze the last bit of performance / scalability but surely that could only mean that there are parts of the kernel (ctx switching overhead, threading scalability, page cache performance, etc.) that need to be fixed in order to not need these type of hacks in 2015?
(Not saying I agree or disagree, just saying that this isn't so much an ancient artifact as it is a fairly recent and purposeful addition.)
-- NT is missing sendfile()? Also syscalls are fast on x86_64, most stuff is dynamic now a days and serving static files straight from page cache is fast enough.
• Kernel-mode request queuing. Requests cause less overhead in context switching
-- This one is somewhat valid but given you can ctx switch pretty fast on modern CPUs it is not clear how big the gains are.
Yeah but there would be some gains - that's not deniable. Question is whether they are big enough to risk something like the vulnerability at hand.
They were in use (at least TransmitFile was) by IIS long before http.sys was conceived.
HTTP.sys obviously does a lot more, but especially back in the Windows 2000 days, the performance difference was substantial.
Anybody else have anything to share?
That's pretty scary
Does Remote PowerShell bind to HTTP.SYS or do its own thing?
Apparently yes; this is on Windows 7 and above:
http://www.mikeplate.com/2011/11/06/stop-http-sys-from-liste...
So those on Vista or below aren't affected unless they explicitly running IIS or something else that's using HTTP.sys; and I can confirm that nothing is listening on port 80 on my XP box (nor is HTTP.sys loaded.)
That's called Home Sharing IIRC
1. http://azure.microsoft.com/en-us/documentation/articles/clou... 2. http://azure.microsoft.com/en-us/documentation/articles/clou...
[0] http://en.wikipedia.org/wiki/Blaster_%28computer_worm%29
[1] http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2003-0352
Anyways I doubt MS would write "Mitigating factor: Not using IIS."
Also note, this does not just apply to IIS. It applies to the Windows kernel HTTP stack (?!), HTTP.SYS. Which is used by many things apart from IIS. And can even be listening when your app is not running (OS opens a socket on port 80, 443, whatever, runs it as SYSTEM (PID 4), then passes the HTTP messages off to your app if your app is up and connected.)
I was also being slightly sarcastic. I'd take the bet this is a memory safety issue, but there's a chance it isn't.
But since Microsoft (on purpose) didn't make a unique name and logo for it, the media didn't pick it up. They gave it an obscure name and made it part of a larger Windows update, where they also added a few other "security improvements", which the media actually reported on more than on the bug.
Some were calling it "WinShock" if you want to Google (or Bing) for it.
Haha! I don't think MS got that memo about having to name bugs and make logos.
It's so awesome when you move HTTP stacks into the kernel, where they rightly belong.