代码审查领域所面临的瓶颈分析

2023-10-30

      代码审查是检查代码中存在缺陷的重要手段,通常分为两阶段进行,一个阶段在代码解析阶段进行,主要应用词法分析、语法分析以及控制流分析等技术检测同数据传递无关的代码缺陷,另外一个阶段是在代码解析后进行,主要应用数据相关路径遍历等技术检测同数据相关的代码缺陷。同数据传递无关的代码缺陷检测技术已经非常成熟,而同数据传递相关检测技术在现阶段却进展缓慢,主要原因是数据相关路径遍历技术仍不成熟。

       对于缓冲区溢出、越界访问、sql注入、路径注入等代码缺陷,通常需要应用数据相关路径遍历技术。数据相关路径遍历在遍历过程中除了要结合路径的自有属性(比如来源,去向等)进行分析外,还要对路径所途径的数据进行处理并分析,而且,路径的自有属性可能会受到途径数据的影响。相比较而言,数据相关路径遍历能够在静态的情况下对代码运行进行抽象模拟,因而能够对代码进行更深层次的分析。

      理论上,完全路径遍历才能够确保代码安全性分析的准确性和完整性。完全路径遍历有两个层面的含义:一个层面是指单条路径中的所有节点都准确遍历;另外一个层面是指被分析代码中的所有路径都准确遍历。完全路径遍历的前提不少于以下几个:

  • 路径总数明确
  • 路径总数在测试资源(内存、硬盘、时间等)的允许范围内
  • 路径的长度在测试资源(内存、硬盘、时间等)的允许范围内
  • 具备数据相关路径遍历技术能力

        对于数据相关路径遍历来说,尽管在被分析代码结构相对简单的时候,能够实现完全的路径遍历,但对于复杂软件来说,被分析代码中往往会存在循环、递归、并发、异常处理等代码结构,而这些代码结构可能会导致路径过长、海量路径数、抽象路径数、未知路径数等情形的出现,这就使得完全路径遍历非常困难。进而影响软件代码安全性分析的正确性及完整性,导致相应的漏报及误报。  

        同这个问题相对应,在代码审查领域,对于数据相关路径遍历的研究的重要内容之一就是尽量扩大完全路径遍历的适用范围。具体的说就是从能够准确处理的特殊代码结构中,挖掘出那些能够准确处理以至于不对完全路径遍历造成任何不良影响的代码结构类型,并研发应用于自动代码审查工具中的相应的处理技术,进而增强代码审查能力。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

