分类 技术分享 下的文章
时隔六个月,MS15-124 FIXED
我之前报告的(http://www.nul.pw/2015/06/03/90.html)IE10的漏洞已经在2015-12补丁中修复。
Internet Explorer Memory Corruption Vulnerability,CVE-2015-6162
该漏洞实际上是一个CTreeNode的Use after free。
Timeline:
2015/06/09 Found the problem.
2015/07/29 Send report to MSRC
2015/08/03 Microsoft confirmed the vunlerability
2015/08/03 CVE assigned
2015/09/03 Request for the progress
2015/09/04 Repairing in progress
2015/11/12 Repair complete, ask for acknowledgement
2015/12/09 The patch was released.
Acknowledgment (https://technet.microsoft.com/zh-cn/library/security/dn903755.aspx):
MS15-124 Internet Explorer Memory Corruption Vulnerability CVE-2015-6162 Wenxiang Qian of TencentQQBrowser
LastError=,=
惊闻我的代码出现了一个BUG。
本来逻辑是这样没问题,完全调通了
if(XXX失败)
{
DWORD dwLastErr = GetLastError();
if(某种特定的Error == dwLastErr)
{
doRepairLogic();
}
}
发布之前心想失败了还是加个上报吧。
if(XXX失败)
{
DoDataReport(xx);
DWORD dwLastErr = GetLastError();
if(某种特定的Error == dwLastErr)
{
doRepairLogic();
}
}
上报完dwLastErr被覆盖成了0,后面逻辑全挂了……。
系统环境块,又是一个深坑
又是史前巨坑级别。维护服务代码的时候,发现里面有一个常用的CreateProcessAsUser。本来这个功能用在其他地方啥事没有,这一天我突然接到一个需求,要调用一个只能在用户权限运行的程序。本来获取User token,再Create Process一气呵成。跟踪一下却有些蹊跷
卧槽这什么鬼,明明是当前用户起来的,仔细看了代码,果不其然,lpEnviroment用的是NULL,使用父进程的Enviroment,然而父进程是SYSTEM起的。
某智能Handle类 hDumpToken;
if (!DuplicateTokenEx(hUserToken, MAXIMUM_ALLOWED, NULL, SecurityIdentification, TokenPrimary, &hDumpToken))
{
return;
}
LPVOID lpEnvironmentBlock = NULL;
if (!CreateEnvironmentBlock(&lpEnvironmentBlock, hDumpToken, FALSE))
{
return;
}
BOOL ret = CreateProcessAsUserW(hDumpToken, NULL,
(LPWSTR)strFile.c_str(),
NULL, NULL, FALSE,
NORMAL_PRIORITY_CLASS | CREATE_UNICODE_ENVIRONMENT, lpEnvironmentBlock, NULL,
&si, &pi);
wtf。
6.1.7600 (Win7 SP0) WinTrustVerify在关闭Wow64FsRedirection之后会出问题
6.1.7600 (Win7 SP0) 的32位程序在关闭Wow64FsRedirection之后,调用WinTrustVerify检查文件签名时,不管文件有没有签名,系统都可能会返回0x800b0100 (文件未签名),就是这么霸道。
解决方案:
临时打开Wow64 file redirection,用完关掉