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

函数调用的返回地址;

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

易受攻击的函数参数;

相关推荐
KKKlucifer26 分钟前
基于行为语义分析的 API 异常流量自适应检测技术
网络·安全·web安全
wanhengidc1 小时前
算力服务器的应用场景
运维·服务器·人工智能·安全·web安全·智能手机
空中海1 小时前
05 鸿蒙APP 测试、性能、安全、发布与生产实践
安全·华为·harmonyos
飞飞传输1 小时前
内外网文件交换系统产品推荐:高密网低密网摆渡更安全高效
大数据·运维·安全
TENSORTEC腾视科技1 小时前
让安全驾驶有“AI”相伴|腾视科技DMS视频监控一体机,守护每一次出行
大数据·人工智能·科技·安全·ai·零售·无人叉车及智能调度系统解决方案
亚远景aspice1 小时前
亚远景-AI系统的V模型开发:基于ISO/PAS 8800的安全需求导出、架构措施与验证确认
网络·安全·汽车
liann1191 小时前
Agent 内存马禁止 Attach JVM
java·jvm·安全·网络安全·系统安全·网络攻击模型·信息与通信
陈天伟教授1 小时前
图解人工智能(2)最智能
人工智能·安全·架构
@insist1231 小时前
信息安全工程师-病毒、木马、蠕虫技术原理与防御基础
安全·软考·信息安全工程师·软件水平考试