嵌入式系统12种常见攻击及防范方法
时间:2021-10-14 17:31:06
手机看文章
扫描二维码
随时随地手机看文章
[导读]关注星标公众号,不错过精彩内容素材来源| apriorit编排|strongerHuang以前的嵌入式系统对安全问题相对不那么重视,但随着时间的推移,你会发现很多嵌入式设备都在做各种“保护措施”,你平时在产品开发和设计时,有注意安全问题吗?嵌入式系统12种常见攻击嵌入式系统的攻击...
关注 星标公众号,不错过精彩内容
让我们找出针对这些类型攻击的关键特征,常见示例以及可能的对策。
简单地说,强制访问凭证就是猜测凭证的过程。大多数嵌入式系统提供对图形用户界面(GUI)的远程访问,黑客可以利用该界面进行攻击。你可以通过使用强密码和限制登录尝试次数来防止暴力强制攻击。
例如,注意: · OWASP嵌入式应用程序安全性· IEEE标准· NIST 为物联网设备制造商提供的基础网络安全活动 [PDF]· IPA的嵌入式系统开发过程参考指南 [PDF]
通过以下实践,你可以在从设计到支持的所有开发阶段使你的保护更加可靠:
提高嵌入式系统安全性的11个最佳实践。
第一类:设计和软件配置1.使用安全的语言。在编写第一行代码之前,请针对你选择的语言研究嵌入式软件开发标准。例如,如果你要使用C或C ,请首先学习MISRA-C / C 。
2.启用安全启动。此功能允许微处理器在执行固件之前验证加密密钥和固件的位置。为了增强这种保护,您还可以启用处理器的受信任执行环境功能,该功能在微处理器中创建一个安全区域来存储固件。
3.禁用不安全和不必要的服务。要定义此类服务,你需要分析系统的操作。通常,此类服务的列表包括Telnet和琐碎文件传输协议,调试代理,开放端口等。
第2类:内存和应用程序安全1.限制内存分配。实现一个内存管理单元,为缓冲区、操作系统和应用程序分配足够的内存。内存管理单元有助于保持嵌入式系统运行的平衡,并防止内存缓冲区溢出。此外,尽可能将内存切换到只读模式。
2.创建分区。将嵌入式系统的重要部分(如操作系统、GUI和安全应用程序)划分为不同的分区,有助于将它们彼此隔离并包含攻击。分区可以是物理分区和虚拟分区。
第3类:通讯安全1.实施访问控制。不受保护地访问嵌入式系统的任何部分都是对黑客的公开邀请。要保护您的访问点,请使用强凭据并对其进行加密,实现最小权限原则,并尽可能启用身份验证。
2.保护通信通道。实现IPsec、DNS-SEC、SSH或SSL协议,并使用VPN保护与嵌入式系统的任何通信。部署防火墙来过滤流量也是一个很好的做法。
第4类:数据保护1.加密所有内容。所有固件更新、传输和处理的数据以及存储的凭证都必须加密。使用加密签名来验证从可信来源获得的文件并检测可疑的修改。2.混淆目标代码。混淆是一个过程,使你的代码纠缠在一起,对黑客来说不清楚,但在嵌入式系统中是可执行的。甚至可以通过混淆来加速代码的执行。这项措施将使黑客更难对你的代码进行反向工程。
第5类:发布和支持1.进行端到端威胁评估。完整的安全评估包括:a.从设备制造商,软件开发人员和最终用户的角度执行完整的生命周期分析并识别潜在威胁b.创建风险矩阵,并通过每个可能的渠道估算攻击的可能性和成功率c.自己模拟黑客攻击或进行黑盒渗透测试
2.定期更新软件。无论为旧的嵌入式系统开发软件有多么困难,这样做总是有益的。在新的软件版本中,你可以推出其他安全措施,以抵消新型攻击或修补漏洞(如果在产品发布后发现一个漏洞)。别忘了添加如上所述的黑名单和白名单保护。这些方法将阻止从不受信任的来源安装软件。
有了这些实践,你就可以使网络犯罪分子更难为嵌入式系统盗用你的软件。
最后
当然,威胁可能来自不同的来源和渠道,因此在微处理器和少量内存中安装针对所有这些威胁的保护似乎是不可能的。
-
基于软件的攻击
-
基于网络的攻击
-
旁道攻击
让我们找出针对这些类型攻击的关键特征,常见示例以及可能的对策。
-
应用黑名单方法,即开发人员为系统检测到的任何新恶意软件创建签名,并将这些签名添加到嵌入式系统固件中。当系统检测到具有已知签名的软件时,它将不会运行它。
-
使用白名单保护,为所有受信任的软件源创建特定的签名。这允许系统只运行具有正确签名的软件。
简单地说,强制访问凭证就是猜测凭证的过程。大多数嵌入式系统提供对图形用户界面(GUI)的远程访问,黑客可以利用该界面进行攻击。你可以通过使用强密码和限制登录尝试次数来防止暴力强制攻击。
例如,注意: · OWASP嵌入式应用程序安全性· IEEE标准· NIST 为物联网设备制造商提供的基础网络安全活动 [PDF]· IPA的嵌入式系统开发过程参考指南 [PDF]
通过以下实践,你可以在从设计到支持的所有开发阶段使你的保护更加可靠:
提高嵌入式系统安全性的11个最佳实践。
第一类:设计和软件配置1.使用安全的语言。在编写第一行代码之前,请针对你选择的语言研究嵌入式软件开发标准。例如,如果你要使用C或C ,请首先学习MISRA-C / C 。
2.启用安全启动。此功能允许微处理器在执行固件之前验证加密密钥和固件的位置。为了增强这种保护,您还可以启用处理器的受信任执行环境功能,该功能在微处理器中创建一个安全区域来存储固件。
3.禁用不安全和不必要的服务。要定义此类服务,你需要分析系统的操作。通常,此类服务的列表包括Telnet和琐碎文件传输协议,调试代理,开放端口等。
第2类:内存和应用程序安全1.限制内存分配。实现一个内存管理单元,为缓冲区、操作系统和应用程序分配足够的内存。内存管理单元有助于保持嵌入式系统运行的平衡,并防止内存缓冲区溢出。此外,尽可能将内存切换到只读模式。
2.创建分区。将嵌入式系统的重要部分(如操作系统、GUI和安全应用程序)划分为不同的分区,有助于将它们彼此隔离并包含攻击。分区可以是物理分区和虚拟分区。
第3类:通讯安全1.实施访问控制。不受保护地访问嵌入式系统的任何部分都是对黑客的公开邀请。要保护您的访问点,请使用强凭据并对其进行加密,实现最小权限原则,并尽可能启用身份验证。
2.保护通信通道。实现IPsec、DNS-SEC、SSH或SSL协议,并使用VPN保护与嵌入式系统的任何通信。部署防火墙来过滤流量也是一个很好的做法。
第4类:数据保护1.加密所有内容。所有固件更新、传输和处理的数据以及存储的凭证都必须加密。使用加密签名来验证从可信来源获得的文件并检测可疑的修改。2.混淆目标代码。混淆是一个过程,使你的代码纠缠在一起,对黑客来说不清楚,但在嵌入式系统中是可执行的。甚至可以通过混淆来加速代码的执行。这项措施将使黑客更难对你的代码进行反向工程。
第5类:发布和支持1.进行端到端威胁评估。完整的安全评估包括:a.从设备制造商,软件开发人员和最终用户的角度执行完整的生命周期分析并识别潜在威胁b.创建风险矩阵,并通过每个可能的渠道估算攻击的可能性和成功率c.自己模拟黑客攻击或进行黑盒渗透测试
2.定期更新软件。无论为旧的嵌入式系统开发软件有多么困难,这样做总是有益的。在新的软件版本中,你可以推出其他安全措施,以抵消新型攻击或修补漏洞(如果在产品发布后发现一个漏洞)。别忘了添加如上所述的黑名单和白名单保护。这些方法将阻止从不受信任的来源安装软件。
有了这些实践,你就可以使网络犯罪分子更难为嵌入式系统盗用你的软件。
最后
当然,威胁可能来自不同的来源和渠道,因此在微处理器和少量内存中安装针对所有这些威胁的保护似乎是不可能的。
参考来源:声明:本文素材来源网络,版权归原作者所有。如涉及作品版权问题,请与我联系删除。------------ END ------------https://www.apriorit.com/dev-blog/690-embedded-systems-attacks





