Cisco Unified Communications Manager(CUCM,之前被称为CallManager)是Cisco IP电话解决方案中的呼叫处理组件。 Cisco Unified Communications Manager包含的CTL Provider服务(CTLProvider.exe)存在设计缺陷,远程攻击者可以利用漏洞进行基于堆的缓冲区溢出攻击,可能以应用程序进程权限执行任意指令。 CTLProvider.exe服务绑定在TCP 2444端口,服务通过SSL加密传送进行操作,存在一个逻辑错误,接收到数据后进行堆分配可造成覆盖后续的堆块结构,导致任意代码执行。 在接收到套接字数据过程中存在循环,初始化缓冲区分配0x19000字节: .text:00406077 191A8 68+ push 19000h ; size_t .text:0040607C 191AC FF+ call ds:__imp_malloc .text:00406082 191AC 83+ add esp, 10h .text:00406085 1919C 89+ mov [edi+14h], eax .text:00406088 1919C 85+ test eax, eax .text:0040608A 1919C 0F+ jz loc_406238 分配数据在0x19000中读取,如果超过0X4000数据字节遗留在套接字中,就会看到下面的循环: .text:004060A5 191AC FF+ push dword ptr [ebp-14h] ; size_t .text:004060A8 191B0 8D+ lea eax, [ebp-1919Ch] .text:004060AE 191B0 50 push eax ; void * .text:004060AF 191B4 8B+ mov eax, [edi+14h] .text:004060B2 191B4 03+ add eax, [ebp-1Ch] .text:004060B5 191B4 50 push eax ; void * .text:004060B6 191B8 E8+ call memcpy .text:004060B6 191B8 2F+ .text:004060BB 191B8 B8+...
Cisco Unified Communications Manager(CUCM,之前被称为CallManager)是Cisco IP电话解决方案中的呼叫处理组件。 Cisco Unified Communications Manager包含的CTL Provider服务(CTLProvider.exe)存在设计缺陷,远程攻击者可以利用漏洞进行基于堆的缓冲区溢出攻击,可能以应用程序进程权限执行任意指令。 CTLProvider.exe服务绑定在TCP 2444端口,服务通过SSL加密传送进行操作,存在一个逻辑错误,接收到数据后进行堆分配可造成覆盖后续的堆块结构,导致任意代码执行。 在接收到套接字数据过程中存在循环,初始化缓冲区分配0x19000字节: .text:00406077 191A8 68+ push 19000h ; size_t .text:0040607C 191AC FF+ call ds:__imp_malloc .text:00406082 191AC 83+ add esp, 10h .text:00406085 1919C 89+ mov [edi+14h], eax .text:00406088 1919C 85+ test eax, eax .text:0040608A 1919C 0F+ jz loc_406238 分配数据在0x19000中读取,如果超过0X4000数据字节遗留在套接字中,就会看到下面的循环: .text:004060A5 191AC FF+ push dword ptr [ebp-14h] ; size_t .text:004060A8 191B0 8D+ lea eax, [ebp-1919Ch] .text:004060AE 191B0 50 push eax ; void * .text:004060AF 191B4 8B+ mov eax, [edi+14h] .text:004060B2 191B4 03+ add eax, [ebp-1Ch] .text:004060B5 191B4 50 push eax ; void * .text:004060B6 191B8 E8+ call memcpy .text:004060B6 191B8 2F+ .text:004060BB 191B8 B8+ mov eax, 16384 .text:004060C0 191B8 83+ add esp, 1Ch .text:004060C3 1919C 39+ cmp [ebp-14h], eax .text:004060C6 1919C 75+ jnz short loc_4060F8 .text:004060C8 1919C 50 push eax ; int .text:004060C9 191A0 68+ push offset str__ErrDExceeds16k ; 'err %d exceeds 16K' .text:004060CE 191A4 8D+ lea eax, [ebp-88h] .text:004060D4 191A4 68+ push 80000h ; int .text:004060D9 191A8 50 push eax ; int .text:004060DA 191AC E8+ call log_message .text:004060DA 191AC B7+ .text:004060DF 191AC 83+ add esp, 10h .text:004060E2 1919C 81+ add dword ptr [ebp-1Ch], 4000h .text:004060E9 1919C 68+ push offset str__MaybeThereIsMoreData__readAgain ; "Maybe there is more data..Read again" .text:004060EE 191A0 68+ push 10000h .text:004060F3 191A4 E9+ jmp loc_405FFF 这会持续到堆块被用户控制的数据覆盖,最后导致覆盖任意内存而执行任意代码。 Cisco Unified Communications Manager 4.3 Cisco Unified Communications Manager 4.2(3)sr.2 Cisco Unified Communications Manager 4.2 (3)SR2b Cisco Unified CallManager 4.1(3)sr5 Cisco Unified CallManager 4.1(3)SR4 Cisco Unified CallManager 4.1 (3)SR5b Cisco Unified CallManager 4.1 Cisco Unified CallManager 4.0 可参考如下安全公告获得补丁信息: <a href=http://www.cisco.com/warp/public/707/cisco-sa-20080116-cucmctl.shtml target=_blank>http://www.cisco.com/warp/public/707/cisco-sa-20080116-cucmctl.shtml</a>