CNCVE编号:CNCVE-20020057 CVE编号: 安全级别:高 漏洞中文描述: Microsoft Visual C++ 7 和 Visual C++.Net编译器有一个功能可以有助于对缓冲区溢出攻击进行防护。这个防护功能与Crispin Cowan实现的StackGuard方法类似。Visual C++ 7实现的防护功能存在缺陷,在特定情况下,攻击者可能绕过这种防护实现对一些对软件中的缓冲区溢出漏洞的利用。Visual C++ 7实现的保护机制是采用一种叫“security cookies”的技术,就是在程序的函数堆栈帧的后面紧跟一些特定的值。当一个调用返回时,它检查那些值的完整性,如果完整性检查失败,它就假设是因为堆栈溢出,在这种情况下,进程结束或者转到一个程序设计者定义的处理程序段执行,而这个程序段的指针是存放在一个全局变量中的。在某些缓冲区溢出情况下,允许攻击者改写任意地址的内存,这时如果攻击者用shellcode 的地址改写这个意外处理程序段的指针,则攻击者可以执行任意的指令,这样攻击者就绕过了对缓冲区溢出的防护。这个问题其本身并不是一个漏洞,但它可能给程序员带来误导,以为只要打开了这个防护缓冲区溢出的选项就安全了而疏于编程过程中的安全考虑,从而可以导致一些不安全编程的现象出现。 漏洞英文描述: Microsoft added a new security feature to their latest C++ compiler, called both Visual C++.Net and Visual C++ version 7 that was released February 13th. This security feature is meant to protect potentially vulnerable source code automatically from some forms of buffer overflow attack. The protection afforded by the new feature allows developers to continue to use vulnerable string functions such as strcpy() as usual and still be "protected" against some forms of stack smashing. The new feature is closely based on an invention of Crispin Cowan's called StackGuard and is meant to be used when creating standard native code (not the new .NET intermediate language, referred to as "managed code"). 漏洞参考: http://www.microsoft.com/ http://archives.neohapsis.com/archives/bugtraq/2002-02/0146.html 系统类型: Win2000/NT 漏洞类型:缓冲区溢出