четверг, 17 февраля 2011 г.

MS Windows SMB "mrxsmb.sys" Remote Heap Overflow

Вчера появился CVE-2011-0654 на уязвимость в переполнении кучи в процессе обработке специально подготовленных пакетов по протоколу Windows BROWSER, который работает поверх SMB. PoC несколькими днями раньше и уже произвел резонанс в определенных кругах. Виной всему функция BowserWriteErrorLogEntry() из mrxsmb.sys в которой собственно и происходит страшное:


mrxsmb!BowserWriteErrorLogEntry+0x174:
f64d815a f3a5            rep movs dword ptr es:[edi],dword ptr [esi]

STACK_TEXT:  
f78c27b0 80825b5b 00000003 e168a000 00000000 nt!RtlpBreakWithStatusInstruction
f78c27fc 80826a4f 00000003 c070b450 8659fdb0 nt!KiBugCheckDebugBreak+0x19
f78c2b94 80826de7 00000050 e168a000 00000000 nt!KeBugCheck2+0x5d1
f78c2bb4 8085a533 00000050 e168a000 00000000 nt!KeBugCheckEx+0x1b
f78c2c28 808868d0 00000000 e168a000 00000000 nt!MmAccessFault+0xa91
f78c2c28 f64d815a 00000000 e168a000 00000000 nt!KiTrap0E+0xd8
f78c2ccc f64d8ddc 40001f5b 00000000 f78c2cfc mrxsmb!BowserWriteErrorLogEntry+0x174
f78c2d6c f649de02 85292008 8659fdb0 808a76c0 mrxsmb!HandleElectionWorker+0x2dc
f78c2d80 8087ade9 00000000 00000000 8659fdb0 mrxsmb!BowserCriticalThreadWorker+0x32
f78c2dac 809418f4 00000000 00000000 00000000 nt!ExpWorkerThread+0xeb
f78c2ddc 80887f7a 8087acfe 00000000 00000000 nt!PspSystemThreadStartup+0x2e
00000000 00000000 00000000 00000000 00000000 nt!KiThreadStartup+0x16
На самом деле все банально:

if ( Length > 0 )  
    RtlCopyMemory(StringOffset, InsertionString, Length*sizeof(WCHAR));  
Vupen подтвердила работу уязвимости для Win Server 2003 SP2 и WinXP SP3, а MS утверждает, что в принципе этой уязвимости подвержены все версии винды, но ничего страшного сделать с ними нельзя кроме DoS.

Сплойт в составе Metasploit