嵌入式系统安全性:C/C++编程与SAST静态代码分析在工业4.0及物联网时代的新实践

描述

 

工业4.0时代,您需要了解的嵌入式系统网络安全知识


当前,技术的发展比以往任何时候都要迅猛,每天都有针对各种难以想象的任务的新产品和新功能问世。现在不仅仅关乎移动应用和计算机了,而是关乎嵌入式系统和物联网(IoT)设备。无论是在我们的日常生活,还是工业自动化等行业中,这些设备都已经变得非常普遍。

 

这些设备似乎无处不在,运行的软件覆盖了几乎所有的东西:婴儿监视器、扬声器、健身追踪器、监控摄像头、恒温器和汽车等,不一而足。

 

关于这个新世界,建筑师、麻省理工学院教授和作家Nicholas Negroponte表示:“就像空气和饮用水一样,数字化只有在缺失时才会被注意到,而不是在其存在时。” 就Negroponte的观点而言,我们已经被数字技术所包围,我们甚至没有注意到它,直到它消失或成为一个安全问题。

 

我们所知道的物联网设备(包括嵌入式系统)通常配备了处理器、传感器和其他通过互联网连接的功能。当说到嵌入式系统时,我们指的是在更大规模的数字、机械或电气系统中执行特定功能的处理器。嵌入式系统可以是物联网设备中的固件,也可以是汽车、机器人、信用卡读卡器、手机、小工具、网络设备、医疗设备或其他任何设备中的电子控制单元(ECU)。

 

对于企业而言,工业4.0正在改变产品的制造和分销方式。随着促进生产力和创新的嵌入式系统中增加了更多组件,物联网安全和工业4.0网络安全面临的挑战也与日俱增。再加上云计算、分析、机器学习和人工智能等技术,工业4.0的环境变得更加负责——不仅涉及多个设备和系统,而且分布在多个地点和贡献者之间。

 

物联网和嵌入式系统的安全管理不能是一个孤立的过程。相反,组织和开发团队应着重关注物联网所依赖的软件的安全,因为软件负责每个设备的性能,并促进设备和系统之间的通信。

 

C和C++为何对嵌入式系统软件安全至关重要?


由于尺寸和成本的限制,嵌入式系统中的软件在处理、内存和电源方面只能使用有限的计算机资源。由于需要轻量级的软件,像C和C++这样的编程语言在嵌入式系统中占据主导地位,就像它们目前在运行大多数云服务器中的Linux内核上一样。虽然C++比C需要更多的计算资源,但更强大的微处理器的出现使C++成为全球数百万嵌入式系统的首选语言。

 

嵌入式系统中也使用Python等其他编程语言,但C和C++是主要选择。还有一种嵌入式C++(EC++),它是C++语言的一个子集,可通过完整C++语言的主要功能提供更大的空间和速度效率。现在的微处理器可以配备C++编译器,这使得嵌入式系统的编码工作变得更加容易。

 

嵌入式系统的编码与其他类型的应用程序不同。首先,你会受到资源限制,然后你必须设计容错功能、实时功能、可靠性,并且大多数情况下,不能有停机时间。但更重要的是,代码必须安全可靠。想想嵌入式系统和物联网设备在医疗保健和制药行业,或汽车和航空航天行业中的重要性。这种技术的缺失不仅会引起注意,而且如果不够安全,还将成为一个关键问题。

 

静态分析为何对嵌入式系统和物联网软件安全至关重要?


软件安全漏洞通常是在开发过程中引入的,因此在编码过程中尽早主动地发现漏洞,可以预防安全问题的产生。静态分析是确保源代码不出现可能导致漏洞和攻击的缺陷的重要工具。静态分析也称为静态应用程序安全测试(SAST),它可以扫描应用程序的源代码,包括用于嵌入式系统和工业4.0网络安全应用的代码。这种高度专业化的代码扫描可根据所使用的相应编程语言和框架查找特定缺陷。静态分析工具(如Perforce Helix QAC 和 Klocwork)还会报告是否符合编码标准。

 

静态分析工具使开发和安全团队能够分析成千上万甚至数百万行的代码。它们根据规则和政策查找代码中的缺陷,并强制执行编码标准。最重要的是,静态分析工具已成为软件开发生命周期中不可或缺的一部分,并且是每次代码更改或新版本发布前都需要在源代码上运行的常规步骤。

 

随着组织越来越多地使用嵌入式系统和物联网,安全的重要性也随之提高,尤其是在各行各业的关键任务功能方面。通过静态分析发现安全缺陷,可以防止有缺陷设备的大规模生产,从而节省资金和维护公司声誉。

 

嵌入式设备的安全性在于减少漏洞的数量。漏洞的严重程度各不相同,严重程度高的漏洞被利用的风险更高。无论部署在何处,所有软件都存在几种常见的漏洞类型,例如,远程代码执行和跨站点脚本漏洞。在嵌入式系统和物联网设备中,漏洞大多与内存缓冲区溢出、资源泄漏、访问控制不当、加密问题和代码注入有关。这些是静态分析扫描在嵌入式系统中发现的一些最常见的嵌入式安全漏洞。

 

编码标准为何对嵌入式系统和工业4.0安全性至关重要?


如前所述,C和C++主要用于嵌入式系统。多年来,实施工业4.0和物联网的组织已经认识到所有代码中安全的重要性,尤其是对于嵌入式设备中的C 和 C++,因为失败的代价可能不仅仅是经济上的。为了帮助提高软件的安全性、可移植性、可靠性和可维护性,编码标准不断被创建和改进。静态分析除了在源代码中搜索缺陷和漏洞外,还可以应用编码标准中的规则和建议。这对于需要验证是否符合行业标准的组织尤其有用。嵌入式系统的常见编码标准示例包括 MISRA、AUTOSAR 和 CERT。

 

行业标准在解决工业4.0网络安全方面也发挥着作用:例如,IEC 62443 解决了自动化和控制系统中技术开发和运营的网络安全要求。该标准定义了一个安全的软件开发生命周期,包括设计、实施、验证、确认、缺陷管理和产品报废。

 

ISO 27001 等安全标准是一种信息安全标准,旨在确保制造工厂内使用的设备安全,为了达到它们的合规要求,通常需要使用特定的编码标准。即使在合规性之外,使用编码准则进行软件开发也被视为一种良好的实践(如上述IEC 62443所要求)。

 

在嵌入式系统中进行编码时,遵循编码标准,并将静态分析作为软件开发生命周期的一部分,将使我们的数字世界更加安全。正如之前所述,“就像空气和饮用水一样,数字化只有在缺失时才会被注意到”,在发生安全漏洞的情况下也是如此。

 

- END -

 

作者简介:Javier Perez,Perforce开源和安全首席布道师

Javier对技术和开源软件充满热情,是Perforce Software的开源和安全首席布道师。负责开源和应用安全产品组合的技术思想领导和宣传。

Javier从事应用程序开发、开源、云计算、应用程序安全、AI、SaaS和移动行业已有20多年,并有机会在世界各地的行业活动中发表演讲。Javier拥有计算机系统荣誉学位和工商管理硕士学位。

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分