物联网时代,如何保障嵌入式系统安全?

来源:Perforce      作者:龙智      发布时间:2022-05-24

微信图片 20220524182024

关于嵌入式系统中的软件安全和防范, 你需要知道的

技术与以往任何时候相比都更加蓬勃发展,每天都会为之前无法想象的任务创造出新产品及新功能。这些创新领域不再局限于移动应用程序和计算机,而是集中于嵌入式系统和物联网(IoT)设备,并且已经在我们的日常生活中得到广泛普及。

嵌入式系统和物联网(IoT)设备几乎可以为所有载体运行软件,包括婴儿监控器、扬声器、健身追踪器、安全摄像头、恒温器和汽车等。

对于这种数字化世界,身为建筑师、麻省理工学院教授和作家的  Nicholas Negroponte 表示:“就如同空气和饮用水一般,人们对数字化生活已经高度适应,适应到忘记它们的存在,但一旦缺少这些人们就会无所适从。”根据 Nicholas Negroponte 的观点,人们已经被数字技术包围并习以为常,甚至都注意不到数字技术的存在,但我想补充一点,即数字技术也存在着安全隐患并有可能带来安全和防范问题。

我们所知道的物联网设备(包括嵌入式系统)具有通过互联网连接的处理器、传感器和其他功能而实现的。人们所谈及的嵌入式系统,更多的时候指的是在更大容量的数字系统、机械系统或电子系统中具有专用功能的处理器。嵌入式系统可以是物联网设备的固件,也可以是汽车、机器人、信用卡读卡器、移动电话、小工具、网络设备、医疗设备或任何载体的电子控制单元(ecu)。

为什么 C 语言和 C ++ 对于嵌入式系统的软件安全
和防范来说很重要?

由于受限于成本规模,嵌入式系统中的软件在处理、内存和电源方面的计算资源有限。由于对轻量级软件的需求,像 C 语言和 C++ 这样的编程语言在嵌入式系统中占具主导地位,就像它们在云计算中运行在多数服务器上的Linux内核上一样。虽然 C++ 比 C 语言需要更多的计算资源,但通过应用更强大的微处理器使得 C++ 成为全世界数百万嵌入式系统的首选语言。

其他编程语言如 Python 也可用于嵌入式系统,但 C 语言和 C++ 是主要的选择语言。还有一种嵌入式 C++ (EC++),它是 C++语言的一个子集,它可以在完整 C++ 语言的主要功能的基础上提供更大容量的空间和更高的速度。现今的微处理器可以搭载 C++ 编译器,这使得为嵌入式系统编写代码更加轻松。

嵌入式系统的编码不同于其他类型的应用程序。首先,您面临着资源限制,然后必须针对容错功能、实时功能、可靠性以及稳定运行功能进行设计。但更重要的一点是,必须保证代码具有安全性和防范性,这一点通过嵌入式系统和物联网设备所应用的医疗保健和制药行业,或汽车和航空航天行业等领域就能体会得到。如果这种技术存在缺陷,不仅会引起关注,更多的是会引发安全和防范的问题。

为什么静态分析 对于嵌入式系统的软件安全
和防范来说很重要?

静态分析工具是能够确保源代码无漏洞和缺陷的重要工具之一。静态分析也被称为静态应用程序安全测试,或SAST,可以扫描包括嵌入式系统和物联网代码的应用程序源代码。高度专业化的代码扫描基于相应的编程语言和所使用的框架来查找特定的缺陷。静态分析工具如Perforce Helix QAC 和 Klocwork 也会与报告代码是否符合编码标准。

静态分析工具使开发和安全团队能够分析数以千计甚至高达数百万行的代码。他们检查代码存在的缺陷,并根据规则和策略执行编码标准。最重要的是,应用静态分析工具已经成为软件开发生命周期中不可缺少的一部分,并且在每次代码更改或在新版本发布之前,应用静态分析工具已成为定期在源代码上运行的一个必要步骤。

随着我们被以嵌入式系统和物联网形式出现的数字技术所包围,越来越凸显安全和防范的重要性,特别是在跨行业的关键任务功能方面。通过应用静态分析工具发现安全和防范缺陷,可以防止大规模生产存在缺陷的设备,并能有效节省资金成本和保证企业声誉。

嵌入式设备的防范性主要是指减少漏洞数量的功能。安全漏洞的严重程度各不相同,高度严重的漏洞表示严重漏洞被利用的风险更高。无论将软件应用在何处,所有软件几乎都存在几种常见的漏洞。例如,远程代码执行和跨站点脚本漏洞。在嵌入式系统和物联网设备中,多数漏洞与内存缓冲区溢出、资源泄漏、不适当的访问控制、密码问题和代码注入有关。这些漏洞是通过静态分析工具扫描嵌入式系统而发现的一些最为常见的嵌入式安全漏洞。

为什么编码标准 对嵌入式系统的安全和防范来说很重要?

如前所述,C语言和C++主要应用于嵌入式系统。多年以来,企业已经认识到所有代码的安全和防范的重要性,特别是对于嵌入式设备中的C语言和C++,在这些设备中,应用失败的代价可能并不仅仅是经济方面的代价。随着时间的推移,已经创建并改进了编码标准,以帮助提高软件的防范性、可移植性、可靠性和可维护性。通过应用静态分析工具,除可搜索源代码中的缺陷和漏洞之外,还可以应用编码标准中陈述的规则和建议,这对于需要验证是否符合行业标准的企业非常重要。嵌入式系统的常见编码标准包括MISRA、AUTOSAR和CERT。

还有许多功能安全(FuSa)标准,如ISO 21434、ISO 26262、IEC 61508、ISO 13849和IEC 62061标准,专门针对汽车和制造等不同行业的嵌入式系统。

为嵌入式系统编码,遵循编码标准,并将静态分析作为软件开发生命周期的一部分,将使我们的数字世界更加安全。如前所述,“就像空气和饮用水一样,只有在未进行数字化应用时才会引起注意”,并且是在安全性受到破坏的情况下。

如果您想亲身体验为什么成千上万的开发者依赖于Perforce静态分析工具,现在就联系Perforce授权合作伙伴——龙智,开始免费试用。

作者简介:

本文作者为哈维尔·佩雷斯(Javier Perez),Perforce软件开源和安全首席宣传员。哈维尔对技术和开源软件充满热情,他负责开源和应用程序安全组合的技术思想领导以及宣传。

哈维尔在应用开发、开源、云计算、应用安全、人工智能、SaaS和移动领域拥有20余年的丰富经验,经常参加世界各地的行业活动并发言。哈维尔拥有计算机系统荣誉学位和工商管理硕士学位。

文章来源:https://bit.ly/3Nts4rQ

Klocwork——针对C, C++, C#, Java程序的 静态代码分析工具