使用Visual C++防御功能保护您的代码

目录

基于堆栈的缓冲区溢出检测 (/GS)

安全异常处理 (/SafeSEH)

DEP 兼容性 (/NXCompat)

映像随机化 (/DynamicBase)

更安全的函数调用

C++ Operator::new

如果失败会怎样?

许 多代码都是使用 C 和 C++ 编写的,但遗憾的是,其中很多此类代码都有一些甚至连开发人员都不知道的安全漏洞。以任何语言编写的程序都存在可能会使其用户受到攻击的漏洞,但 C 和 C++ 语言在 Internet 历史上占有特殊的地位,原因是它们的许多安全漏洞都源自使其大受欢迎的功能:对计算机硬件无限制的访问以及随之而来的性能优势。在阅读有关安全和 C 或 C++ 方面的资料时,通常很容易看到“缓冲”和“溢出”等术语,因为缓冲通常就是直接访问内存的一个示例。这种类型的直接访问虽然功能非常强大,但也非常非常危险。

对于在生成 C 和 C++ 代码过程中出现的许多缓冲区溢出问题,其原因有多种。第一个原因我在上面已提到过:编程语言提供对易受攻击内存的直接访问。第二个原因是开发人员出错。第三个原因是编译器通常不提供防御功能。对于第一个问题很容易提供补救措施,但自此 C 和 C++ 开始成为不同的语言。

开发人员出错问题可通过培训来部分加以解决,但是我还没有真正看到在这方面教育机构的兴起。行业中也确实有一些进行安全培训的机构,但是我们只能提供部分解决方案或解决部分问题,我非常希望看到各所大学能对学生进行更多有关软件安全方面的教育。您可能要问“为什么教育机构不尝试培训这一非常重要的主题?”说实话,我也不知道为什么。不过这确实非常让人郁闷。

最后,即使有一流的培训,但有些安全问题真的非常复杂,就算是受过良好教育的工程师也不能完全解决。我们人类并不是完美的。

在编译器中建立更多防御措施是 Microsoft Visual C++ 团队多年以来一直试图解决的问题,在我们安全团队的协助下目前正逐渐得到改进。本专栏将概述一些在 Visual C++ 2005 中可用的缓冲区溢出防御措施及其他内容。请注意,一些其他编译器也提供防御措施,但 Visual C++ 有两个主要优势超越了 gcc 等编译器。首先,所有这些防御措施都默认集成在工具集中,无需下载某些稀奇古怪的加载项。其次,这些选项易于使用。

Visual C++ 工具集提供的防御措施包括(不分先后顺序):

基于堆栈的缓冲区溢出检测 (/GS)

安全异常处理 (/SafeSEH)

数据执行保护 (DEP) 兼容性 (/NXCompat)

映像随机化 (/DynamicBase)

自动使用更安全的函数调用

C++ operator::new

在详细讨论每一项之前,我要指出的是这些防御措施并不能弥补不安全的代码。您应该始终尽最大努力编写最安全的代码,如果不知道该怎样做,可以先阅读一些有关这一主题的专业书籍。


Typical Stack Compared to One Compiled with /GS

另外我还要指出,这些都是 Microsoft 的“安全开发生命周期”(SDL) 的要求,这意味着编写 C 和 C++ 代码时必须使用这些选项,否则不能交付。偶尔会有些例外,但是非常少,因此在这里不对其做详细讨论。

最后必须要牢记的要点是:这些精心设计的防御措施也是可以被绕过的,具体视代码问题而定。代码使用的防御措施越多,解决起来就越困难,但是没有任何防御措施是尽善尽美的。它们都是为了减少被侵入的机会。您一定对此已经有所了解!唯一的应对方案就是使用更安全的函数调用,这是真正能够堵上漏洞的防御措施。让我们详细了解一下各个防御措施。

时间: 2024-10-19 05:23:46

使用Visual C++防御功能保护您的代码的相关文章

Palo Alto Networks进一步扩展其Traps高级终端防护产品的防御功能

