了解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 编译器选项保护以下项:

函数调用的返回地址;

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

易受攻击的函数参数;

相关推荐
Aloudata2 分钟前
企业落地 AI 数据分析,如何做好敏感数据安全防护?
人工智能·安全·数据挖掘·数据分析·chatbi·智能问数·dataagent
张子夜 iiii16 分钟前
如何关闭win11系统杀毒软件和防火墙
安全
上海云盾-高防顾问37 分钟前
CC攻击的分类与演进:从代理攻击到僵尸网络的技术剖析
网络·安全
雨中飘荡的记忆2 小时前
Spring Security入门:从零开始构建安全应用
java·安全·spring
sunnyday04262 小时前
API安全防护:签名验证与数据加密最佳实践
java·spring boot·后端·安全
会飞的小新2 小时前
Java 应用程序已被安全阻止 —— 原因分析与解决方案
java·安全
浩浩测试一下2 小时前
高阶免杀技术掌握概览
汇编·安全·web安全·网络安全·系统安全·安全架构
翼龙云_cloud2 小时前
阿里云渠道商:提升云防火墙规则安全与性能的关键策略有哪些?
安全·阿里云·云计算
菩提小狗3 小时前
src漏洞挖掘思路|网络安全|漏洞挖掘|笔记
笔记·安全·web安全
上海云盾-小余3 小时前
CDN 加速 + 安全防护:让业务体验与网络安全双向升级
网络·安全·web安全