安全研究

安全漏洞
熊猫卫士2008 CPoint.sys内存破坏漏洞

发布日期:2008-03-08
更新日期:2008-03-10

受影响系统:
Panda Internet Security 2008
Panda Antivirus+Firewall 2008
描述:
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结构)。如果用特制的内存覆盖这些结构,就可以强制内核执行内存破坏,导致完全控制内核执行流。

<*来源:Tobias Klein
  
  链接:http://marc.info/?l=bugtraq&m=120501278808791&w=2
        http://www.pandasecurity.com/homeusers/support/card?id=41337&idIdioma=2&ref=ProdExp
        http://www.pandasecurity.com/homeusers/support/card?id=41231&idIdioma=2&ref=ProdExp
        http://secunia.com/advisories/29311/
*>

建议:
厂商补丁:

Panda
-----
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
http://www.pandasecurity.com/resources/sop/PAVF08/hft70801s1.exe
http://www.pandasecurity.com/resources/sop/Platinum2008/hfp120801s1.exe

浏览次数:2509
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障