24小(xiǎo)时联系電(diàn)话:18217114652、13661815404
中文(wén)
- 您当前的位置:
- 首页>
- 電(diàn)子资讯>
- 技术专题>
- 物(wù)联网安全漏洞:全部...
技术专题
物(wù)联网安全漏洞:全部与缓冲區(qū)溢出有(yǒu)关
物(wù)联网安全漏洞:全部与缓冲區(qū)溢出有(yǒu)关
缓冲區(qū)溢出漏洞。此错误使黑客可(kě)以将其代码注入我们PCB的内存中,然后执行它。精心编程可(kě)以减少缓冲區(qū)溢出带来的风险
什么是缓冲區(qū)溢出
缓冲區(qū)溢出最初是在2001年的“红色代码”攻击期间被广泛认可(kě)的。这些攻击利用(yòng)Windows中的缓冲區(qū)溢出漏洞来控制计算机,一个版本在几个小(xiǎo)时内感染了数十万台计算机。一旦被感染,这些计算机便被用(yòng)来对白宫发起分(fēn)布式拒绝服務(wù)(DDoS)攻击。从那时起,缓冲區(qū)溢出已成為(wèi)寻求感染设备的黑客组织的一种选择方法。為(wèi)了防御此漏洞,重要的是要了解它的工作方式以及它為(wèi)什么对物(wù)联网构成特殊威胁。
当程序尝试将太大的值写入缓冲區(qū)时,会发生这种错误。缓冲區(qū)只是為(wèi)某些值分(fēn)配的一块内存。当程序尝试用(yòng)无法容纳的更多(duō)数据填充缓冲區(qū)时,缓冲區(qū)“溢出”到内存的其他(tā)部分(fēn)。这通常会导致系统崩溃,但也可(kě)能(néng)為(wèi)黑客打开访问系统的大门。黑客可(kě)以使用(yòng)缓冲區(qū)溢出漏洞来做两件事:注入他(tā)们的代码进入系统,然后运行注入的代码。第一个可(kě)能(néng)非常复杂,并且取决于系统。但是,第二个很(hěn)容易理(lǐ)解。如果恶意软件已插入内存中,并且黑客知道了恶意软件的位置,则他(tā)们可(kě)以使用(yòng)连接的设备简单地使它旁边的缓冲區(qū)溢出,以运行该程序。这就好比将一个可(kě)以将钱包偷窃的嵌入式设备放到一个没人进去的房间里,然后吸引了一大批人。人们“溢出”到多(duō)余的房间里,钱包不见了。
缓冲區(qū)溢出所针对的弱链接
由于其内存有(yǒu)限,编程语言以及程序的通用(yòng)性,缓冲區(qū)溢出给物(wù)联网设备带来了特殊的风险。
存储器:IOT中设备通常需要节省功率,这导致少量的能(néng)量高效的存储器。缓冲區(qū)越小(xiǎo),越容易溢出。消除了固有(yǒu)的IoT安全“缓冲區(qū)”后,IoT成為(wèi)了应对此类攻击的理(lǐ)想场所。
语言:大多(duō)数用(yòng)于IoT的程序都是用(yòng)C或C ++编写的。C和C ++都没有(yǒu)“垃圾收集器” 来满足额外的内存需求,这增加了缓冲區(qū)溢出漏洞的风险。同样,这些语言使用(yòng)指针,黑客可(kě)以使用(yòng)指针来确定关键代码在内存中的位置。
通用(yòng)性:為(wèi)我们的物(wù)联网设备購(gòu)买现成的,廉价的程序的便利性可(kě)能(néng)太诱人了。但是,当您使用(yòng)与其他(tā)所有(yǒu)人相同的代码时,就有(yǒu)冒常见漏洞的风险。这样的一个漏洞,被称為(wèi)魔鬼的常春藤,在软件中发现数千物(wù)联网设备的使用(yòng),只是最近透露。许多(duō)机器只能(néng)通过默默无闻来逃脱感染。如果您的产品由于通用(yòng)代码而可(kě)以与成千上万的其他(tā)产品一起被感染,则更有(yǒu)可(kě)能(néng)成為(wèi)目标产品。
缓冲區(qū)溢出可(kě)用(yòng)于访问设备或使设备崩溃。
禁止(编程)Windows,打补丁(安全网关)墙
现在我们知道了缓冲區(qū)溢出对典型的物(wù)联网设备造成的危险,我们如何防御它?有(yǒu)几种方法可(kě)以减轻这种风险。如果您自己编写软件,请仔细进行内部编程以确保设备安全:
检查输入大小(xiǎo)-如果您知道输入应该多(duō)大,请检查以确保它是该大小(xiǎo)。发生缓冲區(qū)溢出漏洞是因為(wèi)将太大的值写入内存。如果您可(kě)以在将大小(xiǎo)传递到内存之前检测到大小(xiǎo),则可(kě)以拒绝太大的值,否则将导致溢出。这可(kě)能(néng)不适用(yòng)于所有(yǒu)系统,例如传入的传感器数据可(kě)能(néng)是未知大小(xiǎo)的系统。
使内存不可(kě)执行-如前所述,黑客通常会将恶意软件隐藏在内存中,然后使用(yòng)缓冲區(qū)溢出来执行它。如果他(tā)们将源代码注入的部分(fēn)是不可(kě)执行的,则可(kě)能(néng)会使他(tā)们无法激活程序。由于缓冲區(qū)溢出攻击的多(duō)样性,这可(kě)以阻止某些入侵,但不能(néng)阻止所有(yǒu)入侵。
使用(yòng)ASLR(地址空间布局随机化) -正如GI乔斯经常说的那样,知道是成功的一半。如果黑客知道关键代码的存储位置,则他(tā)们可(kě)以覆盖或删除它。ASLR随机分(fēn)配内存位置,使攻击者更难找到目标。
即使您使用(yòng)别人的程序,您也可(kě)以坚持一些最佳实践,或者自己启用(yòng)它们,以保护您的系统。其中一些可(kě)能(néng)很(hěn)快就会被政府强制执行:
启用(yòng)补丁-如果您发现自己的软件容易受到攻击,则需要能(néng)够对其进行补丁。如果您做不到,则您的小(xiǎo)发明可(kě)能(néng)会成為(wèi)僵尸网络中其余部分(fēn)的“僵尸”。
网关-如果要為(wèi)大型网络设计外围设备或传感器,请考虑设计与IoT安全网关的互操作性。这些可(kě)以减少黑客直接攻击您的设备,而不得不处理(lǐ)专门為(wèi)安全性设计的门户的可(kě)能(néng)性。
身份验证-使用(yòng)“中间人”(MITM)方案尝试进行许多(duō)缓冲區(qū)流攻击。身份验证将确保您的系统仅从受信任的设备接收输入,而不从恶意代码或伪装设备接收输入。
您可(kě)以通过仔细的代码和最佳实践来保护系统。
物(wù)联网可(kě)以极大地造福人类,但也為(wèi)黑客提供了巨大的新(xīn)攻击面。缓冲區(qū)溢出攻击在过去已经被广泛使用(yòng),并且可(kě)以很(hěn)好地影响物(wù)联网。幸运的是,我们可(kě)以编写防止此漏洞的源代码,也可(kě)以将一些最佳实践纳入我们的设计中以减轻这种风险。