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

函数调用的返回地址;

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

易受攻击的函数参数;

相关推荐
这个人需要休息3 小时前
xss的漏洞类型+dvwa DOM xss各难度的小总结
网络·安全
O***p6043 小时前
区块链在智能合约安全中的审计
安全·区块链·智能合约
世界尽头与你3 小时前
CVE-2014-3566: OpenSSL 加密问题漏洞
网络·安全·网络安全·渗透测试
ZeroNews内网穿透3 小时前
ZeroNews IP 访问控制能力
服务器·网络·网络协议·tcp/ip·安全·web安全·小程序
YJlio3 小时前
[鸿蒙2025领航者闯关] 基于鸿蒙 6 的「隐私感知跨设备办公助手」实战:星盾安全 + AI防窥 + 方舟引擎优化全流程复盘
人工智能·安全·harmonyos
vortex53 小时前
网站压缩包上传解压功能的漏洞剖析
网络·安全·web安全
儒道易行3 小时前
【钓鱼攻防】浅谈exe文件伪造ico图标上线CS远控
网络·安全·web安全
人机与认知实验室5 小时前
香港火灾与人机环境系统安全
安全·系统安全
麦聪聊数据8 小时前
IT 的“控”与业务的“放”:构建基于 Web 原生架构的安全数据共享平台
数据库·sql·安全