STATUS_STACK_BUFFER_OVERRUN异常一般是指栈缓冲区溢出的溢出,代码为0xC0000409,消息提示一般为“Security check failure or stack buffer overrun”。微软给出的解释如下:系统在应用程序中检测到基于堆栈的缓冲区溢出。此溢出可能允许恶意用户获得此应用程序的控制权。/GS编译器开关允许创建堆栈“cookie”值,该值用作检测堆栈缓冲区溢出的金丝雀。如果cookie已损坏,则进程会立即终止自身,状态代码为STATUS_STACK_BUFFER_OVERRUN。

在做如上描述的时后,STATUS_STACK_BUFFER_OVERRUN是一个好名字。但是,随着时间的推移,随着我们遇到和处理问题越来越多,我们会发现其他立即终止进程的原因。其中一些与安全有关其他的没有。比如在遇到更糟糕的情况下希望在进程终止前立即停止,用fail fast这个词是用来形容这种情况的就非常好。甚至还有一个编译器内部函数来终止使用这个特殊状态代码的当前进程

似乎人们无法就是fail fast还是fast fail达成一致,所以在实践中,你可以看到这两种变化。这意味着现在当你得到一个STATUS_STACK_BUFFER_OVERRUN时,实际上并不意味着存在堆栈缓冲区溢出。这只意味着应用程序决定以极快的速度自行终止。

如果你查看winnt.h文件,您将看到各种快速失败代码的列表。这些代码指示发生了哪种类型的快速故障。

#define FAST_FAIL_LEGACY_GS_VIOLATION         0
#define FAST_FAIL_VTGUARD_CHECK_FAILURE 1
#define FAST_FAIL_STACK_COOKIE_CHECK_FAILURE 2
#define FAST_FAIL_CORRUPT_LIST_ENTRY 3
#define FAST_FAIL_INCORRECT_STACK 4
#define FAST_FAIL_INVALID_ARG 5
#define FAST_FAIL_GS_COOKIE_INIT 6
#define FAST_FAIL_FATAL_APP_EXIT 7
从上面的列表中,有点意思的是FAST_FAIL_FATAL_APP_退出代码。此代码在调用C运行时函数abort()时使用。 std::terminate()调用abort()。对于从noexcept函数中抛出异常或抛出的异常未经处理的情况,将自动调用std::terminate()。当一个内部断言失败时,或者当一个错误发生并且程序只是想放弃而不是试图恢复时,它也被一些模块使用。这些不一定是安全问题。只是程序说,“嗯,我有麻烦了。我想我就在这里停一下。”
这样的情况,我最近就遇到一次,具体表现时进程退出时崩溃了,报的错误就是STATUS_STACK_BUFFER_OVERRUN。
0:000> .exr -1
ExceptionAddress: 528a7666 (msvcr120!abort+0x00000028)
   ExceptionCode: c0000409 (Security check failure or stack buffer overrun)
  ExceptionFlags: 00000001
NumberParameters: 1
   Parameter[0]: 00000007
Subcode: 0x7 FAST_FAIL_FATAL_APP_EXIT
具体参考《记一次在父类析构里调用纯虚函数而引发的异常

