程序中查找安全漏洞并验证是否符合防御性编程规则的工具 BLAST C http://mtc.epfl.ch/software-tools/blast/ Windows、 Linux C程序的软件模型检查器 Frama-C
TrustInSoft 利用 Frama-C 以证明 PolarSSL 中不存在一系列通用缺陷列表(CWE)中的类,它现在称为 mbed TLS [Bakker14, Regehr15]。 Ourghanlian 比较了 PolySpace 验证器、Frama-C 和 Astrée 的应用以评估核电站中的安全关键软件 [Ourghanlian14]。 其他提供了具有良好文档的转换格式的编译器包括 Frama-C [FramaC] 和 ROSE 编译器基础设施 [Rose16]。 现代编译器框架,例如 gcc、Clang 和 Frama-C,使得编写新的插件变得简单。更进一步地,插件通常被允许更新某种 AST 或者中间形式,由此允许插件使得它们的分析结果对于其他插件可用。 2.3.5 成熟度水平 大多数常用的编译器,诸如 gcc、Clang 和 Frama-C,提供了添加用于处理和更新 AST 和 IR 表示的插件的内建支持。
使用C的工具或是注解包括Microsoft’s SAL、splint、Deputy、Oink/CQual++、cqual、和Frama-C ANSI/ISO C。 一个有趣的格式化方法工具套件是Toccata,它结合了Frama-C和Why3,以及许多自动化和互助工具。通过组合这些不同的工具来证明程序的正确,在比以前使用更少的努力。
数据流分析工具与应用 Frama-C、Clang Static Analyzer等工具使用 漏洞自动化发现 敏感信息泄露检测 缓冲区溢出和内存错误分析 数据流分析能够有效识别程序中的数据处理逻辑,发现潜在的数据验证问题和内存安全漏洞
C有大量围绕它的工具,比如frama-c和其他分析你的代码的工具,或者compcert编译器。虽然Rust有很多用于普通情况的工具,但对于更多的小众事物来说,它很难超越50年以上的生态系统。
通过抽象程序语义进行静态分析 - **符号执行**:使用符号值代替具体值执行程序 **形式化验证工具**: - **Coq**:交互式定理证明助手 - **SPARK**:用于Ada程序的形式化验证工具集 - **Frama-C
例如,Frama-C 工具允许您查找 C 语言程序中的常见运行时错误和断言违规,包括缓冲区溢出、由于悬空或空指针导致的分段错误以及除零。