【每日一记5】+第6天+聊聊缓冲区溢出
  

一个无趣的人 12091人觉得有帮助

{{ttag.title}}
2019年9月,MITRE发布了25个最危险的软件漏洞榜单。其中,榜首是编号为CWE-119的“对内存缓冲区的操作限制不当”——这一大类包括了缓冲区溢出与越界读取等错误。
缓冲区溢出威胁日益增加
尽管多年以来,各方都在努力从电脑软件中消除缓冲区溢出的威胁,但是它始终牢牢占据了榜首。不过,这是MITRE从2011年以来第一次更新了25个最危险漏洞的榜单,而威胁程度的计算公式也基于了一个新公式,结合了2017年与2018年中在NVD中的漏洞发生频率和这些漏洞的平均威胁度分数。因此,榜单反应了各类威胁的危险程度与普遍程度。
而缓冲区溢出问题依然受到关注的另一原因可能是因为物联网的发展。基于过去几年的研究,物联网设备中的代码质量要远远低于由那些大厂商设计的现代计算机应用。物联网设备中的固件由于无法得到完整的检查,在过去几年中始终无法得到更新——而同时这些固件本身往往充斥着大量的缓冲区溢出漏洞。与此同时,这些设备在互联网、商用网、以及家居环境中的数量却与日俱增。
何为缓冲区溢出?
如果程序不对一个固定长度的存储缓冲区进行检查就直接写入超过容量大小的数据,就会产生名为“缓冲区溢出”的安全问题。这会导致数据溢出到相邻的储存空间,将该位置的数据改写,最终造成程序崩溃或者对程序破解的可能性。
缓冲区溢出是最古老,也是最常见的任意代码执行问题的罪魁祸首,而用C语言和C++语言写出的应用则更容易发生这类问题。为了避免缓冲区溢出的威胁,开发者社区已经发展出了一系列安全编程行为要求,同时主流软件供应商也将这些行为作为安全开发生命周期中的一部分。
缓冲区溢出攻击范例
由于缓冲区溢出会导致未经授权的任意代码执行,因此通常被认为是高威胁的风险。攻击者能够控制目标缓冲区以外的储存区域并进行改写,然后重定向一个函数去执行他们的恶意代码。
即使缓冲区溢出无法形成任意代码执行的情况,它依然能够造成系统崩溃,导致拒绝服务状态。对于需要可持续性运作的服务器而言,这是相当致命的问题。
在某些情况下,攻击者也可以通过缓冲区溢出重写应用存储中的关键设置,比如表示某个用户是否为管理员的标签——这就能引发在应用,甚至系统中的提权攻击。
最后,对缓冲区的操作限制不当除了会让攻击者改写数据之外,还能读取缓冲区外的数据,造成敏感数据泄露。这其实属于越界读取问题。尽管说这类隐患与传统的缓冲区溢出不同,但是越界读取也属于同一类的代码错误问题。
越界读取还会被攻击者用于获取更多信息,从而发现其他漏洞。举例而言,攻击者可以利用越界读取发现被诸如ASLR等内核反破解技术保护的内存地址。
如何防范缓冲区溢出
由于缓冲区溢出是编程中产生,因此最好的防范方式是让程序员避免这些错误。许多安全编程指导与书籍都强调了缓冲区溢出问题,包括一些安全编程认证项目也对此有所涉及。Cert Coordination Center与卡耐基梅隆大学的软件工程学院联合为C和C++在内的多种编程语言设定了多个编程标准。
自动化防止缓冲区溢出的方法包括使用本身带有保护内存的编程语言进行框架和库的构建,从而保障函数本身的安全性,避免引起缓冲区溢出。开发者应该在应用中使用ASLR(地址空间随机配置加载)、PIE(Position-independent executables)等技术限制缓冲区溢出带来的影响。同时,也需要使用编译器标记和扩展来检查Microsoft Visual Studio中的/GS标签、以及Red Hat、StackGuard和ProPolice中的FORTIFY_SOURCEGCC标签之类的错误。
不过,没有任何一种保护措施能提供百分百的安全。因此,开发者还需要周期性地对代码进行检查、由内部和外部的安全团队以及自动化漏洞测试工具进行应用安全测试。:加油:

打赏鼓励作者,期待更多好文!

打赏
1人已打赏

平凡的小网工 发表于 2020-3-7 21:34
  
我在社区摸爬滚打这么多年,所谓阅人无数,就算没有见过猪走路,也总明白猪肉是啥味道的。一看到楼主的气势,我就觉得楼主同在社区里灌水的那帮小混子有着本质的差别,你一定就是传说中的最强技术牛。
zjwshenxian 发表于 2020-3-8 07:50
  
感谢分享
liugd1013 发表于 2020-3-8 17:08
  
内容很详细,让我理解了什么是缓冲区溢出及原理
发表新帖
热门标签
全部标签>
西北区每日一问
每日一问
技术盲盒
技术笔记
干货满满
GIF动图学习
产品连连看
标准化排查
通用技术
SDP百科
自助服务平台操作指引
技术咨询
技术圆桌
功能体验
社区新周刊
信服课堂视频
2023技术争霸赛专题
秒懂零信任
每周精选
畅聊IT
在线直播
安装部署配置
新版本体验
技术晨报
升级&主动服务
sangfor周刊
VPN 对接
专家问答
高手请过招
答题自测
MVP
网络基础知识
升级
安全攻防
上网策略
测试报告
日志审计
问题分析处理
流量管理
每日一记
运维工具
云计算知识
用户认证
原创分享
解决方案
项目案例
SANGFOR资讯
专家分享
技术顾问
信服故事
功能咨询
终端接入
授权
设备维护
资源访问
地址转换
虚拟机
存储
迁移
加速技术
排障笔记本
产品预警公告
玩转零信任
信服圈儿
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
深信服技术支持平台
社区帮助指南
答题榜单公布
纪元平台
卧龙计划
华北区拉练
天逸直播
以战代练
山东区技术晨报
文档捉虫活动
齐鲁TV
华北区交付直播
2024年技术争霸赛
北京区每日一练
场景专题
故障笔记
排障那些事
高频问题集锦

本版版主

461
247
13

发帖

粉丝

关注

本版达人

feeling

本周分享达人

新手29676...

本周提问达人