本文讲的是Palo Alto Networks进一步扩展其Traps高级终端防护产品的防御功能,下一代安全企业Palo Alto Networks近日宣布实现其高级终端防护产品Traps的功能扩展,进一步强化Traps对恶意软件及漏洞的防御能力,并支持更多包括macOS和Android(测试版)在内的操作系统. Traps采用多方法防御措施替代原有AV产品,可在终端受到攻击前对已知和未知的恶意软件及漏洞进行有效阻截,事实证明,Traps完全满足美国健康保险携带和责任法案(Health Insur

Palo Alto Networks进一步强化下一代安全平台 推出全新威胁防御功能

下一代安全企业Palo Alto Networks近日宣布为其下一代安全平台增加全新功能,帮助企业用户扩展安全运行应用的能力,有效防御网络攻击.简化安全操作.从而更加安全的采用云技术. 网络攻击者经常使用其控制的计算资源.自动化工具和逃逸技术来实施大规模而低成本的复杂攻击.还在使用传统安全单点产品.人工调配资源和工具的网络安全团队,一直以来对这些已知和未知威胁的复杂性.速度和数量束手无策.那些传统工具已无法提供完整的应用程序可视性和控制能力,也不能自动地.及时地识别并阻止高级攻击.除此之外,传统

F5 Networks 增强 DDoS 防御功能

2014 年 7 月 17 日,F5 Networks (NASDAQ:FFIV) 推出了扩展版本的防御解决方案以防范影响网络.数据中心和应用的基于互联网的分布式拒绝服务 (DDoS) 攻击.该解决方案符合 F5 提供全面安全解决方案和服务组合的愿景,为客户提供了结合内部部署和 基于云能力的混合防御解决方案选择.为补充现 有的内部部署 DDoS 防范产品,F5 收购了 Defense.Net, Inc. - 一家基于云的安全服务的私有提供商.两家公司间共享的 先进技术和运营经验将为客户提供整体而

瑞星2009:3大拦截2大防御功能主动遏制木马病毒

  12月16日,"瑞星全功能安全软件2009"正式发布,它基于瑞星"云安全"技术开发,实现了彻底的互联网化,是一款超越了传统"杀毒软件"的划时代安全产品.该产品集"拦截.防御.查杀.保护"多重防护功能于一身,并将杀毒软件与防火墙的无缝集成为一个产品,实现两者间互相配合.整体联动,同时极大地降低了电脑资源占用. 瑞星2009拥有三大拦截.两大防御功能:木马入侵拦截(网站拦截+U盘拦截).恶意网址拦截.网络攻击拦截:木马行为防御

用瑞星密码保护功能保护QQ密码

毫无疑问,网络即时通讯工具已经成了我们工作.生活中不可缺少的一部分,上网第一步的习惯性操作就是打开QQ.MSN等.一些人甚至把它们的重要性提到了与手机可以匹敌的地位,一旦发生QQ密码被盗无法登录的情况 损失可谓损失大矣!多年来联系的同学.朋友一去不复返了!正因为如此,大部分人都有防止密码被盗的安全意识,但现在的木马层出不穷,除了平时养成定期修改密码并保证密码的复杂性等良好的习惯外,我们还应该用软件的专业功能来保护密码,以确保这类软件密码的安全. 瑞星防火墙2007版有一个非常强大的的功能--"密

C++ Plus:使用Visual C++ 2008功能包加强Windows应用程序

本文讨论: Microsoft 基础类库更新 使用 C++ 对功能区进行编程 使用 C++ 实现选项卡式 MDI 多态函数和智能指针本文以 Visual C++ 功能包的预发布版为基础.文中包含的所有信息均有可能变更. 本文使用了以下技术: Visual Studio 2008,MFC 目录 Office 功能区用户界面 选项卡式多文档界面 标准 C++ 库中的新功能 多态函数对象 智能指针 作为一名 Visual C++ 开发人员 ,您在最近几年可能有点被冷落的感觉,因为与 Visual C#

Visual Novel Reader功能介绍

  Visual Novel Reader功能介绍 1.辞书功能,可以在翻译窗口处显示单词的翻译. 先选择路径,打开使用偏好上的辞书选项卡.如图1所示.   图1 点击浏览按钮后选择词典的文件夹,注意:词典必须是EPWING格式.如图2所示.   图2 效果如图3所示.   图3 2.共享辞书功能. 你可以将翻译放上网去翻译,别人也可以给翻译分享给你. 在游戏左下角的蓝色圆圈按钮或者托盘图标的右键菜单选共享辞书.如图4所示.   图4 将想翻译的单词放在形态列,翻译的内容放在翻译列,然后选择目标

visual c++-VISUAL C++编辑功能下的占到行号怎么弄

问题描述 VISUAL C++编辑功能下的占到行号怎么弄 弄的是对话框界面,不是文档试图,有一个CEDIT,一个菜单,请写出完整代码,谢谢了 解决方案 char ch1[100000]; GetDlgItem(IDC_EDIT1)->GetWindowText(ch1,100000); int pos = 0; for (int i = 0; i < 100000; i++) { if (ch1[i] == 'n') pos++; if (pos == 行号) break; } GetDlgI

PPTV推防御功能抗卸载陶闯呼吁健全互联网法规

4月21日晚间消息,PPTV(PPLive旗下媒体)控诉PPS恶意卸载事件有新进展:PPTV今日启动防御功能,将主动阻止恶意程序的卸载操作.PPLive CEO陶闯表示,希望通过此事引起各方重视,并呼吁健全互联网相关法律法规. 4月19日,PPLive向外发布消息称,其竞争对手PPS当日开始的软件升级中,出现强制删除已安装的PPLive软件的行为.而PPS称此举是反击对方视频内容侵权之举.截至发稿时,PPLive称未收到PPS任何停止不正当竞争的积极回应. 陶闯透露PPS的这一行为已经导致PPT