跨文件,跨函数能力是什么?和污点分析能力有什么关系?

举报
gentle_zhou 发表于 2023/05/28 23:57:54 2023/05/28
【摘要】 跨文件,跨函数能力是指SAST代码检查服务能够分析不同文件或函数之间数据流和控制流,从而发现更深层次问题的能力。

跨文件,跨函数能力是指SAST代码检查服务能够分析不同文件或函数之间数据流和控制流,从而发现更深层次问题的能力。这种能力对于SAST代码检查非常重要,可以深度的发现代码中的安全漏洞,因为很多问题并非局限在单个文件或单个函数内部,而是会涉及到多个模块之间的交互和调用。

那么顾名思义,跨文件能力指的就是代码检查服务能够分析不同源文件之间的关系,例如头文件的引用,全局变量的定义和使用,外部函数的声明和调用等。这种能力相对应的,可以帮助用户检测出头文件缺失,全局变量冲突,外部函数未定义等问题。

跨函数能力则是指代码检查能够分析同一源文件内或不同源文件中,各个函数之间的关系,例如函数的参数传递,返回值处理,异常抛出和捕获等。这种能力相对应的,可以帮助用户检测出参数类型不匹配,返回值未使用,异常未处理等问题。

至于污点分析能力,则是实现跨文件,跨函数能力的一种方式。

污点分析能力是用于识别和跟踪应用程序中的输入和输出数据,以及与其相关联的敏感信息,检测这些数据在整个处理过程中是否被篡改与污染,从而发现潜在的安全漏洞。具体介绍也可以查看我先前这篇文章《污点分析是什么神奇的代码检查技术?》

但要实现跨文件,跨函数能力,还有别的的方法。我这里再举几个例子:

  • 符号执行,可以通过使用抽象的符号来代替具体值,用于模拟程序的执行。这种能力可以保证每次遇到分支语句时,该抽象符号可以探索每一个分支, 将分支条件加入到相应的路径约束中;若约束可解,则说明该路径是可达的。符号执行的目的是尽可能多地探索更多的路径,并生成相应的输入数据,从而创建高覆盖率的测试套件或发现程序中的缺陷。
  • 抽象解释,可以通过对程序状态空间进行抽象化和近似化,从而得到程序行为的一种方法。抽象解释的目的是在保证程序语义不变的前提下,尽可能的简化程序分析的复杂度,并提供程序性质的证明或反例。
  • 数据流分析,可以通过对程序中变量或表达式在不同位置之间的信息传递来分析,从而得到程序行为的一种方法。数据流分析的目的是在保证程序语义不丢失的前提下,优化程序性能或发现程序错误。(注:污点分析可以说是数据流分析技术的其中一种方式)

上述这些方法都是跨文件,跨函数能力的重要组成部分,它们可以相互结合或与其他技术相互配合,从而提高程序分析的效率和准确度。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。