汽车开放系统架构(AUTomotive Open System Architecture) AUTOSAR于2003年确立,以应对汽车软件的爆炸式增长,为电子汽车架构定义了一个开放的行业标准。多年来,AUTOSAR不断发展,以满足新兴的汽车用例(如自动驾驶和车到一切(V2X)连接),从而创建了AUTOSAR自适应平台(图1)。
▲
尽管大多数安全关键型汽车软件仍然是用C语言编写的,但AUTOSAR自适应平台处理的系统的数量和复杂性不断增加,要求向C++过渡。C++不仅具有快速、轻量级和可移植的低抽象级别,而且支持面向对象编程和其他有用的机制来开发更大、更分布式的系统。
不幸的是,安全关键型C++编码标准的最后一项重要工作发生在大约10年前,当时发布了MISRA C++:2008。自那以后,C++语言取得了长足的进步,推出了几个新版本,这个行业也发生了变化,网络安全问题越来越被大家所重视。
因此,AUTOSAR最近更新了MISRA C++:2008和AUTOSAR C++ 14编码准则。AUTOSAR C++ 14采用了MISRA C++:2008的规则分类方法,同时也依赖于ISO/IEC 14882:2014标准来使C++实现现代化。
此外,AUTOSAR C++ 14提供了对其他C++标准(如CERT C++安全编码标准)的追踪能力。
▲
以预防为主的汽车软件安全规范CERT C++
CERT C++是卡内基梅隆大学软件工程学院(SEI)的产品,它为安全可靠地实现C++代码提供了一系列规则和建议。MISRA C++和AUTOSAR C++的开发主要侧重于功能安全(safety),而CERT C++指南则侧重于信息安全(Security),并以一种主动的方式进行开发。
诸如公共弱点枚举(CWE)和开放Web应用程序安全项目(OWASP)这样的信息安全标准主要是由相关组织按照严重和紧迫的漏洞列表驱动形成的规范,因此它们的本质是解决糟糕的编码实践问题,而不是糟糕的代码本身。
在这里,CERT C++和其他SEI安全编码标准首先努力减少易受攻击代码的产生。其中的第一步是风险评估框架,该框架为不符合给定规则或建议的代码提供评分标准。根据IEC 60812中定义的故障模式、影响和临界分析(FMECA),每个CERT C++规则或建议都被赋予优先级。如果代码的某个部分违反了CERT C++规则或建议,其严重程度、可能性和修复成本将按1到3的级别打分。
严重性 表示忽略规则的严重性,值从低(1)到高(3)不等
似然(Likelihood) 表示违规导致可利用漏洞的概率,值从不太可能(1)到可能(3)不等
补救成本 指使代码符合规则的成本,其值从高(1)到低(3)不等
对于给定的违规计算这三个值,将其分级为1级(12 - 27分),2级(6到9分),或3级(1 - 4分)缺陷(图2)。通过将单元测试集成到静态分析工具(如Parasoft C / C++Test),可以自动检测到这些问题。
▲
▲
“我喜欢SEI CERT安全编码标准的理由有好几个”,Parasoft的首席宣传官阿瑟•希肯(Arthur Hicken)表示,“首先,它更关注安全编码实践,而不仅仅是安全问题的症状——例如,总是验证输入是一种安全编码实践,而SQL注入是一种症状。CERT已经分析了哪些指导方针是最关键的,可以被很好地分析,然后将它们分成应该遵循的“规则”,以及不那么关键或不那么可靠的“建议”。这有助于迅速将静态分析结果精简到最关键的程度。”
“此外,CERT还创建了一个风险评估框架,该框架有助于进一步优先考虑特定指南的静态分析结果,考虑到指南固有的严重性、开发此类项目的难度以及补救成本,”Hicken继续说道。“有了这个,你就可以得到非常细的优先级,这可以帮助你专注于最重要的事情,而不是处理大量的静态分析违规。”
“CERT是预防。它更关注的是,如果这样写代码,能防止什么。推荐的编码是是C语言的一个更安全的子集,从而在这样的编码环境下产生更安全可靠的代码。
最新版本Parasoft C / C++Test集成了一个安全仪表板SEI CERT C合规指南,提供可视化的面板以及深入探究特定问题的视图(图3)。兼容ISO 26262的Parasoft C/ C++测试版本还包括对AUTOSAR C++ 14标准的支持,以及与其他编译器和IDE(如Texas Instruments的Code Composer Studio)的集成。
▲
汽车软件的成功取决于功能安全和信息安全
到目前为止,我们都知道现代高端汽车是由大约1亿行代码驱动的。这比Facebook、大型强子对撞机,甚至波音787的代码量还要多。随着汽车变得更加自动化和联网化,它们的软件的代码只会越来越多。
AUTOSAR C++ 14等指南将符合功能安全理论的C++编码实践引入编码过程,支持新兴的汽车应用程序。然而,AUTOSAR的一些高级功能带来了额外的信息安全问题。一种既考虑信息安全又考虑功能安全的开发心态和工具对汽车行业的持续发展至关重要。
Hicken说:“保护无bug软件比保护有bug的软件容易得多。”80%的安全漏洞也是质量问题。CERT是一个强大的工具,因为它处理的是工程问题,而不是结果。