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

函数调用的返回地址;

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

易受攻击的函数参数;

相关推荐
小程序设计1 分钟前
基于零信任架构的企业网络动态访问控制系统的设计与实现
网络·安全
QYR-分析5 分钟前
高端精密制造升级,精密电火花小孔机行业全景市场报告
安全
QXWZ_IA10 分钟前
道路巡检高危作业的自动化替代方案
人工智能·科技·安全
开开心心就好13 分钟前
C盘空间不够用?一键扫描清理系统垃圾
前端·javascript·安全·支持向量机·语音识别·etcd·模拟退火算法
QXWZ_IA1 小时前
新建公路验收的路面质量检测方法
人工智能·科技·安全
updayday85415 小时前
离职域账号状态变更与Ping64操作记录核对
大数据·网络·数据库·安全·智能路由器
jimmyleeee18 小时前
大模型安全之二十二:AI 安全实践:真实案例研究与经验教训
人工智能·安全
咖啡星人k19 小时前
给 AI 接工具的权限设计:账号、Key、参数三层
安全·mcp·权限设计
jimmyleeee20 小时前
大模型安全之二十八:Agent 权限与策略控制:从最小权限到多层监督
人工智能·安全
hasty20 小时前
一封邮件如何跨越三层边界拿到 root?Cisco Secure Email Gateway CVE-2026-76461 深度解析
安全·安全威胁分析·代码复审