【问题标题】:Can code audits be considered static analysis?代码审计可以被认为是静态分析吗?
【发布时间】:2015-11-05 20:18:38
【问题描述】:

当人们谈论静态分析时,他们通常会谈论质量指标和编程约定。似乎代码审计是不同的,因为它发现的是错误和安全漏洞。理论上,两者都是静态分析(代码审计是在不执行程序的情况下进行的,不是吗?使用 Findbugs、Coverity 等工具)。

那么,代码审计也是静态分析吗?

【问题讨论】:

    标签: code-analysis static-analysis static-code-analysis code-auditing


    【解决方案1】:

    Code audits 主要由人类完成(在一些工具的帮助下),就像任何其他类型的audits(例如financial audits)一样。 Code review 通常在开发团队内部完成,但代码审计通常由外部人员完成。

    静态source code analysis 由软件code analysis tools 完成,在实践中使用它们非常复杂(因此实际上分析软件工具需要其用户的帮助或专业知识和/或将提供false positives)。

    halting problem 是源代码分析的根本限制:没有工具可以静态检测每个无限循环程序(并且只能检测它们)。

    为了分析 C 或 C++ 代码,您可以考虑使用 MELT 自定义您的 GCC 编译器。或者使用Frama-C,可能通过在你的源代码中添加ACSL注解(有足够的注解,并且在一些有限类的C程序上,主要用于嵌入式应用程序,该工具将能够证明您的代码在规范方面表现良好)。

    但是有no silver bullet。编程很困难(即使使用工具)。

    【讨论】:

    • Coverity 或 Findbugs 等工具怎么样?
    • 这取决于你如何看待它。一个拥有无限智慧的神一样的人可能会以不同的方式进行代码审计......
    • 如果你能聘请上帝来审核你的代码,你可能会比我们大多数人做得更好。与此同时,我只能使用容易犯错的有限人类。
    • 关键是停止问题证明假设您向分析器提供了其自身的近似副本。你将如何用自己的近似副本来喂养人类大脑?我觉得对于人类审计员来说停止问题没有确切的含义,除非你准确地定义它。
    猜你喜欢
    • 1970-01-01
    • 2023-02-07
    • 2010-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-12
    相关资源
    最近更新 更多