多个堆栈保护机制保存基指针覆盖弱点发布时间:2002-04-27 更新时间:2002-04-27 严重程度:中 威胁程度:其它 错误类型:设计错误 利用方式:服务器模式 BUGTRAQ ID:4589 受影响系统 StackGuard StackGuard 2.0.1详细描述 目前存在多个应用层技术来保护堆栈溢出攻击。其中这些技术中存在几个弱点。 其中之一的漏洞存在于由StackGuard 和StackShield编译的程序中。 当调用函数引用其本地变量和参数时,它会基于基指针进行操作,根据操作执行的不同,可以允许攻击者写任意数据到内存任意位置。 StackGuard 2.0.1使用了固定值的canary,基于各种组合方法破坏保存的基指针并使固定值的canary允许缓冲溢出发生。 如果攻击者能够以某种方式嵌入固定值canary和返回地址,然后使用canary/返回地址相关的偏移地址来代替保存的基地址,StackGuard就会检查通过并允许返回到SHELLCODE中。 测试代码 尚无 解决方案 在StackGuard 3.0上得到修补。 相关信息 参考:http://online.securityfocus.com/advisories/4057 |