我们生活在一个相互连接的嵌入式设备世界之中。新型物联网(IoT)设备吸引了人们的关注,有望改变业界并改变我们的生活方式。在后台运行的传统设备控制着电网、交通基础>设施、医疗流程、几乎触及日常生活的各个方面。

我们对互联设备的依赖不断提高 --- 确保这些设备的安全至关重要。

互联设备的安全性不仅仅是一个学术问题;涉及物联网设备网络攻击的实际案例仅需谷歌搜索就可以找到很多。以我为例,这些攻击是不断充斥我邮箱中的安全新闻中经常出现的头条。

物联网安全终于得到了它迫切需要的关注。物联网安全公司成立,现有的厂商正在为物联网安全投资新产品和信技术,以物联网安全为主题的会议也很多。尽管全都在谈论,但我们看到对互 联设备的成功攻击数量稳步增长。

问题是,为什么仍然有如此多的设备被黑客入侵?


物联网固件安全问题

没有人想开发一种易于被破解的产品。 显然,产品需求文档中没有包含后门或者是容易绕过身份验证的指令。然而,许多产品都包含这些后门和其他容易避免的安全漏洞。 简而言之,许多设备很容易被黑客入侵。

那么,为什么这些公司发布带漏洞的互联产品呢? 尽管有许多因素,但一个关键问题是工程师常常只是不知道他们的设备中有安全漏洞。事实上,漏洞往往是无意错误的结果。


意外错误

可能是由于不遵循安全编码行为规范或者是包含了有漏洞的函数库而引入了安全漏洞。 新产品功能也可能有安全方面尚不明显的副作用。举例来说,对现有软件做修改可能会对其他子系统中产生副作用。 这些意外闪失中的任何一个都可能导致安全漏洞。


有限的安全对策

物联网设备本质上受资源限制,与笔记本电脑和服务器中的处理器和操作系统相比,物联网设备中的处理器和操作系统更便宜,功能和复杂度更低。结果就是,这些设备无法实现诸如TPM硬件、地址空间布局随机化(ALSR)等安全功能。

简而言之,工程师对他们设备和/或高级工具中隐藏的安全漏洞无法足够了解,无法防御可能的攻击。


查找漏洞

工程师们无法修复不知道的漏洞。发现漏洞至关重要,因为一旦知道就可以轻松地解决并修复许多漏洞。人工查找安全漏洞的方法缓慢、繁琐且容易出错,并且需要很深的安全知识。更糟糕的是,除非消除了所有的安全漏洞,否则这些设备仍可能成为网络攻击的受害者。在许多情况下,黑客只需找到一个漏洞即可成功接管整个设备,因此,至关重要的是要消除尽可能多的漏洞。

有这些挑战,如此多的设备带易于利用的安全漏洞也就不足为奇了。

从对嵌入式设备成功进行网络攻击的头条新闻中我们知道,黑客擅长发现和利用漏洞。黑客经常分析固件,专门搜索漏洞。取得对互联设备固件的访问权通常很容易。在许多情况下,厂商从网站分发固件更新以供下载。在某些情况下,需要付出更多努力才能从设备闪存上读取固件,或者从其他来源获取固件。

有了固件之后,黑客便可以解压缩固件并开始寻找漏洞来攻击。通过将开源工具和人工分析相结合,黑客搜索Web服务器、telnet服务器、USB接口以及他们可以找到的与设备通信的其他方法。这些服务可以与设备进行通信并对其进行控制,服务本身就是漏洞的常见来源。 黑客们自豪于能够分析这些服务的固件,他们通常能够找到可以被击败或绕过的身份验证,从而让他们可以在网络攻击中控制该设备。他们还寻找机会对设备执行缓冲区溢出攻击和其他拒绝服务攻击。

即使对一个经验丰富的工程师而言,人工搜索可利用的漏洞看起来就像俗称的“ 大海捞针” ,对于有合适工具和技能的黑客来说,更像是配有地图和指南针在国家公园中的远足。如果你从未在旷野远足,并且不知道如何阅读地图和指南针,那么你将会迷路。但是经验丰富的徒步旅行者能够找到他的路,同样,受过正确培训,拥有良好工具且有强烈动机的黑客在寻找破解该设备的方法时,拥有标记良好的途径。

分析固件映像通常会显示出符号表和文本字符串,这些可用于逆向工程和识别漏洞。在某些情况下,还会发现密码哈希值和安全密钥。开源函数库和服务经常出现。借助开源方案,可将源代码和已知漏洞(CVE)一起使用。


嵌入式/ 物联网设备漏洞的影响

