趋势科技Titanium Maximum Security 2011 tmtdi.sys驱动本地拒绝服务漏洞

受影响系统:

Trend Micro Titanium Maximum Security 2011 3.0.1303

描述:
Titanium Maximum Security使用云技术以自动化阻拦病毒和恶意软件。

Titanium Maximum Security所使用的tmtdi.sys内核驱动在处理IOCTL 0x220404时存在指针覆盖漏洞,本地用户可以通过运行恶意程序导致执行任意内核态代码。

\\.\tmtdi设备驱动的IoCtl处理器:  

.text:0001D3CC ; int __stdcall sub_1D3CC(PDEVICE_OBJECT DeviceObject, PIRP pIrp)  

.text:0001D3CC sub_1D3CC       proc near               ; DATA XREF: sub_1DD40+D0o  

.text:0001D3CC  

.text:0001D3CC var_4           = dword ptr -4  

.text:0001D3CC DeviceObject    = dword ptr  8  

.text:0001D3CC pIrp            = dword ptr  0Ch  

.text:0001D3CC  

.text:0001D3CC                 mov     edi, edi  

.text:0001D3CE                 push    ebp  

.text:0001D3CF                 mov     ebp, esp  

.text:0001D3D1                 push    ecx  

.text:0001D3D2                 mov     eax, [ebp+DeviceObject]  

.text:0001D3D5                 mov     eax, [eax+28h]  

.text:0001D3D8                 and     [ebp+var_4], 0  

.text:0001D3DC                 push    ebx  

.text:0001D3DD                 mov     ebx, [ebp+pIrp]  

.text:0001D3E0                 push    esi  

.text:0001D3E1                 mov     esi, ds:MmIsAddressValid  

.text:0001D3E7                 push    edi  

.text:0001D3E8                 mov     edi, [ebx+60h]  

.text:0001D3EB                 push    edi             ; VirtualAddress  

.text:0001D3EC                 mov     [ebp+pIrp], eax  

.text:0001D3EF                 call    esi ; MmIsAddressValid  

.text:0001D3F1                 test    al, al  

.text:0001D3F3                 jnz     short loc_1D403  

  

[..]  

  

.text:0001DAF3                 mov     eax, ecx  

.text:0001DAF5                 sub     eax, 220078h  

.text:0001DAFA                 jz      loc_1DC89  

.text:0001DB00                 sub     eax, 18h  

.text:0001DB03                 jz      loc_1DC51  

.text:0001DB09                 push    4  

.text:0001DB0B                 pop     edi  

.text:0001DB0C                 sub     eax, edi  

.text:0001DB0E                 jz      loc_1DC30  

.text:0001DB14                 sub     eax, 2Ch  

.text:0001DB17                 jz      loc_1DBF1  

.text:0001DB1D                 sub     eax, 14h  

.text:0001DB20                 jz      loc_1DBBD  

.text:0001DB26                 sub     eax, 330h  

.text:0001DB2B                 jz      short loc_1DB7B  

  

[..]  

  

.text:0001DB7B loc_1DB7B:                              ; CODE XREF: sub_1D3CC+75Fj  

.text:0001DB7B                 test    dword_2289C, 10000000h  

.text:0001DB85                 mov     edi, [ebx+0Ch]  

.text:0001DB88                 jz      short loc_1DB95  

.text:0001DB8A                 push    offset aIoctrl_bind_cf ; "[IOCTRL_BIND_CFW]\n"

.text:0001DB8F                 call    DbgPrint  

.text:0001DB94                 pop     ecx  

.text:0001DB95                 push    edi             ; VirtualAddress  

.text:0001DB96                 call    esi ; MmIsAddressValid  

.text:0001DB98                 test    al, al  

.text:0001DB9A                 jz      loc_1DD19  

.text:0001DBA0                 cmp     [ebp+DeviceObject], 8 ; check for length  

.text:0001DBA4                 jb      loc_1DD19  

.text:0001DBAA                 mov     eax, [edi] ; eax – first DWORD from our buffer  

.text:0001DBAC                 mov     dword_228B4, eax ; pointer overwrite  

这个地址包含有解释为函数指针的值,sub_10CD4函数将这个值用作了函数指针。  
  

.text:00010CD4 sub_10CD4       proc near               ; CODE XREF: sub_19234+480p  

.text:00010CD4                                         ; sub_197FC+1D5p …  

.text:00010CD4                 mov     edi, edi  

.text:00010CD6                 push    ebp  

.text:00010CD7                 mov     ebp, esp  

.text:00010CD9                 mov     ecx, dword_228B4 ; copy to ecx  

.text:00010CDF                 xor     eax, eax  

.text:00010CE1                 test    ecx, ecx  

.text:00010CE3                 jz      short loc_10CE8 ; is NULL pointer  

.text:00010CE5                 pop     ebp  

.text:00010CE6                 jmp     ecx  ; direct jump to our shellcode  

.text:00010CE8 ; —————————————————————————  

.text:00010CE8  

.text:00010CE8 loc_10CE8:                              ; CODE XREF: sub_10CD4+Fj  

.text:00010CE8                 pop     ebp  

.text:00010CE9                 retn    4  

.text:00010CE9 sub_10CD4       endp  

可通过调用函数绑定调用sub_10CD4函数。

<*来源:Nikita Tarakanov
  
  链接:
http://www.exploit-db.com/exploits/15376/
*>

测试方法:
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

 

http://www.exploit-db.com/download/15376

建议:

厂商补丁:

Trend Micro
———–
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:

http://www.antivirus.com/

发表评论?

0 条评论。

发表评论