解决安全- CERT C符合多空间静态分析

作者:Ram Cherukuri, Fred Noto, Alexandre Langenieux

什么是CERT C?

CERT C是一套针对软件开发人员的指导方针,用于C语言的安全编码。它是在CERT社区wiki上按照基于社区的开发过程开发的,第一版于2008年发布,第二版于2014年发布。

例如,准则有助于消除具有未定义行为的构造,这些行为可能导致不确定的运行时行为并暴露安全性弱点。这对MISRA来说很熟悉,不是吗?

由于两条指南都旨在解决潜在的非叛定行为,而且出现了差异,因为屠杀CO专注于安全性。

请参考以下内容CERT C wiki部分对MISRA C、CERT C、CWE等各种指南进行比较和适用性。

CERT C指南以规则和建议的形式编写,类似于对MISRA C编码规则的更新,即MISRA-C: 2012。用于将指导方针标识为CERT C规则的主要标准是:确定指导方针是否静态强制执行。这些规则也可以手动检查,但这是不实际的,因此CERT C建议使用静态分析工具。此外,还有一个为违规行为辩护的偏差机制。

使用PolySpace遵守CERT C.

静态分析工具由于自动化作为开发和构建工具链的一部分,除了上述原因之外,可以大大简化了与上述原因的遵守情况。

此外,Polyspace Bug Finder除了可以检测静态和动态内存缺陷、数值和数据流缺陷等底层软件缺陷外,还可以检测多个与安全相关的缺陷,如污染数据。这些潜在的缺陷是安全漏洞的根本原因。

未初始化的指针违反了CERT C规则EXP33-C

查看完整的类别列表Polyspace Bug Finder缺陷检查

这些bug查找器缺陷已经映射到CERT C规则(如上所示),允许用户识别哪些规则被违反了。然后可以审查这些违规行为,以评估它们对安全的影响。例如,您可以根据严重程度、利用的可能性和补救成本,使用给予每个规则的评分优先级。

CERT C规则的优先级和级别

除了证书C规则外,PolySpace还可以检查是否符合某些证书C的建议,利用其分析引擎的深度语义分析功能。

PolySpace Code Prover还可以证明CERT C规则的子集永远不会在您申请的任何运行时间条件下违反;这是通过验证运行时行为而没有任何假否定的。这很重要,因为错误的否定意味着未能在代码中报告实际缺陷(通常被视为最严重的分析错误),并且可以将用户留出虚假的安全感。

缓冲区溢出违反了CERT C规则ARR30-C

有关之间的映射,请参阅下面的文档链接Polyspace检查、CERT C规则和建议

要了解更多关于Polyspace产品在嵌入式安全领域的功能,s manbetx 845联系作者