代码审查领域所面临的瓶颈分析 的相关文章

  • jenkins安装pmd对代码进行静态分析

    1 在Jenkins的插件管理中 安装PMD Plugin插件 2 在被编译的代码中 增加如下配置 1 顶级pom中 在dependencyManagement中增加对PMD插件的依赖
  • 安全工具箱必备技术之静态分析安全测试(SAST)

    有几种技术可以识别软件和系统的漏洞 聪明的组织把它们放在他们的 安全工具箱 中 并使用各种测试工具的组合 包括 静态分析安全测试 SAST 动态分析安全测试 DAST 源成分分析 SCA 漏洞扫描器 渗透测试 通过自动化工具提高安全性的动机
  • lecture1 Introduction-笔记

    本文参考了该作者的一些图解和见解 https zhuanlan zhihu com p 128156349 由于疫情原因 偶然间学习了南大的软件分析 Static Analysis 课程 后面会用SA来替代Static Analysis 因
  • CWE-通用弱点枚举简介

    对于软件来说 安全是航空 航天 军工 电力 金融等关键行业极为重视的特性之一 因此 保证软件尽量安全是软件研发人员的重要责任 可以说 软件安全漏洞是软件研发者的一大死敌 古语有云 知彼知己 百战不殆 要想取得战争的胜利 就要尽可能充分认识软
  • 南京大学《软件分析》笔记01 - 静态分析的基本概念

    Rice s Theorem Any non trivial property of the behavior of programs in a r e language is undecidable r e recursively enu
  • 软件测试之检查产品说明书

    场景 学习 软件测试 第4章节 检查产品说明书 关于黑盒测试和白盒测试 黑盒测试只需要知道软件要做什么 而无法看到盒子里的软件是怎么运行的 只要进行一些输入 然后输出结果 目前我们做的基本上是这种测试 我们知道输入和预计输出 只要把按操作输
  • 白盒测试之静态检查

    态检查一般是检查编码标准规范 错误列表 编码规范往往团队 会根据自己的经验和风格进行设置一些规范 现在很多IDE工具都会 在编辑代码的时候实时的提醒是否符合代码风格 错误列表 一般 是代码潜在的bug 由于某种代码写法虽然没有语法错误 但是
  • Spring Boot+Mybatis实现增删改查接口开发+测试(超详细建议收藏)

    前言 Java也是测试必知必会的内容 特别是现在类似spring boot 等Java框架更是成为主流 之前实现的图书增删改查是用Python实现的 没看过的请移步 Flask mysql 实现增删改查接口开发 测试 图文教程附源码 本次给
  • 软件测试实验二 白盒测试

    一 实验目的 1 掌握等逻辑覆盖测试法 2 掌握基本路径测试法 3 掌握基于Junit的单元测试 二 实验内容 1 为以下判断等级的程序段设计一组测试用例 要求分别满足语句覆盖 判定覆盖 条件覆盖 判断 条件覆盖 条件组合覆盖 public
  • 【软件分析/静态分析】学习笔记01——Introduction

    课程链接 李樾老师和谭天老师的 南京大学 软件分析 课程01 Introduction 哔哩哔哩 bilibili 目录 一 静态程序分析介绍 1 1 PL and Static Analysis 程序语言和静态分析 1 2 为什么要学 S
  • 白盒测试流程图及测试用例设计(软件测试实验报告)

    白盒测试流程图及测试用例设计 1 课程设计目的 1 理解白盒测试原理 2 绘制白盒测试流程图 2 课程设计方法 1 绘制流程图 2 设计测试用例 3 课程设计内容 题目 输入x和y值 首先判断x和y是否为正数 如果是正数 那么计算两者的数值
  • 3分钟学会在C ++中以编程方式合并Excel工作表中的单元格

    合并和取消合并单元格是Microsoft Excel的一项简单且常用功能 合并单元格可能会在某些情况下很有用 例如 当工作表中有多个列共享相同的标题时 可以合并列上方的单元格以使其具有共同的标题 如果不再需要合并的单元格 则可以轻松地取消合
  • 软件测试复习(5)----基本路径测试中的细节

    在做基本路径测试的题中又有了新的发现 希望大家可以注意 另外 如果你是第一次看 可以先看一下我之前讲的基本路径方法的步骤 先看一下题目 我们不讲如何做这道题 只是讲一下我通过这道题关于知识点新的理解 题目 答案 知识点 细节 逻辑与 逻辑或
  • (二)动态白盒测试(含逻辑覆盖例子)

    一 动态白盒测试 重点 1 概念 动态 测试运行中的程序 白盒 洞察盒子里面 检查代码并观察运行状况 生成测试数据 分析测试结果的工作量大 使开展测试工作费时 费力 费人 二 动态白盒测试常用的测试用例方法 a 逻辑覆盖 语句覆盖 分支 判
  • 白盒测试(程序流程图)

    白盒测试又称结构测试 透明盒测试 逻辑驱动测试或基于 代码的测试 白盒测试是一种 测试用例设计方法 盒子指的是被测试的 软件 白盒指的是盒子是可视的 你清楚盒子内部的东西以及里面是如何运作的 白盒 法全面了解程序内部逻辑结构 对所有逻辑路径
  • Linux安装Phabricator

    背景 公司管理需要 为开发团队寻找一款代码审查工具 最终选择了Phabricator ubuntu14 04 LTS 安装 使用官网上提供的install sh即可 参考链接 https secure phabricator com div
  • [网络安全自学篇] 八十八.基于机器学习的恶意代码检测技术详解

    这是作者网络安全自学教程系列 主要是关于安全工具和实践操作的在线笔记 特分享出来与博友们学习 希望您喜欢 一起进步 前文分享了传统的恶意代码检测技术 包括恶意代码检测的对象和策略 特征值检测技术 校验和检测技术 启发式扫描技术 虚拟机检测技
  • 软件测试—第六章白盒测试基本路径测试法

    一 基本路径法 1 为什么使用基本路径法 一是降低了测试用例设计的难度 只要搞清了各种流程 就可以设计出高质量的测试用例来 而不用太多测试方面的经验 二是在测试时间较紧的情况下 可以有的放矢的选择测试用例 而不用完全根据经验来取舍 2 什么
  • Gogs使用详解

    Gogs使用介绍 Gogs是一款类似Github 国内有码市 的开源文件 代码管理系统 基于Git 目前功能基本介绍 远程代码仓库管理 代码仓库权限分配 管理 团队管理 代码审查 1 注册 2 基本功能介绍 主面板说明 图中 表示自己个人账
  • 黑盒测试与白盒测试的定义与区别

    白盒测试 是指实际运行被测程序 通过程序的源代码进行测试而不使用用户界面 这种类型的测试需要从代码句法发现内部代码在算法 溢出 路径和条件等方面的缺点或者错误 进而加以修正 黑盒测试 又称功能测试 数据驱动测试或基于规格说明的测试 是通过使

