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

函数调用的返回地址;

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

易受攻击的函数参数;

相关推荐
吴声子夜歌10 小时前
网络安全——概述(一)
安全·web安全
airobotcn12 小时前
空地一体化巡检机器人系统落地实战指南
安全·机器人·无人机·智慧园区·巡逻
愚公搬代码12 小时前
【愚公系列】《Web应用安全》003-测试环境的搭建
前端·安全
大模型搬砖师13 小时前
高校科研管理上 AI:科研处、课题组、信息中心的三方分歧怎么调和
人工智能·安全
智脑API14 小时前
CCSwitch Claude Code 国内怎么接入?Windows、VS Code 配置与安全使用教程
安全·vs code·ccswitch
MartinYeung514 小时前
[论文学习]ProAct:针对LLM越狱的主动防禦框架
网络·学习·安全
发量惊人的中年网工15 小时前
中小企业网络管理进阶:从设备堆叠到统一管理
服务器·网络·安全·网络安全·php·制造
workflower15 小时前
案例 :某交通厅基于AI技术的智能安全运营实践
网络·人工智能·安全·设计模式·机器人
测开小菜鸟16 小时前
智能体安全与伦理测试:守护AI的“底线”,让智能体安全、负责任地工作
网络·人工智能·安全
龙亘川17 小时前
综合执法一体化数字管控平台介绍
大数据·人工智能·安全·智慧城市