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

函数调用的返回地址;

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

易受攻击的函数参数;

相关推荐
liliwoliliwo8 小时前
信息系统安全-第六章-操作系统安全-1.操作系统安全基础
安全
java干货9 小时前
拒绝全表扫描灾难:用 SSCAN 安全遍历 Redis 亿级 Set 集合
数据库·redis·安全
菩提小狗10 小时前
第23天:安全开发-PHP应用&后台模块&Session&Cookie&Toke_笔记|小迪安全2023-2024|web安全|渗透测试|
笔记·安全·php
加密棱镜10 小时前
地址可溯源・传输可加密 IPv6 守护全流程网络安全
安全
Neolnfra10 小时前
为什么现在需要卸载OpenClaw:它对你的系统安全做了什么?
安全·系统安全·openclaw
Never_Satisfied11 小时前
在CSP中,比“self”更安全的方案:nonce 、 hash、strict-dynamic
安全
chenhouliu15 小时前
国外统计软件垄断高价困局:Minitab 国产替代,让制造企业省一半成本、数据更安全
安全·制造
Chengbei1115 小时前
AI 自动逆向 JS 加密!自动抓密钥、出报告,彻底解放双手,解决抓包数据包加密难题
开发语言·javascript·人工智能·安全·网络安全·网络攻击模型
牢七16 小时前
Slim-4.x php审计 报错分析
android·开发语言·ide·安全·php
FairGuard手游加固16 小时前
当明枪遭遇暗箭:射击游戏安全攻防战
人工智能·安全·游戏