技术发展比以往任何时候都要迅速,每天我们都能见到新产品和功能,它们可以完成各种难以想象的任务。这不仅仅是因为移动应用和计算机;而是因为嵌入式系统和物联网(IoT)设备,它们在我们的日常生活和工业自动化等行业中迅速变得司空见惯。


这些设备几乎靠软件运行着一切:婴儿监视器、扬声器、健身追踪器、安全摄像头、恒温器和车辆等。


关于这个新世界,建筑师、MIT教授和作家Nicholas 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所要求的,在软件开发期间使用编码指南也被认为是一种良好做法。


为嵌入式系统编码,遵循编码标准并将静态分析作为软件开发生命周期的一部分,将使我们的数字世界更加安全。


如果您想亲身体验为什么成千上万的开发者依赖Perforce静态分析工具,今天就注册免费试用。

➡️ 注册您的免费试用marketing@polelonk.com