漏洞仅仅是黑客在网络攻击期间利用的系统设计或实施中的缺陷。例如,Telnet支持用"root,root"登录进行 shell访问是一个设计缺陷,带有隐藏后门的Web界面也存在设计缺陷,该后门允许访问任何知道如何访问它的用户。Web界面接受固定长度缓冲区而不进行范围检查数据的输入,会产生缓冲区溢出攻击,这是实施错误。

了解漏洞的潜在影响也很重要:影响范围从轻微的性能下降到注入对设备进行完全控制的恶意固件,以及介于两者之间的所有内容。网络攻击的影响包括:

● 性能下降/电池寿命缩短

● 窃取数据

● 临时拒绝服务

● 设备变砖(禁用设备)

● 植入恶意软件(例如,为僵尸网络创建僵尸程序)

● 更改设备行为

网络攻击的后果会因设备的功能而异。在我们所在的交通工具、电网和医疗流程依赖互联设备的世界中,潜在危害远远大于传统IT网络攻击的数据盗窃。

了解设备固件中存在的实际漏洞,可以为OEM厂商提供正确解决问题并确定必要修复优先顺序所需的信息。


嵌入式/物联网设备的漏洞类型

漏洞漏洞含义
未经验证的访问 允许不受限制的访问,使攻击者轻松获得设备的访问和控制权限。
弱认证 简单的基于密码的身份验证或较弱的密码算法,可能会被蛮力攻击所破解。
隐藏的后门 尽管可能对客户支持有所帮助,但它们是黑客快速识别和利用的主要功能,通常会带来严重后果。
存储在固件中的密码哈希 用户无法更改的硬编码密码,以及用户很少更改的默认密码,导致利用这些设备的难度很小。由Mirai恶意软件所利用,创建了大约250万个物联网设备的僵尸网络。
存储在固件中的密钥 密钥很关键,但是存储在固件中时,可能会导致设备容易被攻击。
缓冲区溢出漏洞 使用不安全的字符串处理函数(例如:strcpy、strcat等),而不是使用更安全的strncpy,strncat函数,可能会导致可被利用的缓冲区溢出,造成拒绝服务和代码注入攻击。
使用带已知漏洞的开源方案 自动化黑客工具包括针对开源平台和函数库中已知漏洞的攻击,最新版本经常包含修复程序,但许多设备以未打补丁形式发布。
生产系统中的调试服务 尽管调试在开发和测试过程中至关重要,但它们提供了对设备的不受限制的访问和控制。

 

安全漏洞的后果

利用漏洞是黑客攻击设备使用的主要技术之一。尽管在网络攻击中他们也可能使用被盗凭据、社交工程和其他“ 软” 方法,漏洞利用仍然是他们的主要方法。只要设备中存在可利用的漏洞,黑客就会竭尽全力找到它们。

某些类别的漏洞需要更高水平的技能才能发现或利用。有些人争论认为这些漏洞不像那些容易发现且容易利用的漏洞那么严重,显然这是不对的。

由国家赞助的黑客团体和犯罪企业倾注了大量资源来寻找漏洞。一旦发现漏洞,就会创建自动攻击工具,并经常将其出售给黑客。在某些情况下,这些工具会在黑客论坛公开,让只从互联网搜索的潜在黑客找不到这些工具。

确保互联设备安全的唯一方法是在设备发布之前查找并消除漏洞。


让设备安全

开发具有强大安全性的物联网设备时必须要解决两个不同的问题:第一个,在设计和开发阶段引入的安全漏洞必须要被找到并处理掉,这类漏洞范围从不安全的字符串处理函数(诸如用更安全变量的snprintf( )替换使用sprintf( )函数),到存储在设备中的隐藏后门和密钥。清除这些问题至关重要。

第二,必须包含安全对策。拥有强认证、安全启动、硬件安全密钥存储、加密通信以及安全的固件升级是物联网设备重要的安全元素。在实施流程中必须多加小心,确保不作为这些功能的一部分引入安全漏洞。这包括在固件中存储硬编码密钥或密码哈希、到导致缓冲区溢出攻击的不安全编码行为,或者是本文描述的任何其他漏洞类型。

必须在新设备或系统的设计早期考虑安全对策。支持安全启动或设备篡改检测要求特定的硬件能力 --- 必须在选择硬件之前考虑这些功能。


总结

现代嵌入式设备和系统是执行关键功能的复杂互联设备。因此,在这些设备中包含最高等级的安全性是一项关键的设计任务。尽管尽了最大努力,许多嵌入式设备仍然充斥安全漏洞,黑客正在利用这些漏洞。

我们都同意物联网设备能够免受黑客攻击。保护嵌入式设备的安全从了解哪些漏洞需要被修复开始。诸如Cybellum V-Ray这样的自动化风险管理工具,为修复安全问题让设备保持安全提供所需信息。