BUGTRAQ ID: 28150 熊猫卫士是熊猫系列杀毒软件,支持对多种文件格式进行病毒分析。 多个熊猫系列杀毒软件所捆绑的cpoint.sys内核驱动中处理IOCTL请求的代码存在漏洞,本地攻击者可能利用此漏洞提升权限。 该驱动的0xba002848 IOCTL调用未经充分验证便接受了用户提供的输入,导致越界写入内核内存。 cpoint.sys的反汇编(Windows Vista 32位版): [...] .text:00012633 loc_12633: .text:00012633 mov edx, 0BA002848h <-- (1) .text:00012638 cmp ecx, edx .text:0001263A ja loc_12946 [...] .text:00012640 jz loc_128BE [...] .text:000128BE loc_128BE: .text:000128BE cmp [ebp+IOCTL_INPUT_SIZE], 1008h <-- (2) .text:000128C5 jb loc_12A7D [...] .text:000128CB mov esi, [ebp+IOCTL_INPUT_DATA] <-- (3) .text:000128CE cmp dword ptr [esi], 3F256B9Ah <-- (4) .text:000128D4 jnz loc_12A7D [...] .text:000128FF xor eax, eax .text:00012901 cmp [esi+8], eax <-- (5) .text:00012904 jbe short loc_1291B [...] (1) 有漏洞的IOCTL调用 (2) IOCTL输入大小检查 (3) 用户提供的数据拷贝到了esi (4) + (5) 次要的输入数据检查 从这时其有两条不同的漏洞代码路径,如下所述: 漏洞代码路径1: [...] .text:00012906 lea ecx, [esi+0Ch] <-- (6) [...] .text:00012909 loc_12909: .text:00012909 mov edx, [ecx] <-- (7)...
BUGTRAQ ID: 28150 熊猫卫士是熊猫系列杀毒软件,支持对多种文件格式进行病毒分析。 多个熊猫系列杀毒软件所捆绑的cpoint.sys内核驱动中处理IOCTL请求的代码存在漏洞,本地攻击者可能利用此漏洞提升权限。 该驱动的0xba002848 IOCTL调用未经充分验证便接受了用户提供的输入,导致越界写入内核内存。 cpoint.sys的反汇编(Windows Vista 32位版): [...] .text:00012633 loc_12633: .text:00012633 mov edx, 0BA002848h <-- (1) .text:00012638 cmp ecx, edx .text:0001263A ja loc_12946 [...] .text:00012640 jz loc_128BE [...] .text:000128BE loc_128BE: .text:000128BE cmp [ebp+IOCTL_INPUT_SIZE], 1008h <-- (2) .text:000128C5 jb loc_12A7D [...] .text:000128CB mov esi, [ebp+IOCTL_INPUT_DATA] <-- (3) .text:000128CE cmp dword ptr [esi], 3F256B9Ah <-- (4) .text:000128D4 jnz loc_12A7D [...] .text:000128FF xor eax, eax .text:00012901 cmp [esi+8], eax <-- (5) .text:00012904 jbe short loc_1291B [...] (1) 有漏洞的IOCTL调用 (2) IOCTL输入大小检查 (3) 用户提供的数据拷贝到了esi (4) + (5) 次要的输入数据检查 从这时其有两条不同的漏洞代码路径,如下所述: 漏洞代码路径1: [...] .text:00012906 lea ecx, [esi+0Ch] <-- (6) [...] .text:00012909 loc_12909: .text:00012909 mov edx, [ecx] <-- (7) .text:0001290B mov OVERWRITTEN_DATA[eax*4], edx <-- (8) .text:00012912 inc eax .text:00012913 add ecx, 4 .text:00012916 cmp eax, [esi+8] <-- (9) .text:00012919 jb short loc_12909 [...] (6) 一些用户控制的数据拷贝到了ecx (7) 用户控制数据拷贝到了edx (8) 在OVERWRITTEN_DATA内存位置拷贝用户控制数据 (9) 用户可控拷贝数据大小 这可能导致越界写入内核内存。 漏洞代码路径2: [...] .text:0001291B loc_1291B: .text:0001291B xor eax, eax .text:0001291D cmp [esi+10Ch], eax <-- (10) .text:00012923 jbe loc_129B4 [...] .text:00012929 lea ecx, [esi+110h] <-- (11) [...] .text:0001292F loc_1292F: .text:0001292F mov edx, [ecx] <-- (12) .text:00012931 mov OVERWRITTEN_DATA2[eax*4], edx <-- (13) .text:00012938 inc eax .text:00012939 add ecx, 4 .text:0001293C cmp eax, [esi+10Ch] <-- (14) .text:00012942 jb short loc_1292F [...] (10) 用户控制数据的次要检查 (11) 一些用户控制的数据拷贝到了ecx (12) 用户控制数据拷贝到了edx (13) 在OVERWRITTEN_DATA2内存位置拷贝用户控制的数据 (14) 用户可控拷贝数据的大小 这可能导致越界写入内核内存。 上述两种情况都可以将任意数量的用户控制数据写入到内核内存。由于所覆盖的数据属于cpoint.sys内核驱动的数据部分,因此可以控制临近的数据结构(如某些KEVENT结构)。如果用特制的内存覆盖这些结构,就可以强制内核执行内存破坏,导致完全控制内核执行流。 Panda Internet Security 2008 Panda Antivirus+Firewall 2008 Panda ----- 目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载: <a href=http://www.pandasecurity.com/resources/sop/PAVF08/hft70801s1.exe target=_blank>http://www.pandasecurity.com/resources/sop/PAVF08/hft70801s1.exe</a> <a href=http://www.pandasecurity.com/resources/sop/Platinum2008/hfp120801s1.exe target=_blank>http://www.pandasecurity.com/resources/sop/Platinum2008/hfp120801s1.exe</a>