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

证书®C和CURT C++编码标准是C语言和C++语言的安全编码实践,嵌入式软件的安全漏洞增加了恶意软件攻击的可能性,这些攻击会导致恶意软件、窃取信息或执行其他未授权任务。安全编码实践会堵塞这些漏洞,有效地减少这些漏洞。攻击面。

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

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

C语言中的某些代码构造介绍了安全漏洞。恶意演员可以利用这些漏洞,并执行代码注入,缓冲区溢出和电弧注入等操作。

例如,以这个非常简单的案例为例:

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

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

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

我如何确保遵守证书C?

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

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

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

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

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

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

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

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

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

具有多空间码验证器™,可以使用额外的检查层。当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产品的嵌入式安全功能的更多信息。s manbetx 845

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

높은보안수준의임베디드소프트웨어만드는만드는7가지방법