12对嵌入式系统的常见攻击对嵌入式系统的攻击根据攻击目标可分为三类:我们确定了关键特征、常见示例和可能的对策这些类型的攻击。基于软件的攻击基于软件的攻击针对系统的大脑——管理设备的应用程序。对软件的成功攻击允许黑客访问数据或获得对嵌入式系统的控制。搜索软件设计和代码中的漏洞是最常见的攻击手段,因为此类攻击可以远程进行。此外,基于软件的攻击不需要黑客的专业知识,因为他们可以使用典型的攻击,例如部署恶意软件和暴力破解。最普遍的基于软件的攻击包括:恶意软件暴力访问内存缓冲区溢出恶意软件攻击使用Web服务的嵌入式系统的工作方式与任何其他系统相同:黑客部署一段恶意代码,试图拦截存储在系统中的数据系统,控制受害系统或损坏它。通常,黑客伪造固件更新、驱动程序或安全补丁来分发恶意软件。为了防止此类攻击,可以实施以下保护措施:应用黑名单方法,开发人员可以为系统检测到的任何新恶意软件创建签名,并将这些签名添加到嵌入式系统固件中。当系统检测到具有已知签名的软件时,它不会运行它。·使用白名单保护为所有受信任的软件源创建特定签名。这允许系统只运行具有正确签名的软件。简单地说,强制访问凭据就是猜测凭据的过程。大多数嵌入式系统都提供对图形用户界面(GUI)的远程访问,黑客可以利用它来进行攻击。您可以通过使用强密码和限制登录尝试次数来防止暴力攻击。内存缓冲区溢出是一种攻击,当黑客手动溢出分配给包含在嵌入式系统中移动的数据的内存缓冲区时。黑客部署的漏洞利用过多数据填充了内存缓冲区。在这种情况下,嵌入式操作系统会将一些数据记录到缓冲区旁边的内存段中。记录的数据可能包含shellcode或其他漏洞,可帮助黑客获取凭据并提升其访问权限。这个问题可以通过创建一个沙箱来解决,将溢出的数据与系统隔离开来。请记住,您的沙箱必须非常复杂,因为许多现代攻击都利用了沙箱规避技术。基于网络的攻击这些攻击利用网络基础设施漏洞,也可以远程执行。利用这些漏洞,黑客可以监听、拦截和修改嵌入式系统传输的流量。让我们来看看最常见的基于网络的攻击:中间人(MITM)域名系统(DNS)中毒分布式拒绝服务(DDoS)会话劫持信号干扰MITM攻击用于拦截或更改嵌入式系统传输数据。为了执行它,黑客更改了两个设备的连接参数,以便在它们之间放置第三个设备。如果黑客能够获取或更改这两个设备使用的加密密钥,他们就可以通过不干扰网络而难以察觉的方式进行窃听。通过加密传输的数据并使用Internet协议安全(IPsec)安全地传输密钥和数据,可以防止或停止MITM攻击。DNS中毒迫使本地DNS服务器根据黑客的需要修改其记录。DNS服务器将易于记忆的域名和主机名翻译成相应的IP地址。通过利用DNS服务器中的漏洞并毒害其缓存,黑客可以将流量从目标网站重新路由到任何其他地址。域名系统安全扩展(DNS-SEC)协议通过对DNS发布或传输的任何数据进行数字签名来防止DNS服务器中毒。DDoS是一种众所周知的攻击,它通过向系统发送来自不同来源的请求来使系统无法使用。由于请求量巨大,这种攻击很难预防。没有针对DDoS攻击的通用保护。但是,为您的嵌入式软件添加防火墙和流量分析和过滤算法将大大提高防止DDoS攻击或及时检测它们的机会。会话劫持类似于MITM攻击,但目标不同:黑客监听嵌入式系统流量以获取身份验证凭据。执行劫持的方法有很多种:固定用户会话标识符、窃取会话缓存、跨站点脚本等等。针对此类攻击的防御是经典的:加密凭据和可能包含它们的任何数据,定期更改凭据,并在会话结束时处理任何与会话相关的数据。信号干扰在无线网络中很常见。通过这种技术,黑客可以破坏网络,中断或扭曲设备的通信。根据干扰器的类型,它可能会阻止通道上的任何通信,在目标设备传输数据时开始工作,或者在检测到特定数据包时被激活。这种攻击会使嵌入式系统无法使用。要阻止信号干扰,请部署适合您的软件的抗干扰机制[PDF]。请记住,此保护措施还将保护您的嵌入式系统免受其他设备造成的意外干扰。侧信道攻击侧信道攻击利用嵌入式系统中的硬件安全漏洞对其进行攻击。侧信道攻击是最困难和最昂贵的攻击类型,因为它需要准确了解目标系统的硬件设计和物理可用性。为了进行侧信道攻击,黑客收集系统功耗、电磁泄漏、运行时间等信息。因此,他们可以弄清楚系统和连接设备的内部工作原理,窃取加密密钥,甚至获得对系统的控制权。以下是最常见的侧信道攻击列表:功率分析定时攻击电磁分析功率分析攻击需要对嵌入式系统进行物理访问,以探测其连接并检测功耗变化。这些变化取决于系统处理的数据,因此黑客可以检测系统何时处理特定类型的信息并拦截它。为防止这种攻击,请使用数据屏蔽技术修改敏感内容以显示为不重要的数据。定时攻击是基于嵌入式系统操作的定时。它们用于获取信息,例如应用的加密算法、指令时间和代码分支的数据依赖差异、缓存访问时间等。这种类型的攻击还需要对设备进行物理访问并深入了解嵌入式系统架构。由于定时攻击强烈依赖线性和可预测的软件操作,您可以通过使用随机数在空闲期间重新安排活动来防止此类攻击。基于此,嵌入式系统的时序分析将极具挑战性。电磁分析为黑客提供了另一种无需黑客即可查看嵌入式软件的方法。黑客可以使用电磁分析来记录和分析设备的辐射,找出其加密操作,甚至提取密钥。这是最耗时且成本最高的攻击类型,因为它需要:与嵌入式系统的物理接近度有关系统嵌入的设备布局的信息与其他设备隔离以保护系统免受电磁干扰硬件设计人员可以收集通过降低信号强度或添加物理保护(例如使用某些类型的胶水或电路和电线屏蔽)来屏蔽电磁信号。加密过程的随机性和中断性也是对抗电磁分析的有效措施。我们上面讨论的嵌入式系统的网络安全措施可以帮助您预防或阻止某些类型的攻击。在下一节中,我们提供了11条建议来有效保护嵌入式硬件和软件。11保护嵌入式系统的最佳实践在开始编码之前,研究嵌入式软件开发的行业标准以发现有效的安全措施和开发实践。例如,请注意:OWASP嵌入式应用程序安全IEEE标准NIST物联网设备制造商基础网络安全活动[PDF]IPA的嵌入式系统开发过程参考指南[PDF]通过以下实践,您的保护可以在所有开发阶段变得更加可靠,从设计到支持:改进嵌入式系统安全设计和软件配置的11个最佳实践1.使用安全语言。在编写第一行代码之前,研究适合您选择的语言的嵌入式软件开发标准。例如,如果您打算使用C或C++,请先学习MISRA-C/C++。2.启用安全启动。此功能允许微处理器在执行固件之前验证加密密钥和固件的位置。为增强这种保护,您还可以启用处理器的可信执行环境功能,该功能会在微处理器中创建一个安全区域来存储固件。3.禁用不安全和不必要的服务。要定义此类服务,您需要分析系统的运行情况。通常,此类服务的列表包括Telnet和普通文件传输协议、调试代理、开放端口等。内存和应用程序安全1.限制内存分配。实施内存管理单元,为缓冲区、操作系统和应用程序分配足够的内存。内存管理单元有助于保持嵌入式系统平衡运行并防止内存缓冲区溢出。此外,尽可能将内存切换为只读模式。2.创建分区。将嵌入式系统的重要部分(如操作系统、GUI和安全应用程序)划分到不同的分区有助于将它们相互隔离并遏制攻击。分区可以是物理分区和虚拟分区。通信安全1.实施访问控制。对嵌入式系统的任何部分进行不受保护的访问是对黑客的公开邀请。要保护您的接入点,请使用强凭证并对其进行加密,实施最小权限原则,并尽可能启用身份验证。2.保护沟通渠道。实施IPsec、DNS-SEC、SSH或SSL协议,并使用私有虚拟网络保护与嵌入式系统的任何通信。部署防火墙来过滤流量也是一种很好的做法。数据保护1.加密所有内容。所有固件更新、传输和处理的数据以及存储的凭据都必须加密。使用加密签名来验证从可信来源获得的文件并检测可疑的修改。2.混淆目标代码。混淆是一个使您的代码纠缠在一起的过程,使黑客不清楚但在嵌入式系统中可执行。甚至可以通过混淆来加速代码执行。此措施将使黑客更难对您的代码进行逆向工程。发布和支持1.进行端到端的威胁评估。完整的安全评估包括:执行完整的生命周期分析并从设备制造商、软件开发商和最终用户的角度识别潜在威胁b.创建风险矩阵并估计可能性和成功率c.自己模拟黑客攻击或进行黑盒渗透测试2、定期更新软件。无论为遗留嵌入式系统开发软件有多么困难,这样做总是有益的。在新的软件版本中,您可以推出额外的安全措施来抵御新型攻击或修补漏洞(如果在产品发布后发现漏洞)。不要忘记像上面那样添加黑名单和白名单保护。这些方法将防止从不受信任的来源安装软件。有了这些实践,您就可以让网络罪犯更难窃取您的嵌入式系统软件。结论为嵌入式系统开发软件是一项巨大的挑战。开发人员必须实现所有必需的功能,同时考虑多种设备的局限性并保护软件免受攻击。威胁可能来自不同的来源和渠道,因此在微处理器和少量内存中安装针对所有威胁的保护措施似乎是不可能的。本文翻译自:https://www.apriorit.com/dev-blog/690-embedded-systems-attacks如有转载请注明原文地址
