源代码静态检测分析技术浅析
目前,基于源代码静态检测分析技术,运用越来越广,那么源代码安全检测的技术主要有哪些呢?下面我结合源代码静态分析的发展,技术特点,来分析四种相关技术:
- 数据流和模式匹配技术
- 符号执行的分析技术
- 抽象解释的分析方法
- 值流分析为主的分析方法
数据流和模式匹配分析技术早期静态分析工具经常采用的技术,包括达到定值分析、支配分析、活跃变量分析、静态单赋值技术等,这类分析技术的优点是效率高、算法复杂度低。但是这种分析技术最大的缺点是路径不敏感,无法实现跨函数分析,往往需要再借助函数内联、摘要技术等补充分析,导致复杂度增加。采用数据流分析的精度偏低,市场上Fortify SCA、Testbed、C++ test主要采用这种分析技术。
符号执行是将软件源代码中的变量的值采用抽象化符号形式表示,并模拟执行,分析中是基于路径敏感的。符号执行算法的复杂度会非常高,对于代码量比较大的软件会发生状态爆炸。为了做到精度与效率的折中,研究领域提出了很多改进,采用较多是Saturn,采用布尔可满足性的方式对缺陷进行计算求解,函数内是路径敏感分析,函数间采用摘要的方式分析。缺点是函数内检测精度还可以,但是跨函数分析精度较差。分析效率上,基本上可以实现10-100万行/小时。国外代码检测工具中Klocwork Insight、Coverity Prevent采用了符号执行技术。
以抽象解释为主的分析方法,会将被检测代码中的每一条语句的影响简单模型化为一个抽象及其的状态变化,使分析更简易,但是代价是丧失了一定程度上分析完备性。抽象解释本质上是在计算效率与精度之间取得平衡,通过损失部分计算精度以保证计算可行性,再通过多次迭代计算以增强计算精度的一种抽象逼近方法。抽象解释通过多面体、区间分析以及八面体技术实现。抽象解释为主的分析方法,主要缺陷是效率较低。代表性工具是Polyspace,虽然基本上不会出现漏报,但是对于1000行/小时的检测效率来说,很难在工程实践中运用。
以值流分析为主的分析方法,值流分析模型结合了控制流分析、数据流分析中的定值使用以及调用关系分析构建值流图。通过点与点之间的连线表达变量的定值使用关系,每个值流子图表达了某个变量到其值发生改变之前的生命周期。在值流模型基础上衍生出值依赖分析模型,通过结合指向分析、区间分析等方法,使程序模型能够更加精确地表达变量值之间的依赖关系,为缺陷检测提供了更为精化的模型,但是精度与效率还有提高的余地。FastCheck采用值流分析进行内存泄露检测。Saber采用全稀疏值流模型,在FastCheck基础上进行了改进,通过引入指向分析和修改影响分析技术,提高检测精度。国内有一款工具采用值依赖分析方法是北大博士团队主导研发CoBOT。
(完)
源代码静态检测分析技术浅析相关推荐
- 巨龙信息大数据建模与分析技术浅析
巨龙大数据建模与分析系统是厦门市巨龙信息科技有限公司研发的一款跨数据平台的数据挖掘.分析.建模的工具.面向各行各业在大数据建设过程的应用诉求,致力于构建智能数据体系,打造更便捷.更易用的大数据生产力平 ...
- 静态源代码安全检测工具比较
静态源代码安全检测工具比较 1. 概述 随着网络的飞速发展,各种网络应用不断成熟,各种开发技术层出不穷,上网已经成为人们日常生活中的一个重要组成部分.在享受互联网带来的各种方便之处的同时,安全问题也变 ...
- 思多普(SDAP)软件源代码检测分析平台
针对目前代码检测工具存在的数据无法大规模存储和利用.操作使用不便.存在误报和漏报.检测能力无法共享.国产化自主可控等问题.SDAP研发了一种软件检测分析平台,接入各种代码检测工具. 一,接入原理 SD ...
- 利用OWASP Benchmark V1.2基准对国内静态检测工具的测评分析
笔者一直从事于软件测试.软件安全方面工作,跟踪国内外软件测试工具的使用和效果.最近笔者接触了CoBOT源代码缺陷检测工具,想验证一下该工具的检测效果,于是下载了OWASP Benchmark 1.2基 ...
- 红外光谱技术在气体检测分析中的应用
灾害气体在环境中会带有独特的温度特征和光谱特征.利用红外高光谱探测手段能够有效的利用气体的温度信息和光谱信息,从而对气体进行甄别和检测.传统的高光谱一般指可见光近红外波段,传统高光谱是对地物目标的 ...
- 【智慧社区解决方案】视频智能检测与分析技术如何赋能社区智慧化建设?
一.行业背景 随着物联网.AI.大数据.5G.边缘计算.移动互联网等新兴技术的不断成熟和应用,"万物互联"的AIOT时代已经到来.社区作为汇聚科技社会人.房.车三大物联网时代最核心 ...
- AI视觉分析技术在路面裂缝坑洞检测识别中应用
1. 简介 伴随髙速发展的道路交通建设,普通公路及高速公路的养护及管理任务也随之而来.道路养护及管理已经愈发重视道路路面病害的监测和病害数据的釆集工作.近年来AI机器视觉检测识别算法的发 ...
- 随机森林c语言编程,一种基于随机森林的C语言源代码静态评分方法与流程
本发明涉及评分领域及机器学习领域,它特别涉及一种基于随机森林的c语言源代码静态评分的构建方法. 背景技术: c语言源代码静态评分是指对根据一定的题目描述做出解答的c语言源代码进行评分.目前,主要流行的 ...
- 基础网络爬虫(Web crawler)相关技术浅析
文章目录 前言 基本概念 Robots协议 基本原理 现状概况 爬虫软件 跨语言 Selenium Python urllib requests Scrapy Pyspider Java WebMag ...
最新文章
- 2021年大数据Kafka(十二):❤️Kafka配额限速机制❤️
- [备忘]几种即见即所得Web编辑器优缺点比较
- python使用os和shutil模块进行文件创建,删除,移动,复制,重命名
- PyTorch的Tensor(张量)
- 力扣190.颠倒二进制数
- ospf 指定dr_OSPF的基本配置及DR /BDR选举的实验
- HTML DOM 基础
- 如何创建一个注册表文件
- 【转】赢在中国---马云点评创业精选
- 在邮箱中用html写邮件
- 计算机发展前沿技术——医学领域的人工智能
- 纸牌游戏--小猫钓鱼
- Vijos 1464积木游戏
- 连接mysql数据库error 2003_连接mysql数据库error 2003
- 计算机自定义桌面设置在哪里设置,如何在windows10桌面设置自定义图片?查看方法...
- 欢迎 SphereEx 成为开源社年度白金伙伴
- JS下载PDF、图片时直接下载而不是预览
- 洛谷P1458 [USACO2.1]顺序的分数 Ordered Fractions
- 【imessage苹果推送】苹果相册共享imessgae推
- FPGA实现俄罗斯方块(二)