物联网安全漏洞:全部与缓冲区溢出有关

time : 2021-04-27 09:39       作者:凡亿pcb


物联网安全漏洞:全部与缓冲区溢出有关

缓冲区溢出漏洞。此错误使黑客可以将其代码注入我们PCB的内存中,然后执行它。精心编程可以减少缓冲区溢出带来的风险

什么是缓冲区溢出

缓冲区溢出最初是在2001年的红色代码攻击期间被广泛认可的。这些攻击利用Windows中的缓冲区溢出漏洞来控制计算机,一个版本在几个小时内感染了数十万台计算机。一旦被感染,这些计算机便被用来对白宫发起分布式拒绝服务(DDoS)攻击。从那时起,缓冲区溢出已成为寻求感染设备的黑客组织的一种选择方法。为了防御此漏洞,重要的是要了解它的工作方式以及它为什么对物联网构成特殊威胁。

当程序尝试将太大的值写入缓冲区时,会发生这种错误。缓冲区只是为某些值分配的一块内存。当程序尝试用无法容纳的更多数据填充缓冲区时,缓冲区溢出到内存的其他部分。这通常会导致系统崩溃,但也可能为黑客打开访问系统的大门。黑客可以使用缓冲区溢出漏洞来做两件事:注入他们的代码进入系统,然后运行注入的代码。第一个可能非常复杂,并且取决于系统。但是,第二个很容易理解。如果恶意软件已插入内存中,并且黑客知道了恶意软件的位置,则他们可以使用连接的设备简单地使它旁边的缓冲区溢出,以运行该程序。这就好比将一个可以将钱包偷窃的嵌入式设备放到一个没人进去的房间里,然后吸引了一大批人。人们溢出到多余的房间里,钱包不见了。

缓冲区溢出所针对的弱链接

由于其内存有限,编程语言以及程序的通用性,缓冲区溢出给物联网设备带来了特殊的风险。

存储器:IOT中设备通常需要节省功率,这导致少量的能量高效的存储器。缓冲区越小,越容易溢出。消除了固有的IoT安全缓冲区后,IoT成为了应对此类攻击的理想场所。

语言:大多数用于IoT的程序都是用CC ++编写的。CC ++都没有垃圾收集器” 来满足额外的内存需求,这增加了缓冲区溢出漏洞的风险。同样,这些语言使用指针,黑客可以使用指针来确定关键代码在内存中的位置。

通用性:为我们的物联网设备购买现成的,廉价的程序的便利性可能太诱人了。但是,当您使用与其他所有人相同的代码时,就有冒常见漏洞的风险。这样的一个漏洞,被称为魔鬼的常春藤,在软件中发现数千物联网设备的使用,只是最近透露。许多机器只能通过默默无闻来逃脱感染。如果您的产品由于通用代码而可以与成千上万的其他产品一起被感染,则更有可能成为目标产品。

缓冲区溢出可用于访问设备或使设备崩溃。

禁止(编程)Windows,打补丁(安全网关)墙

现在我们知道了缓冲区溢出对典型的物联网设备造成的危险,我们如何防御它?有几种方法可以减轻这种风险。如果您自己编写软件,请仔细进行内部编程以确保设备安全:

检查输入大小-如果您知道输入应该多大,请检查以确保它是该大小。发生缓冲区溢出漏洞是因为将太大的值写入内存。如果您可以在将大小传递到内存之前检测到大小,则可以拒绝太大的值,否则将导致溢出。这可能不适用于所有系统,例如传入的传感器数据可能是未知大小的系统。

使内存不可执行-如前所述,黑客通常会将恶意软件隐藏在内存中,然后使用缓冲区溢出来执行它。如果他们将源代码注入的部分是不可执行的,则可能会使他们无法激活程序。由于缓冲区溢出攻击的多样性,这可以阻止某些入侵,但不能阻止所有入侵。

使用ASLR(地址空间布局随机化) -正如GI乔斯经常说的那样,知道是成功的一半。如果黑客知道关键代码的存储位置,则他们可以覆盖或删除它。ASLR随机分配内存位置,使攻击者更难找到目标。

即使您使用别人的程序,您也可以坚持一些最佳实践,或者自己启用它们,以保护您的系统。其中一些可能很快就会被政府强制执行:

启用补丁-如果您发现自己的软件容易受到攻击,则需要能够对其进行补丁。如果您做不到,则您的小发明可能会成为僵尸网络中其余部分的僵尸

网关-如果要为大型网络设计外围设备或传感器,请考虑设计与IoT安全网关的互操作性。这些可以减少黑客直接攻击您的设备,而不得不处理专门为安全性设计的门户的可能性。

身份验证-使用中间人MITM)方案尝试进行许多缓冲区流攻击。身份验证将确保您的系统仅从受信任的设备接收输入,而不从恶意代码或伪装设备接收输入。

您可以通过仔细的代码和最佳实践来保护系统。

物联网可以极大地造福人类,但也为黑客提供了巨大的新攻击面。缓冲区溢出攻击在过去已经被广泛使用,并且可以很好地影响物联网。幸运的是,我们可以编写防止此漏洞的源代码,也可以将一些最佳实践纳入我们的设计中以减轻这种风险。