工业嵌入式软件开发安全漏洞模式研究

(整期优先)网络出版时间:2022-09-22
/ 2

工业嵌入式软件开发安全漏洞模式研究

周强

510724198309100057

摘要:近年来,随着计算机技术的发展,嵌入式系统在航空航天、核能、交通等安全攸关领域的应用越来越广泛。特别是随着工业互联网的发展,工业嵌入式软件呈井喷式的发展。由于软件功能的日益强大,软件正在逐步取代部分硬件的功能,嵌入式软件的规模及复杂程度急剧增加,在安全关键的航空航天、汽车以及工业控制等领域的用户对嵌入式软件质量要求更加严格,基于此本文就工业嵌入式软件开发安全漏洞模式进行阐述,以供参考。

关键词:工业互联网;嵌入式软件;安全编码标准;静态分析;漏洞模式;

1嵌入式软件的安全特点

1.1嵌入式系统通常由硬件层、驱动层和软件层组成

嵌入式软件大体上可分为3类:嵌入式操作系统、嵌入式支撑软件和嵌入式应用软件。嵌入式操作系统主要用于控制、管理系统资源的软件,如WindowsCE,PalmOS,Linux,VxWorks,pSoS,QNX,OS-9,LynxOS等;支撑软件是指用于辅助软件开发的软件工具集、交叉开发工具、软件测试工具等;应用软件是嵌入式软件中面向用户体验的软件,一般针对特定应用领域、完成一定功能,达到用户的预期目的。嵌入式应用软件种类最多,它不仅要求准确性、安全性、稳定性等方面能够满足实际应用的要求,而且还要尽可能地进行优化,以减少对系统资源的消耗,降低硬件成本。嵌入式软件的专用性很强,为满足特定的领域需求,要求功能精简,这样有利于控制成本,并且可以更好地保证安全。多数嵌入式软件固化在芯片或单片机上,提供的内核资源相对有限,所以要求嵌入式软件保持效率高、冗余小、功率均衡,不完善的嵌入式软件很容易出现内存问题,导致运行时出现非预期的状况。

1.2嵌入式软件具有高实时性的特点

一方面对嵌入式软件的质量、可靠性和安全性有很高的要求,因为一旦软件固化后就很难发现、调试和修改软件中的缺陷,比如由于缓冲区溢出等代码缺陷带来的安全隐患将更加难以修复;另一方面也对嵌入式软件运行时的实时性有比较严格的要求,对软件使用的场景、时间、体积、功耗有严格要求。如果嵌入式软件实时性差,会导致严重后果。工业互联网软件除了面向产品生产的研发软件、管理软件等,很大一部分是自动化控制软件或者面向装置级的嵌入式软件,即工业嵌入式软件。工业控制的设备、协议、嵌入式软件和系统在互联网上暴露问题是工业互联网安全的一个基本问题,直接面临互联网上的各类攻击。对于工业嵌入式软件而言,最大的风险来自安全漏洞,包括开发过程中编码不符合安全规范而导致的软件本身的漏洞,以及由于大量使用不安全的第三方组件而出现的安全漏洞,第三方组件的安全性和可控性问题日渐突出,一旦出现漏洞就会影响大量的工业产品,直接关系工业生产的成败。

2设计安全技术

在软件设计阶段,需要重点在软件体系结构设计、软件业务流程设计、软件数据库设计和软件接口设计四个方面对安全技术进行研究与设计:

2.1在软件体系结构设计方面,应重点关注基础设施方面的安全防护设计,比如将硬件防火墙、软件防火墙、入侵检测系统和上网行为检测等基础设施加入到软件的体系结构中,构造一个安全的网络环境,对软件系统有更好的保护作用;

2.2在软件业务流程设计方面,应重点关注流程和数据的可控性,流程可控性即业务流程按照设计的规则进行,数据的可控性是指业务流程中的数据流是可控的,它仅能被有权限的用户可见和可操作,当不法分子尝试非法查看和操作时应及时报错而终止流程,实现流程和数据可控性的常规技术是对用户权限进行安全设计,通过对用户与功能模块建立一个确定的权限机制,从而确保软件的业务流程的安全性;

