В последней порции патчей от MS вышло достаточно интересное исправление MS12-004 (MIDI File Parsing Remote Buffer Overflow) для MS Media Player, которое закрывает уязвимость с возможностью удаленного исполнения кода. После прочтения бюллетеня сразу стало понятно, что это довольно действенный способ установки вредоносных программ и в ближайшем будущем этот вектор распространения может быть активно задействован. Но давайте вначале поговорим о самой уязвимости, а она, на мой взгляд, довольно интересна. Этой уязвимости подвержены все существующие ОС от MS.
MIDI Header Chunk Format
MIDI Track Chunk Format
Уязвимость содержится в библиотеке winmm.dll, которая реализует все необходимое для обработки MIDI файлов. Кстати сам MIDI (Musical Instrument Digital Interface) формат уходит своими корнями в далекий 1982 год. Неплохое описание самого формата есть здесь. Ключевым моментом в этой уязвимости является сам формат MIDI, а точнее две структуры MThd и MTrk, которые заполняются в памяти.
Offset | Length | Type | Description | Value |
0x00 | 4 | char[4] | chunk ID | "MThd" (0x4D546864) |
0x04 | 4 | dword | chunk size | 6 (0x00000006) |
0x08 | 2 | word | format type | 0 - 2 |
0x10 | 2 | word | number of tracks | 1 - 65,535 |
0x12 | 2 | word | time division | see following text |
Offset | Length | Type | Description | Value |
0x00 | 4 | char[4] | chunk ID | "MTrk" (0x4D54726B) |
0x04 | 4 | dword | chunk size | see following text |
0x08 |
В результате уязвимости и специально созданного MIDI-файла, можно заставить выйти заграницы выделенного буфера (0x400) в куче. Который выделяется функцией WINMM!winmmAlloc() в процедуре WINMM!mseOpen() для обработки переданного MIDI-файла.
В итоге для обработки этого буфера вызывается функция WINMM!midiOutPlayNextPolyEvent() в которой собственно и допущена логическая ошибка приводящая к выполнению произвольного кода. Вероятнее всего уязвимость была найдена при помощи фаззинга соответствующего формата. Кому нужно более подробное и вдумчивое описание уязвимости, советую обратить внимание на этот блогпост от Vupen.
На прошлой неделе мне на глаза попался эксплойт JS/Exploit.CVE-2012-0003.A, использующий эту узявимость (Win32/Exploit.CVE-2012-0003.A) для установки троянца из семейства Win32/CsNowDown.C:
При помощи JavaScript происходит обращение к соответствующему ActiveX интерфейсу id="midi1" classid="clsid:22d6f312-b0f6-11d0-94ab-0080c74c7e95" и передачи ему вредоносного MIDI файла.
Способ достаточно действенный для атаки на пользователей IE и я думаю в ближайшем времени BlackHole "порадует" нас своим обновлением. Тем более эксплойт уже был представлен публично в составе Metasploit.
Update:
Еще один экземпляр в дикой природе
"Вероятнее всего уязвимость была найдена при помощи фаззинга соответствующего формата."
ОтветитьУдалитьВозможно, хотя эта уязвимость может быть найдена и обычным поиском по сорцам nt4 :)
Согласен, но это не спортивно же =)
ОтветитьУдалитьА как разумно защищаться?
ОтветитьУдалитьВ данном случае ставьте вовремя обновления, все уже закрыто ;)
Удалить