了解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 小时前
SQLMap 详解
安全
网安INF12 小时前
SSL/TLS密钥派生机制与安全攻防体系深度解析
网络·安全·网络安全·密码学·ssl
飞飞传输13 小时前
守护医疗隐私,数据安全摆渡系统撑起内外网安全伞!
大数据·运维·安全
xiatianxy13 小时前
有限空间作业智能设备:云酷科技守护安全与效率
安全·有限空间作业·有限空间监测设备
Guheyunyi13 小时前
视频安全监测系统的三大核心突破
大数据·运维·服务器·人工智能·安全·音视频
晴天¥13 小时前
Oracle中的安全管理(用户、权限、角色)
数据库·安全·oracle
EkihzniY13 小时前
二要素认证:eSIM开户的安全基石
安全
汽车仪器仪表相关领域13 小时前
GZCVL T-II 安全防坠器测试系统
功能测试·测试工具·安全·单元测试·压力测试·可用性测试
乾元13 小时前
AI 驱动的入侵检测与异常会话判别:从规则到行为分析前言:从“捕获敌人”到“守卫秩序”
运维·网络·人工智能·网络协议·安全