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

函数调用的返回地址;

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

易受攻击的函数参数;

相关推荐
lerhxx6 小时前
Web安全两大基石:深入理解与防御XSS与CSRF攻击
前端·安全
huluang7 小时前
网络安全等级测评师能力评估样卷及答案
安全·web安全
qq_266348737 小时前
系统白名单接口添加自定义验证(模仿oauth2.0),防安全扫描不通过
java·安全
独行soc8 小时前
2025年渗透测试面试题总结-105(题目+回答)
网络·python·安全·web安全·adb·渗透测试·安全狮
恒创科技HK9 小时前
高防服务器分为哪几种?香港高防服务器有什么特点?
运维·服务器·安全
安当加密14 小时前
达梦数据库TDE透明加密解决方案:构建高安全数据存储体系
网络·数据库·安全
tianhe-888817 小时前
防爆型气象站:专为高危环境设计的气象安全监测方案
安全·防爆型气象站·化工厂防爆气象站
小陈爱coding17 小时前
SaaS多租户数据隔离实战:MyBatis拦截器实现行级安全方案
安全·云原生·mybatis·多租户
安当加密17 小时前
构建高安全堡垒机登录体系:RADIUS + 动态口令实践
网络·安全
tq0217 小时前
Cookie和Seeion在客户端和服务端的角色作用
运维·服务器·安全