萬盛學電腦網

 萬盛學電腦網 >> 殺毒軟件 >> 熊貓衛士 >> 熊貓衛士2008 CPoint.sys發現內存破壞漏洞

熊貓衛士2008 CPoint.sys發現內存破壞漏洞

受影響系統:

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結構)。如果用特制的內存覆蓋這些結構,就可以強制內核執行內存破壞,導致完全控制內核執行流。

copyright © 萬盛學電腦網 all rights reserved