STATUS_STACK_BUFFER_OVERRUN不一定是栈缓冲区溢出的更多相关文章

  1. cve-2010-3333 Microsoft Office Open XML文件格式转换器栈缓冲区溢出漏洞 分析

    用的是泉哥的POC来调的这个漏洞 0x0 漏洞调试    Microsoft Office Open XML文件格式转换器栈缓冲区溢出漏洞 Microsoft Office 是微软发布的非常流行的办公 ...

  2. 简单尝试利用维控LeviStudioU的一栈缓冲区溢出漏洞

    这是别人给我发的,让我分析一下,看能否写出exp.只怪自己水平不够,最后没能写出exp,以下为自己的分析思路 环境为win10 pro x64 英文版(10.0.16299) 默认安全配置 一.漏洞分 ...

  3. CVE-2010-2883Adobe Reader和Acrobat CoolType.dll栈缓冲区溢出漏洞分析

       Adobe Acrobat和Reader都是美国Adobe公司开发的非常流行的PDF文件阅读器. 基于Window和Mac OS X的Adobe Reader和Acrobat 9.4之前的9.x ...

  4. pwn之栈缓冲区溢出漏洞(入门)

    题目ret2text 题目信息确认 使用file命令查看文件类型 root@CTF:/home/# file ret2text ret2text: ELF 32-bit LSB executable, ...

  5. 缓冲区溢出基础实践(二)——ROP 与 hijack GOT

    3.ROP ROP 即 Return Oritented Programming ,其主要思想是在栈缓冲区溢出的基础上,通过程序和库函数中已有的小片段(gadgets)构造一组串联的指令序列,形成攻击 ...

  6. 使用Linux进行缓冲区溢出实验的配置记录

    在基础的软件安全实验中,缓冲区溢出是一个基础而又经典的问题.最基本的缓冲区溢出即通过合理的构造输入数据,使得输入数据量超过原始缓冲区的大小,从而覆盖数据输入缓冲区之外的数据,达到诸如修改函数返回地址等 ...

  7. 【CSAPP笔记】9. 汇编语言——缓冲区溢出

    x86-64 Linux 内存结构 先来看看一个程序在内存中是如何组织的.Linux 为每个进程维持了一段单独的虚拟地址空间.(进程是计算机科学中很深刻.很成功的一个概念.当我们在运行一个程序时,会得 ...

  8. Nagios Core/Icinga 基于栈的缓冲区溢出漏洞

    漏洞名称: Nagios Core/Icinga 基于栈的缓冲区溢出漏洞 CNNVD编号: CNNVD-201402-484 发布时间: 2014-03-03 更新时间: 2014-03-03 危害等 ...

  9. CSAPP阅读笔记-变长栈帧,缓冲区溢出攻击-来自第三章3.10的笔记-P192-P204

    一.几个关于指针的小知识点: 1.  malloc是在堆上动态分配内存,返回的是void *,使用时会配合显式/隐式类型转换,用完后需要用free手动释放. alloca是标准库函数,可以在栈上分配任 ...

随机推荐

  1. centos7安装face_recognition踩各种坑

    要在阿里云服务器上部署face_recognition.用的是centos7.  千辛万苦啊.感谢网上的各种解答.回报社会,我也把各种坑写下了.整理的有点乱.不过仔细看,有干货的. 感谢这个博主Fat ...

  2. IDEA自动清理优化import包

    IDEA自动清理优化import包 直接上图: Add unambiguous imports on the fly:快速添加明确的导入. Optimize imports on the fly:快速 ...

  3. Function.prototype.call.apply作用详解

    关于call()和apply()基本用法可以参阅如下两篇文章: (1).call方法参阅JavaScript call()一章节. (2).apply方法参阅JavaScript apply()一章节 ...

  4. 1+X证书学习日志——css 2D&过渡

    css 位移常用属性 transform:translate(x,y): transform:translateX(); transform:translateY(); 旋转属性 2d旋转: tran ...

  5. js 取得数组中的最大值和最小值(含多维数组)

    转自:http://www.dewen.org/q/433 方法一: var a=[1,2,3,5]; alert(Math.max.apply(null, a));//最大值 alert(Math. ...

  6. 个人项目(java实现)

    一.github地址:https://github.com/Moyjing/Moy 二.psp表格 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实 ...

  7. java-检查IP和端口在超时时间内是否可以连接

    检查IP和端口在超时时间内是否可以连接 /** * 检查IP和端口是否可以连接 * @param ip * @param port * @return */ private static boolea ...

  8. tar.bz2解压异常

    问题描述: [root@mvp-dd ~]# tar jxf ffmpeg-.tar.bz2 tar (child): bzip2: Cannot exec: No such file or dire ...

  9. prometheus-redis-exporter监控redis

    chart地址:https://github.com/helm/charts/tree/master/stable/prometheus-redis-exporter 1.下载chart包 $ hel ...

  10. pgrep,pkill

    pgrep, pkill - look up or signal processes based on name and other attributes 根据名称和其它属性来查找进程 pgrep: ...