C语言应用程序的静态漏洞检测

来源 :华中科技大学 | 被引量 : 0次 | 上传用户:liyan19821021
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
C语言是广泛使用的高级编程语言之一,其发展了30多年仍然有很强的生命力,由于其本身面向底层的特点,使得它存在可能被利用的安全漏洞。C程序漏洞有很大一部分是内存访问相关漏洞,而其中大多数是由C语言库函数引起的。另外还存在资源未关闭等漏洞。C语言一些特殊的语法增加了分析的复杂度,如强制和隐式类型转化、内存覆盖等。C语言中规定了不同的基本类型在做运算时需要进行类型提升,这个过程使得变量的值发生了改变。灵活的内存访问机制使得不同的程序变量表示的物理内存区域可能有重叠,如果对变量进行了写操作需要对其他同步更新。本文以静态检测的方式,检测C语言的安全漏洞。静态分析是在不执行源程序的情况下对代码进行安全检测的方式,它包含很多方面的技术,如控制流分析、数据流分析、常量传播和指针分析等。这些分析都是在中间表示的基础上进行的,通过对源程序进行词法分析、语法分析生成抽象语法树,然后遍历抽象语法树便得到程序的中间表示。基于界标推断的循环分析使得循环分析的速度更快,而基于双向数据流的循环分析因为考虑到了数据依赖关系使得范围更精确。流敏感和上下文敏感的指针分析效率低一些,但是精确度比较高。综合精确的循环分析和指针分析可以检测出更多的C语言漏洞。
其他文献
以太网光纤通道(FCoE,Fibre Channel over Ethernet)是一种新兴的存储区域网络协议。可将光纤通道协议帧封装在以太网帧内,通过增强型以太网进行传输,实现现有的传统局域网和存储
超分辨率重建技术是通过融合多帧同一场景的低分辨率图像得到一个更高分辨率、更清晰图像的技术,是图像增强的主要分支。但是现存算法仍存在着噪声鲁棒性不强的问题,算法难处理
随着信息技术的飞速发展和用户需求的不断增加,软件开发技术呈现出多样化的发展趋势,其中比较有代表性的编程语言是Java语言。Java语言的广泛应用,提高了软件的开发效率,但给查找
随着深亚微米集成电路系统的快速发展,人们对数字集成系统的需求也在不断提高,希望能在同一块硅片上实现更多的逻辑功能,由此可编程逻辑门陈列(FPGA)已逐渐成为集成电路设计
视频编解码一类的多媒体流计算不仅计算复杂度高,而且计算过程中需要进行密集数据访问。片上多级Cache可以缓解计算速度与数据存取速度之间的差距。但是,片上Cache空间通常非常
随着数据库技术和信息网络的快速发展,越来越多的数据被收集,发布和使用。一些基于互联网的企业也储存了很多相关的敏感隐私信息,这些信息一旦被泄漏,会给企业的发展带来严重的后
全文检索系统所面对的数据集通常是不断增长的大量文本集,为了及时处理新增的文档以满足用户的实时检索需求,高效的在线倒排索引更新策略显得尤为重要。现有的倒排索引更新策略
常见媒体类型包括文本、图形、音频和视频等,在越来越多的领域中人们不再满足于采取单一模态对事物进行描述而需要以多种媒体形式对事物进行描述或重现。以此为契机基于语义的
随着硬件技术的发展,嵌入式应用不断普及和深化。嵌入式软件的需求越来越大,复杂性也越来越高。在开发嵌入式软件的过程中,调试成为了不可或缺的重要阶段。嵌入式软件的调试时间
安全是铁路运输永恒的主题。铁路运输是危险品运输的主要方式之一。由于缺少对列车在途运输中各种状态的监测,当发生事故时不易被发现,对列车的安全运行和人们的生命财产安全