CERT C和CERT C ++

嵌入式软件的安全编码标准

证书®C和CERT c++编码标准是C和c++语言的安全编码实践。嵌入式软件的安全漏洞增加了来自恶意参与者的攻击机会。这些攻击注入恶意软件,窃取信息,或执行其他未经授权的任务。安全编码实践可以插入这些漏洞,有效地减少攻击的表面。

为什么CERT C对于嵌入式系统很重要?

嵌入式系统在编程语言中使用手写或生成的代码,例如C.虽然这种语言允许低级操作,如直接内存访问,所关联的安全风险也更高。如果攻击者获得系统的控制,后果可能是灾难性的。

C语言中的某些代码构造引入了安全漏洞。恶意行为者可以利用这些漏洞进行代码注入、缓冲区溢出、弧线注入等操作。

举个简单的例子:

#define size100 100 extern int tab [size100];int查找(int n,int aflag){if(!aflag && n 
            

查找函数有一个明显的缓冲区溢出漏洞,因为参数n在用作数组索引之前没有检查负值。负值可能导致数组索引越界、暴露受限信息或允许修改受限内存位置的内容。缓冲区溢出还可能引入恶意代码,从而改变执行过程,并对系统的功能安全产生不利影响。

CERT C规则和建议通过消除嵌入式软件中的某些易受攻击的代码结构来帮助降低这种风险。CERT C特别关注C语言的安全编码,但组织也在使用CWE.ISO / IEC TS 17961MISRA®C:2012修正案1以及其他标准,或制定自己的安全编码标准。CERT C标准由由Carnegie Mellon University附属的软件工程研究所(SEI)管理的基于社区的开发过程制定。证书C指南可用CERT安全编码wiki。为C ++语言开发了类似的标准CERT C ++。

如何确保符合CERT C?

CERT C指南以规则和建议的形式编写。指南被标记为:

  • 规则如果违反最可能导致缺陷,如果一致性可以通过自动或手工检查代码而不需要额外的假设来建立。例如,ARR30-C.(“不要形成或使用越界指针或数组下标”)是一条规则。
  • 推荐如果一致性提高了软件系统的安全性和安全性,但违规行为不一定会导致缺陷。例如,ARR02-C.(“显式指定数组界限,即使初始化程序隐含地定义)是一个推荐。

可以手动检查CERT C规则,但看几万,有时数百万的规则违规行为往往是不实际的。因此,证书C建议使用静态代码分析确保遵从性的工具。

通常,静态代码分析工具检查与安全相关的缺陷,例如受污染的数据,以及潜在的软件弱点,例如静态和动态存储器缺陷,数值缺陷和数据流缺陷。许多这些缺陷来自违反CERT C规则。因此,静态分析工具可以自动检查证书C规则违规。

检查CERT C遵守PolySpace®静态代码分析工具

Polyspace Bug Finder™是一个静态代码分析工具,支持CERT C安全编码标准开箱即用。金宝app使用PolySpace Bug Finder,开发人员或优质工程师只需选择“全部或选择CERT C规则”,并在不执行任何其他配置的情况下查找违规。

例如,在前面显示的代码片段中,Polyspace Bug Finder通过检测数组访问越界或缓冲区溢出缺陷,发现违反CERT C规则ARR30-C(“不要形成或使用越界指针或数组下标”)。此违规将与规则信息、代码中的位置以及可能的风险和修复一起报告。

使用PolySpace Bug Finder检测CERT C违规。

除了支持几乎所有证书C规则和许金宝app多证书C的建议外,PolySpace Bug Finder还支持相关的编码标准,如CWE,ISO / IEC TS 17961,Misra C:2012修正案1,以及Cert C ++编码标准的重要部分。

Polyspace代码验证™,可以使用额外的检查层。当PolySpace Bug Finder报告违规时,您可以运行PolySpace代码先驱,以彻底检查软件中是否存在其他此类违规行为。例如,假设您通过检查如下负值的数组索引来修复先前的违规:

#define size100 100 extern int tab [size100];int查找(int n,int aflag){if(aflag &&(n <0 || n> = size100))return -1;返回标签[n];}

这是解决问题吗?您可以运行PolySpace Bug Finder,并查看规则ARR30-C仍违反。为了进一步洞察力,您可以运行PolySpace代码先驱。随着较深的分析,您认为取决于价值一只旗,n的值可能根本不受限制,并且仍有可能存在界限数组索引。然后,您可以重新编写代码,直到PolySpace代码先生证明没有界限索引,如绿色复选标记所示。

使用Polyspace代码验证器进行越界数组索引检查。

总之,您可以使用Polyspace Bug Finder自动检查几乎所有CERT C规则和大量CERT C建议。您可以使用Polyspace Code Prover进一步了解问题,对于特定的规则,全面检查代码并证明这些问题不存在。

了解更多有关Polyspace产品的嵌入式安全功能。下载188bet金宝搏

也可以看看:静态分析验证嵌入式系统软件质量目标软件质量保证