2.3在软件数据库设计方面,应重点关注数据库的表结构设计,比如尽量不用或少用数字自增ID避免网络爬虫非法抓取数据,做好数据库的范式设计,注重数据冗余与存储空间、查询效率之间的平衡关系。此外还需注意尽量避免使用数据库默认的用户名、密码和端口,并且优化数据库配置管理中安全方面的设计,确保数据库安全与稳定运行;

2.4在软件接口设计方面,开放API接口如果没有经过安全处理,则很容易出现三类安全问题,包括信息截获、篡改与泄露。因此对于软件接口的设计,应重点在接口权限和数据加密方面进行设计。接口权限的设计可以确保接口仅被拥有权限的一方调用,如限定软件接口调用的IP、采取令牌技术以及验证调用接口的相关参数等,而数据加密则可以确保接口数据的安全性,即使数据泄露给非法人员,但无法进一步解密也不会造成损失。

3编码安全技术

在软件编码阶段,软件开发人员容易只注重软件系统的界面设计和软件系统的功能实现,而忽略了软件编码时应该采取的安全防范技术,导致软件系统很容易出现漏洞。因此,在软件编码阶段,软件开发人员尤其需要重点关注软件系统的权限、数据、文件和数据库操作四个方面的安全问题:

3.1在权限方面,对于用户的操作首先应该判断是否存在相应的操作权限,如当前会话是否有效,当前用户是否有该操作权限等,以及是否存在过量访问和是否尝试次数过多等异常访问或操作等问题。

3.2在数据方面,对于用户提交的数据,需要判断是否符合相关的要求和规定,是否存在非法字符,尤其是操作数据库的关键字,存储到数据库的关键敏感数据应该加密后保存,如用户的密码和身份证号码应加密保存,避免数据泄露给不法人员用于撞库造成二次安全事故,返回给用户的响应数据是否存在多余且关键敏感的数据等。

3.3在文件方面,对于用户提交的文件,需要判断文件的格式是否符合预期的文件格式,以及文件报头信息是否一致等,存储文件前应该对文件进行重命名,可先存为临时文件并使用杀毒软件扫描通过后转为正式文件,且不能以任何方式向用户暴露文件的存储路径和文件名。

3.4在数据库操作方面,应该判断用户是否有操作数据库的权限,写入数据库的数据是否存在安全隐患,是否存在诸如SQL注入漏洞等问题,操作数据库后还应记录相应的操作信息。

4测试安全技术

在软件测试阶段,主要测试软件系统的安全编码是否有效、软件的安全设计是否已落实以及软件的安全性能是否满足软件的安全需求。测试软件的安全技术一般可以通过白盒测试、黑盒测试和渗透测试等技术来检查软件的安全性能。

4.1白盒测试了解程序的内部逻辑结构和逻辑路径,通过输入和跟踪测试数据的变化可以检查数据的安全性,数据的流向和数据的表现形式是否符合软件系统的安全设计;

4.2黑盒测试是通过测试来检测每个功能是否都能正常使用,同时,黑盒测试可以检查软件系统各个功能的安全性,功能的操作权限和功能的实现结果是否符合软件系统的安全设计;

4.3渗透测试是为了证明网络防御按照预期计划正常运行而提供的一种机制,渗透测试通过模拟不法攻击者,通过多种攻击形式多种技术手段来模拟攻击软件系统,从而检查软件系统的健壮性和安全性能。通过以上测试安全技术可以及时发现软件系统的漏洞,从而及时修复软件系统漏洞最终提高软件的安全性能。

5结语

安全无小事,警钟需长鸣,软件系统的安全关乎到广大人民群众和相关企事业单位的切身利益。本论文通过对嵌入式软件的安全特点以及设计安全技术,编码安全技术等进行阐述,为后续的软件开发和系统运维工作提供安全技术指引,致力于降低软件系统漏洞的出现率和网络安全事件的发生率,营造良好的网络安全环境,保护好广大网民和相关企事业单位的利益。

参考文献

[1]李磊。数据通信网络安全维护策略探讨[J]。软件,2018,39(7):191-193。

[2]刘俊芳。安全技术在软件开发中的应用分析[J]。电脑知识与技术,2021,17(24):48-49。

[3]张永健。安全技术在软件开发中的实践[J]。电子技术与软件工程,2021(10):255-256。

[4]王蕊,陈楠。安全技术在软件开发中的应用[J]。科技与创新,2020(24):155-156。