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

摘要:

C语言是广泛使用的高级编程语言之一,其发展了30多年仍然有很强的生命力,由于其本身面向底层的特点,使得它存在可能被利用的安全漏洞。C程序漏洞有很大一部分是内存访问相关漏洞,而其中大多数是由C语言库函数引起的。另外还存在资源未关闭等漏洞。 C语言一些特殊的语法增加了分析的复杂度,如强制和隐式类型转化、内存覆盖等。C语言中规定了不同的基本类型在做运算时需要进行类型提升,这个过程使得变量的值发生了改变。灵活的内存访问机制使得不同的程序变量表示的物理内存区域可能有重叠,如果对变量进行了写操作需要对其他同步更新。 本文以静态检测的方式,检测C语言的安全漏洞。静态分析是在不执行源程序的情况下对代码进行安全检测的方式,它包含很多方面的技术,如控制流分析、数据流分析、常量传播和指针分析等。这些分析都是在中间表示的基础上进行的,通过对源程序进行词法分析、语法分析生成抽象语法树,然后遍历抽象语法树便得到程序的中间表示。基于界标推断的循环分析使得循环分析的速度更快,而基于双向数据流的循环分析因为考虑到了数据依赖关系使得范围更精确。流敏感和上下文敏感的指针分析效率低一些,但是精确度比较高。综合精确的循环分析和指针分析可以检测出更多的C语言漏洞。

展开

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值