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

函数调用的返回地址;

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

易受攻击的函数参数;

相关推荐
小小的木头人2 分钟前
Nginx 访问控制及安全配置文档
运维·nginx·安全
Hical_W5 分钟前
OpenSSL RAND_bytes 完整原理:从硬件熵到密码学安全随机数
网络·安全·密码学
上海云盾第一敬业销售10 分钟前
短剧出海热潮中的Web安全:内容平台的WAF防护与合规运营
安全·web安全
難釋懷12 分钟前
Redis服务器端优化-命令及安全配置
数据库·redis·安全
AIGC设计所16 分钟前
网络安全SRC漏洞挖掘学习路线 - 第四期:常见漏洞挖掘实操,实现首次挖洞突破
开发语言·网络·学习·安全·web安全
zhongerzixunshi18 分钟前
筑牢网络安全防线——信息系统安全等级保护解析
安全·web安全
j_xxx404_23 分钟前
【AI大模型入门(三)】大模型API接入、Ollama本地部署、SDK接入
人工智能·安全·ai
虹科网络安全26 分钟前
艾体宝洞察|生成式 AI 安全:趋势、风险与最佳实践
人工智能·安全
艾莉丝努力练剑27 分钟前
【Linux线程】Linux系统多线程(十):线程安全和重入、死锁相关话题
java·linux·运维·服务器·c++·学习·安全
JAVA学习通38 分钟前
本地知识库接入大模型时的权限隔离与安全设计
java·人工智能·安全·spring