嵌入式系统上的12种常见攻击
根据其目标,嵌入式系统的攻击可分为三类:
让我们找出这些类型攻击的关键特征、常见示例和可能的对策。
攻击基于软件
基于软件的攻击针对系统的大脑-管理设备的应用程序。对软件的成功攻击使黑客能够访问数据或控制嵌入式系统。
搜索软件设计和代码中的漏洞是最常见的攻击手段,因为它们可以远程攻击。此外,基于软件的攻击不需要黑客的专业知识,因为它们可以使用典型的攻击,如部署恶意软件和暴力破解。
基于软件的最常见攻击包括:
·恶意软件
·暴力访问
·内存缓冲区溢出
·利用web服务
嵌入式系统的恶意软件攻击与任何其他系统的工作方式相同:黑客部署恶意代码,试图拦截存储在系统中的数据,控制受害系统或损坏它。通常,黑客会伪造固件更新、驱动程序或安全补丁来分发恶意软件。
为防止此类攻击,可采取以下保护措施:
·应用黑名单法,即开发人员为系统检测到的任何新的恶意软件创建签名,并将其添加到嵌入式系统固件中。当系统检测到已知的签名软件时,它不会运行。
·使用白名单保护为所有值得信赖的软件源创建特定的签名。这允许系统只运行具有正确签名的软件。
简单地说,强制访问凭证就是猜测凭证的过程。大多数嵌入式系统提供对图形用户界面(GUI)对于远程访问,黑客可以使用界面进行攻击。您可以使用强密码和限制登录次数来防止暴力强制攻击。
当黑客手动溢出到包含在嵌入式系统中移动数据的内存缓冲区时,内存缓冲区溢出是一种攻击。黑客部署的漏洞攻击使内存缓冲区充满了过多的数据。在这种情况下,嵌入式操作系统将在缓冲区旁边的内存段中记录一些数据。记录的数据可能包括外壳代码或其他漏洞,以帮助黑客获取证据并提高访问权限。
这个问题可以通过创建沙箱将溢出的数据与系统隔离来解决。请记住,你的沙箱一定很复杂,因为很多现代漏洞都采用了避开沙箱的技术。
基于网络的攻击
利用网络基础设施漏洞进行这种攻击也可以远程进行。利用这些漏洞,黑客可以听取、拦截和修改嵌入式系统传输的流量。
让我们来看看基于网络的最常见的攻击:
·中间人(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]
通过以下实践,您可以使您的保护更加可靠:
设计与软件配置
1.使用安全语言。在编写第一行代码之前,请选择您选择的语言研究嵌入式软件开发标准。例如,如果你想使用它C或C ,请先学习MISRA-C / C 。
2.启动安全启动。该功能允许微处理器在执行固件之前验证密钥和固件的位置。为了加强这种保护,您还可以在微处理器中创建一个存储固件的安全区域,使用处理器的可信执行环境功能。
3.禁止不安全和不必要的服务。您需要分析系统的操作来定义此类服务。通常,此类服务的列表包括Telnet与琐碎文件传输协议、调试代理、开放端口等。
安全的内存和应用程序
1.限制内存分配。为缓冲区、操作系统和应用程序分配足够的内存,实现内存管理单元。内存管理单元有助于保持嵌入式系统的平衡运行,防止内存缓冲区溢出。此外,尽可能将内存切换到只读模式。
2.创建分区。将嵌入式系统的重要部分(如操作系统、GUI并将安全应用程序划分为不同的分区,有助于隔离和攻击它们。分区可以是物理分区和虚拟分区。
通讯安全
1.实施访问控制。无保护访问嵌入式系统的任何部分都是对黑客的公开邀请。为了保护您的访问点,请使用强有力的证据并加密它,以实现最小权限的原则,并尽可能使用身份验证。
2.保护通信通道IPsec、DNS-SEC、SSH或SSL并使用协议私人虚拟网络保护与嵌入式系统的任何通信。部署防火墙来过滤流量也是一个很好的做法。
数据保护
1.加密所有内容。必须加密所有固件更新、传输和处理的数据和存储的凭证。使用加密签名来验证从可信源获得的文件,并检测可疑的修改。
2.混淆目标代码。混淆是一个让你的代码纠缠在一起的过程,这对黑客来说并不清楚,但它可以在嵌入式系统中执行。甚至可以通过混淆来加速代码的执行。这项措施将使黑客更难逆转您的代码。
发布和支持
1.端到端威胁评估。完整的安全评估包括:
a.从设备制造商、软件开发人员和最终用户的角度分析和识别潜在威胁
b.创建风险矩阵,并估计攻击的可能性和成功率
c.模拟黑客攻击或黑盒渗透测试
2.定期更新软件。无论旧的嵌入式系统开发软件有多困难,这总是有益的。在新的软件版本中,您可以采取其他安全措施来抵消新的攻击或修复漏洞(如果在产品发布后发现漏洞)。别忘了添加上述黑名单和白名单保护。这些方法将防止软件安装从不可信的来源。
通过这些实践,你可以让网络犯罪分子更难盗用你的软件作为嵌入式系统。
结论
开发嵌入式系统软件是一个巨大的挑战。开发人员必须实现所有必要的功能,并考虑多个设备的限制,以保护软件免受攻击。威胁可能来自不同的来源和渠道,因此似乎不可能在微处理器和少量内存中安装所有这些威胁。