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

函数调用的返回地址;

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

易受攻击的函数参数;

相关推荐
-曾牛43 分钟前
深入解析 XSS 漏洞:原理、分类与攻防实战
前端·安全·web安全·网络安全·渗透测试·xss·原理解析
物流可信数据空间1 小时前
专家解读 | 提升数据流通安全治理能力 促进数据流通开发利用【可信数据空间】
大数据·人工智能·安全
四川合睿达自动化控制工程有限公司1 小时前
水库安全监测系统
安全
Par@ish1 小时前
【局域网协议】为什么我们需要管理DNS?
安全·dns·domain
黑客思维者2 小时前
新能源物联网系统中硬件加密芯片的安全设计与实践
物联网·安全·新能源·国密·硬件加密
云边云科技5342 小时前
企业SD-WAN选型指南:打造安全、体验至上的云网智联架构
网络·安全·架构·it·量子计算
BullSmall3 小时前
日志安全:严禁记录的敏感信息清单
运维·服务器·安全
YJlio3 小时前
Autologon 学习笔记(9.7):安全自动登录的正确打开方式
笔记·学习·安全
知攻善防实验室3 小时前
Yakit热加载 之 出差无聊测酒店 WiFi
安全·web安全·网络安全·渗透测试
ZeroNews内网穿透4 小时前
公网访问本地搭建开源在线流程图工具Draw.io
服务器·数据库·网络协议·安全·http·流程图·draw.io