了解VS安全编译选项GS

缓冲区溢出攻击的基本原理就是溢出时覆盖了函数返回地址,之后就会去执行攻击者自己的函数;

针对缓冲区溢出时覆盖函数返回地址这一特征,微软在编译程序时使用了安全编译选项-GS;

目前版本的Visual Studio中默认启用了这个编译选项;

GS的工作机制是,

在所有函数调用发生时,向栈帧内压入一个额外的随机DWORD,称为Security Cookie;

Security Cookie位于EBP之前,系统还将在.data的内存区域中存放一个Security Cookie的副本;

当栈中发生溢出时,Security Cookie将被首先淹没,之后才是EBP和返回地址;

在函数返回之前,系统将执行一个额外的安全验证操作,被称做Security check;

这样如果Security Cookie被改变了,就证明受到了缓冲区溢出攻击;

此选项默认开启;VS2015,如下图;

只是了解一下;还不会反汇编跟踪查看到栈帧内的Security Cookie;

如果每个函数调用都进行Security check,对性能还是会有影响;

根据MS的说法,

如果值不同(Security Cookie),则指示可能已覆盖堆栈。 如果检测到不同的值,将终止进程。

如果命令行编译则是加 /GS 选项;

根据MS的说法,

/GS 编译器选项保护以下项:

函数调用的返回地址;

函数的异常处理程序地址;

易受攻击的函数参数;

相关推荐
云栖梦泽在7 分钟前
AI安全入门:AI系统被攻击的常见场景与应对思路
大数据·人工智能·安全
摩尔元数1 小时前
特殊环境安全生产的AI运
人工智能·安全·制造·mes
m0_738120721 小时前
ctfshow靶场SSRF部分——基础绕过到协议攻击解题思路与技巧(二)
python·网络协议·tcp/ip·安全·网络安全
志栋智能1 小时前
安全超自动化的投资回报率如何量化?
人工智能·安全·自动化
small_white_robot3 小时前
idek-2022 web 全wp——持续更新
开发语言·前端·javascript·网络·安全·web安全·网络安全
卷卷说风控3 小时前
【卷卷观察】AI 安全与信任危机:恶意机器人、AI 买家秀、模型自保 安全、治理、虚假内容成为高频议题 “AI 越有用,越需要被约束”
人工智能·安全·机器人
Metaphor6923 小时前
使用 Python 加密或解密 Word 文档
python·安全·word
重生之我是Java开发战士3 小时前
【Java SE】多线程(二):线程安全、synchronized、volatile与wait/notify详解
java·开发语言·安全
xixixi777773 小时前
从“联网通行证”到“安全可信根”:AI-eSIM的硬件级安全底座正在重构物联网安全边界
人工智能·安全·ai·重构·大模型·通信
智慧医养结合软件开源3 小时前
可视化管控,赋能高效运营与专业展示
大数据·人工智能·安全·云计算·生活