乐趣区

关于后端:跨文件跨函数能力是什么和污点分析能力有什么关系

HDC 期间可参加华为开发者大会 Check 新人抽奖流动,流动链接在文末。无线鼠标等快来参加


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

那么顾名思义,跨文件能力指的就是代码查看服务可能剖析不同源文件之间的关系,例如头文件的援用,全局变量的定义和应用,内部函数的申明和调用等。这种能力绝对应的,能够帮忙用户检测出头文件缺失,全局变量抵触,内部函数未定义等问题。

跨函数能力则是指代码查看可能剖析同一源文件内或不同源文件中,各个函数之间的关系,例如函数的参数传递,返回值解决,异样抛出和捕捉等。这种能力绝对应的,能够帮忙用户检测出参数类型不匹配,返回值未应用,异样未解决等问题。

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

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

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

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

上述这些办法都是跨文件,跨函数能力的重要组成部分,它们能够互相联合或与其余技术相互配合,从而进步程序剖析的效率和准确度。


抽奖流动链接:https://bbs.huaweicloud.com/forum/thread-0228123477957050003-1-1.html

退出移动版