Macrovision的Safedisc是目前最常用在商业数据光盘上的防拷机制。 Safedisc的secdrv.sys实现上存在漏洞,本地攻击者可能利用此漏洞控制系统。 Safedisc所提供的secdrv.sys驱动中的以下代码段: .text:00015E2C cmp [ebp+var_10], 0CA002813h .text:00015E33 jz short loc_15E69 IOCTL为METHOD_NEITHER,该驱动没有正确地处理这个方式: .text:00015ED9 call dword ptr [eax+10h] ; Internal Dispatcher .text:00015EDC mov [ebp+var_1C], eax .text:00015EDF cmp [ebp+var_1C], 0Ah .text:00015EE3 jz short loc_15EFC .text:00015EE5 mov eax, [ebp+arg_4] .text:00015EE8 mov dword ptr [eax], 0C0000001h .text:00015EEE mov eax, [ebp+arg_4] .text:00015EF1 and dword ptr [eax+4], 0 .text:00015EF5 mov eax, 0C0000001h .text:00015EFA jmp short loc_15F21 .text:00015EFC ; --------------------------------------------------------------------------- .text:00015EFC .text:00015EFC loc_15EFC: ; CODE XREF: sub_15E12+D1j .text:00015EFC mov ecx, [ebp+var_4] .text:00015EFF mov esi, [ebp+var_C] .text:00015F02 mov eax, [ebp+arg_0] .text:00015F05 mov edi, [eax+3Ch] ; Output Buffer (Irp->UserBuffer) .text:00015F08 mov eax,...
Macrovision的Safedisc是目前最常用在商业数据光盘上的防拷机制。 Safedisc的secdrv.sys实现上存在漏洞,本地攻击者可能利用此漏洞控制系统。 Safedisc所提供的secdrv.sys驱动中的以下代码段: .text:00015E2C cmp [ebp+var_10], 0CA002813h .text:00015E33 jz short loc_15E69 IOCTL为METHOD_NEITHER,该驱动没有正确地处理这个方式: .text:00015ED9 call dword ptr [eax+10h] ; Internal Dispatcher .text:00015EDC mov [ebp+var_1C], eax .text:00015EDF cmp [ebp+var_1C], 0Ah .text:00015EE3 jz short loc_15EFC .text:00015EE5 mov eax, [ebp+arg_4] .text:00015EE8 mov dword ptr [eax], 0C0000001h .text:00015EEE mov eax, [ebp+arg_4] .text:00015EF1 and dword ptr [eax+4], 0 .text:00015EF5 mov eax, 0C0000001h .text:00015EFA jmp short loc_15F21 .text:00015EFC ; --------------------------------------------------------------------------- .text:00015EFC .text:00015EFC loc_15EFC: ; CODE XREF: sub_15E12+D1j .text:00015EFC mov ecx, [ebp+var_4] .text:00015EFF mov esi, [ebp+var_C] .text:00015F02 mov eax, [ebp+arg_0] .text:00015F05 mov edi, [eax+3Ch] ; Output Buffer (Irp->UserBuffer) .text:00015F08 mov eax, ecx ; Inline memcpy .text:00015F0A shr ecx, 2 .text:00015F0D rep movsd .text:00015F0F mov ecx, eax .text:00015F11 and ecx, 3 .text:00015F14 rep movsb 没有正确地检查用户提供的缓冲区便将输入缓冲区的前4个DWORD拷贝到了输出缓冲区,因此可以覆盖任意地址,甚至内核地址。利用这个漏洞的限制是InputBuffer必须为固定的值。本地攻击者可以利用这个漏洞在Windows平台上获得系统级权限。