Windows System Exploit
megafrock.com
megafrock.com
there sadly is no 'stack backtrace'. it looks like he's managed to send some message to csrss.exe that caused it to crash with an invalid memory operation.
this is bad, it might even be exploitable. even though the exploit would be in csrss, which is not kernel mode, it's still extremely important and trusted. also, untrusted low-user code could make this call to privilege escalate.
it's worth noting that thought the author states " I stumbled accross the bug inadvertently while working on something totally unrelated to security, and decided to publish my findings so that this can be fixed by Microsoft.", microsoft actually has a security team that can be found here: http://technet.microsoft.com/en-us/security/ff852094.aspx (google for "microsoft report security bug")
the bugs you report to them remain confidential until they are fixed. this way, potentially bad exploit code isn't floating around the internet for some indeterminate amount of time. like this!
a trouble here is that the original fault is in user-mode csrss. you cannot use a user-mode debugger to debug csrss, so, to debug it you must use a kernel debugger. the process is involved. it is documented by microsoft though...
another trouble is that it seems that, at least on my systems, the ability to create a full dump of memory from the faulting process has been removed in w7. all you can do now is dump kernel mode memory, which would not include the needed information...
"Enabling the kernel debugger requires administrative privileges, so it's not like unprivileged users can force a system halt on their own".
Given all of this, it's not really a surprise that he's not clear on responsible disclosure policies (this doesn't really violate 'full disclosure policies' - he's fully disclosing it, after all!). It sounds like he was just playing around with things, found a way to crash his own machine by accident, and decided to post it online.
I also note that the code is incomplete, and looks reasonably straightforward and correct from casual inspection. I wonder if the real cause is elsewhere?
Also, the code is complete: check the tarball listed at the end of the page.
Well he kinda marked it down like he was.. talking about compiling an exe and all to crash any Vista/7 in 30 secs.
Then again; every 12 months or so the debate regarding full/responsible/no disclosure flares up again in the security-/IT-industry after another public outcry regarding one specific bug, company or patch. In the end nothing is resolved and we still continue to rely on gentleman agreements.
ChildEBP RetAddr
8942ec9c 82b1d2a1 nt!KeBugCheckEx+0x1e
8942ecc0 82a9ae5a nt!PspCatchCriticalBreak+0x71
8942ecf0 82a9ad9d nt!PspTerminateAllThreads+0x2d
8942ed24 8287b8fa nt!NtTerminateProcess+0x1a2
8942ed24 77b87094 nt!KiFastCallEntry+0x12a
00f8f260 77b868d4 ntdll!KiFastSystemCallRet
00f8f264 75d3301f ntdll!ZwTerminateProcess+0xc
00f8f2a4 75d34d7c CSRSRV!CsrUnhandledExceptionFilter+0xcb
00f8f2ac 75d36f48 CSRSRV!CsrApiRequestThread+0x3e2
00f8f2c0 75d36cde CSRSRV!_EH4_CallFilterFunc+0x12
00f8f2e8 77b87199 CSRSRV!_except_handler4+0x8e
00f8f30c 77b8716b ntdll!ExecuteHandler2+0x26
00f8f330 77b5f98f ntdll!ExecuteHandler+0x24
00f8f3bc 77b86ff7 ntdll!RtlDispatchException+0x127
00f8f3bc 77b92cc7 ntdll!KiUserExceptionDispatcher+0xf
00f8f708 77b92c78 ntdll!RtlpLowFragHeapFree+0x31
00f8f720 75c6b349 ntdll!RtlFreeHeap+0x105
00f8f734 75c72ce2 sxs!operator delete+0x1c
00f8f740 75c724f6 sxs!RawStack::~RawStack+0x12
00f8f74c 75c72484 sxs!XMLParser::~XMLParser+0x68
00f8f758 75c72e7c sxs!XMLParser::`scalar deleting destructor'+0xd
00f8f76c 75c686f3 sxs!_unknown<IXMLParser,&IID_IXMLParser>::Release+0x27
00f8f77c 75c73e1f sxs!CSmartRef<IXMLParser>::~CSmartRef<IXMLParser>+0x1b
00f8f7fc 75c74a37 sxs!SxspIncorporateAssembly+0x5db
00f8f83c 75c78001 sxs!SxspIncorporateAssembly+0xb8
00f8f874 75c6a944 sxs!SxspCloseManifestGraph+0x7c
00f8f928 75ce28c7 sxs!SxsGenerateActivationContext+0x48f
00f8fa90 75ce1ad3 sxssrv!BaseSrvSxsCreateActivationContextFromStruct+0x490
00f8fac8 75d34d65 sxssrv!BaseSrvSxsCreateActivationContextFromMessage+0xdb
00f8fc40 77b45e7a CSRSRV!CsrApiRequestThread+0x3cb
00f8fc80 77ba374e ntdll!__RtlUserThreadStart+0x28
00f8fc98 00000000 ntdll!_RtlUserThreadStart+0x1bIf you dump it online way more people start looking at it. They might be able to turn it into a reliable exploit leaving you, your customers and your servers at risk.
But the last thing HN needs is another debate on the pro's and cons of full disclosure; that's been done to death in the past decade all over the web :)
Given you aren't going to get a reward either way, why not do the right thing?
Frankly, I can't believe I need to discuss the morality of this. Is it not obvious?
And yes yes, I realise this is probably a case of Hanlon's Razor, not a moral failing, but justifying it on the grounds of there being no reward is crazy.
What you're calling "the right thing" isn't zero cost. It takes a fair bit of time (spaced out over a period of months, by the way, so it's not a fire and forget it report) to report a vulnerability to microsoft and follow up with their security team. More so if your vuln is at all interesting or complex. You may have to write PoCs. Your vulnerability will be patched in 4-6 months (not exaggerating, although this will obviously be quicker if it's made the news somehow), and you'll get a minute credit in their patch tuesday notes.
So no, the morality of this is not obvious. Where is my moral obligation to effectively do charity work for a megacorp that can't be bothered to keep up with industry standards in security?
As it stands I don't think there is much harm done because it's a local vulnerability, crashing a user-mode process. Annoying, maybe, but my graphics driver has a far worse track record as far as bluescreens are concerned.
You could go to microsoft.com and type "report a security vulnerability" into the search box. Then click the first result.
If you google for "microsoft report security vulnerability" the first page you get is this: http://technet.microsoft.com/en-us/security/ff852094.aspx. Doesn't get much clearer than that in my opinion.
Did you use the makefile to build it? I'm thinking that those specific compile and link flags are key to the triggering condition.
I've gotten it to crash at least three or four times on several windows 7 boxes of wildly differing configurations. No confirmed trials on a windows eight box, the bug may have been fixed there.
Programmer's what?