随机推荐

  • 信息学奥赛一本通 1176:谁考了第k名

    题目链接 http ybt ssoier cn 8088 problem show php pid 1176 include
  • Operator ‘+‘ cannot be applied to ‘java.lang.String‘, ‘void‘的解决方法

    刚开始报下图错 是因为我在另一个类中定义有返回值void的方法 如图二 一个想要调用另一个的方法 且是字符串的类型的需要将void换成string 并将输出语句换成return 如图 记得最后一行的分号去掉
  • python循环写入excel中的不同sheet_python实现跨excel的工作表sheet之间的复制方法

    python 将test1的Sheet1通过 跨文件 复制到test2的Sheet2里面 包括谷歌没有能搜出这种问题答案 我们贴出代码 我们加载openpyxl这个包来解决 from openpyxl import load workboo
  • Java项目数据脱敏常用技术及Jasypt实战

    数据脱敏在Java项目中是一项非常重要的任务 它可以保护敏感数据 同时符合法规和隐私保护要求 在本篇博客中 我们将介绍数据脱敏的概念以及在Java项目中常用的开源框架和工具的实战应用 什么是数据脱敏 数据脱敏是指将敏感数据进行处理 使其在保
  • styled-components的配置和使用

    在react中 正常的给组件引入css文件 该css文件会直接作用于全局 使用styled components可以有效控制好css作用域 1 安装 yarn add styled components 2 配置并设置全局样式 新建一个js
  • Java实现CNN

    Java实现CNN 算法介绍 CNN的优势 卷积操作 池化操作 网络结构 训练过程 前向传播 反向传播 代码实现 数据模型类Dataset 矩阵尺寸类Size 核心操作类MathUtils Operator OperatorOnTwo接口下
  • 零基础学习Vue: 第21课 Vue 单向数据流父组件的属性值子组件如何更改:

    零基础学习Vue 第21课 Vue定义子组件template的常见3种写法 单向数据流原理 子组件不能直接修改父组件中传递的数据 如需间接改变父组件传递的数据 解决方法 可以在子组件data选项中存储父组件传递的数据之后修改子组件中的数据
  • 解决httpServletRequest.getParameter获取不到参数

    用httpServletRequest getParameter接收post请求参数 发送端content Type必须设置为application x www form urlencoded 否则会接收不到 RequestMapping
  • go语言各种hash哈希算法使用汇总(超详细代码)

    目录 前言 一 首先以md4为例 一 16进制字符串的md4 二 字符串的md4 三 16进制字符串 字符串封装 二 md4 md5 sha1 ripemd160 sha256 sha512 一 导包 二 单个使用 三 md4 md5 sh
  • 使用jsoup选择器来查找元素

    一 用途 使用jsoup解析网页 抓取手机型号和系统信息 二 获取方式 例子 获取终端制造商链接列表 return public List
  • 话题作文汇总

    一 前言 在备考的过程中 研读和学习了多篇英语话题作文 在此将其记录下来 以便加深印象 二 作文列表 Public Role Model s Rights Internet Kills Conversation Generation Gap
  • form表单的对象

    这个是关于表单 表单在HTML中是很重要的一个部分 关于表单的使用 里面的属性和方法不算很多 这里就介绍一下表单的信息 用法 document forms 是一个数组 包含了文档中所有的表单
  • Python学习之------retry(异常重试)

    在做数据抓取的时候 经常遇到由于网络问题导致的程序保存 先前只是记录了错误内容 并对错误内容进行后期处理 原先的流程 def crawl page url pass def log error url pass url try crawl
  • cocos2dx opengl入门系列四-显示图片

    运行环境 mac 10 12 2 xcode Version 8 2 1 cocos2dx x 3 13 1 代码 新建cocos2dx项目 具体操作官网有教程 新建好后 新建Test cpp 代码如下 Test cpp Texture C
  • Shell脚本编程--grep命令详解

    grep简介 grep global search regular expression RE and print out the line 全面搜索正则表达式并把行打印出来 是一种强大的文本搜索工具 它能使用正则表达式搜索文本 并把匹配的
  • window服务器端口短时间使用完导致oracle监听报错

    接到操作人员反馈系统无法登陆 然后连接到服务器 引用服务器检查服务的cpu 内存 磁盘资源都正常 从应用服务器远程数据库服务器发现不能远程 从应用服务器连接数据库连接报TNS超时 怀疑是数据库服务器的问题 从阿里云的控制台连接到数据库服务器
  • 二叉树学习笔记之B树、B+树、B*树

    动态查找树主要有二叉查找树 Binary Search Tree 平衡二叉查找树 Balanced Binary Search Tree 红黑树 Red Black Tree 都是典型的二叉查找树结构 查找的时间复杂度 O log2 N 与
  • Recyclerview列表item设置成等宽高的正方形,通过计算宽度动态赋值

    首先是效果图 然后是关键代码 onBindViewHolder 给Item元素赋值 Override public void onBindViewHolder ViewHolder holder int position 获取内容layou
  • hdu 1028 Ignatius and the Princess III

    Problem acm split hdu edu cn showproblem php pid 1028 Reference 母函数 Generating function 详解 TankyWoo ACM 母函数专题 Meaning 将一
  • 代码审查领域所面临的瓶颈分析

    代码审查是检查代码中存在缺陷的重要手段 通常分为两阶段进行 一个阶段在代码解析阶段进行 主要应用词法分析 语法分析以及控制流分析等技术检测同数据传递无关的代码缺陷 另外一个阶段是在代码解析后进行 主要应用数据相关路径遍历等技术检测同数据相关