Tesla.Angela 发表于 2011-4-7 17:41:08

如何防御未知的0DAY漏洞?(视回答的有效程度给予不同级别的奖励)

我把0DAY漏洞的范围缩小,仅指“通过调用有bug的WIN32API导致系统崩溃或者获得更高权限”的漏洞。

比如:CreateDIBPalette函数本地权限提升漏洞。
#include <windows.h>
int main()
{
    DEVMODE dm = {0};
    dm.dmSize = sizeof(DEVMODE);
    dm.dmBitsPerPel = 8;
    dm.dmPelsWidth = 800;
    dm.dmPelsHeight = 600;
    dm.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT | DM_BITSPERPEL;
    ChangeDisplaySettings(&dm, 0);
    BITMAPINFOHEADER bmih = {0};
    bmih.biClrUsed = 0x200;//超过256
    HGLOBAL h = GlobalAlloc(GMEM_FIXED, 0x1000);
    memcpy((PVOID)GlobalLock(h), &bmih, sizeof(bmih));
    GlobalUnlock(h);
    ::OpenClipboard(NULL);
    ::SetClipboardData(17, (HANDLE)h);
    ::CloseClipboard();
    ::OpenClipboard(NULL);
    ::GetClipboardData(CF_PALETTE);
    return 0;
}
经本人测试,调用以上代码,可以导致Win XP X86、Win 7 x86、Win 7 x64蓝屏。

大家说说如何防御呢?

奖励措施:
1.视回答的有效程度和可实施程度加20~100水晶币。
2.回答特别有用者,加100水晶币,并将其用户组改为【核心会员】。

ywledoc 发表于 2011-4-7 22:47:38

\GS编译选项
卡巴已经可以防栈溢出了
DEP
数据区域不可执行代码。
检测EIP,看是否是在.text段中~

马大哈 发表于 2011-4-8 08:38:04

sb666 发表于 2011-4-7 18:28 static/image/common/back.gif
回复 Tesla.Angela 的帖子

我稍稍说一下通用的方法


这些都是办法,不过如果这些调用在关卡上,效率就非常重要了

以前WIN98很不安全是吧?但运行效率那可是钢钢的.

拿现在运行XP或WIN7很流畅的机器来装个WIN98看看?不飞到天上去,哈哈.
页: [1]
查看完整版本: 如何防御未知的0DAY漏洞?(视回答的有效程度给予不同级别的奖励)