SAT驱动的C程序缓冲区溢出漏洞检测方法
6 浏览量
更新于2024-08-26
收藏 393KB PDF 举报
"该文介绍了一种基于SAT(布尔可满足性问题)的C程序缓冲区溢出漏洞检测技术,通过源代码变换和断言来检测潜在的安全问题。该方法在1164个公开基准程序上进行了测试,取得了较高的准确性和较低的漏报率。"
在计算机编程中,尤其是C语言编程,缓冲区溢出是一种常见的安全漏洞,可能导致数据丢失、系统崩溃甚至恶意代码执行。缓冲区溢出通常发生在程序员没有正确地管理内存分配和使用时,当向固定大小的缓冲区写入超过其容量的数据时发生。这种错误可以被攻击者利用,执行未授权的指令或获取敏感信息。
本文提出了一种新的检测C语言缓冲区溢出的方法,它基于SAT求解器。SAT(布尔可满足性问题)是逻辑满足问题的一个分支,常用于解决复杂的问题,如软件验证和电路设计。在该方法中,首先通过源代码变换在程序中添加特定的语句,这些语句用于描述缓冲区的属性。接着,使用断言来表达缓冲区溢出的条件,即如果某条件满足,则可能发生溢出。这些断言随后通过SAT工具进行检查,以确定是否存在导致溢出的路径。
该方法的一个关键优点是它可以处理源代码级别的问题,而不需要编译后的二进制代码,这使得分析过程更直接且可能更有效。此外,通过实际应用,该技术成功设计并实现了一个原型工具,该工具能自动检测输入的源代码中可能存在的缓冲区溢出漏洞。在1164个公开的基准程序上进行的实验表明,该工具能够准确地识别出漏洞,没有产生误报,但存在约2.08%的漏报率,这意味着虽然总体表现优秀,但仍有少数漏洞可能被遗漏。
关键词涉及的模型检验是软件验证的一种技术,它通过建立程序执行的数学模型来检查是否满足特定的属性。在本例中,模型检验被用来检查缓冲区溢出的断言是否可满足,即是否存在满足溢出条件的执行路径。布尔可满足性问题(SAT)作为模型检验的一部分,是寻找模型中满足所有约束的解的关键步骤。
这项研究提供了一种基于SAT的高效和准确的C程序缓冲区溢出检测方法,有助于提高软件安全性,减少因缓冲区溢出导致的潜在风险。未来的研究可能关注于优化工具以降低漏报率,或者将这种方法扩展到其他编程语言和更复杂的漏洞类型。
2024-06-27 上传
点击了解资源详情
2023-01-12 上传
2023-02-14 上传
2023-01-28 上传
2023-07-27 上传
2023-05-22 上传
2023-05-24 上传
点击了解资源详情
weixin_38627826
- 粉丝: 5
- 资源: 939
最新资源
- 前端协作项目:发布猜图游戏功能与待修复事项
- Spring框架REST服务开发实践指南
- ALU课设实现基础与高级运算功能
- 深入了解STK:C++音频信号处理综合工具套件
- 华中科技大学电信学院软件无线电实验资料汇总
- CGSN数据解析与集成验证工具集:Python和Shell脚本
- Java实现的远程视频会议系统开发教程
- Change-OEM: 用Java修改Windows OEM信息与Logo
- cmnd:文本到远程API的桥接平台开发
- 解决BIOS刷写错误28:PRR.exe的应用与效果
- 深度学习对抗攻击库:adversarial_robustness_toolbox 1.10.0
- Win7系统CP2102驱动下载与安装指南
- 深入理解Java中的函数式编程技巧
- GY-906 MLX90614ESF传感器模块温度采集应用资料
- Adversarial Robustness Toolbox 1.15.1 工具包安装教程
- GNU Radio的供应商中立SDR开发包:gr-sdr介绍