M2M技术设计和实现漏洞

ang010ela 漏洞 2019年1月13日发布
Favorite收藏

导语:M2M是指机器与机器之间的信息交流与传递,透过网络及机器设备通讯的传递与链接达到信息共享的概念。本文介绍M2M技术设计和实现过程中的一些漏洞。

文章《The Fragility of Industrial IoT’s Data Backbone: Security and Privacy Issues in MQTT and CoAP Protocols》中讨论了MQTT和CoAP受到设计问题和实现漏洞的影响,攻击者可以破坏启用了M2M协议的设备。研究过程中,研究人员发现上万台误配置的主机存在暴露凭证、敏感信息等问题。

本文从技术角度去分析协议安全的问题。根据当前MQTT和CoAP的状态,攻击者可以实现监听、远程控制和发起攻击等目标。

M2M通信的技术原理

Message Queuing Telemetry Transport (MQTT)是一个成熟的标准和发布/订阅(Publish/Subscribe)协议,可以处理一对多通信。研究人员分析发现协议本身和软件实现过程钟都存在安全问题。而且MQTT是自动化和工业应用中被广泛应用,这对M2M是非常关键的。

Constrained Application Protocol (CoAP)遵循客户端-服务器(C/S)模式,允许对受限的节点创建对等的HTTP。CoAP虽然也是一个比较新的协议,但也在IoT和IIoT软件中被广泛使用。研究人员发现的安全问题主要集中在UDP协议的无连接属性上。虽然这些风险都在CoAP RFC中提到了,本文对CoAP服务的带宽放大潜在威胁进行分析。

MQTT处理主题字符串的问题

MQTT标准在实现过程中有很多可能产生漏洞的问题。比如,topic字符串的Unicode处理。标准处理方法是将它留给开发者来关闭连接,如果代理没有检查不允许通过的UTF-8代码点,恶意客户端会利用这一差异来通过无效的编码的字符串来关闭到客户端的连接。

Context (top left); a broker that implements the check as in the standard (top right); both client and broker do not implement the check (bottom left); the broker lets the invalid character pass, while the client follows the standard (bottom right) 图 1. 背景(左上);标准中应用检查的代理(右上);客户端和代理都不进行检查(左下);客户端遵循标准,代理传递无效的字符(右下)

如果代理遵循标准,就不会出现这样的问题。如果代理和客户端都不遵循标准,就可以避免给问题。但是如果代理不遵循标准而客户端遵循标准,客户端在接收到无效的内容后,客户端就会断开连接。

Figure 2. A malicious client could exploit the discrepancy between validating versus non-validating nodes to keep nodes offline. Notably, in this case, not following the standard appears as the best approach for a client.

图 2. 恶意客户端利用有效和无效节点之间的差异来保证节点离线

这种情况下,不遵循标准对客户端来说是最好的方法。

如果代理不遵循标准,恶意客户端就可以将retain message设置为true,QoS设置为2来保持所有的客户端离线。客户端会在接收到无效信息后会断开连接,并不告知代理收到消息。这样,代理结社客户端不会接收到消息,并保持用相同的消息来进行洪泛攻击。

攻击者可以利用的漏洞

下面讨论MQTT实现过程中的一些漏洞,以及CoAP放大攻击的效应分析。

MQTT Payload Remaining Length (CVE-2018-17614)

该漏洞是MQTT库中remaining length域的错误检查导致的无限写入(unbounded write-in)漏洞。攻击者利用该漏洞可以在实现MQTT客户端的设备上执行任意代码。攻击者必须控制伪造的MQTT代理,或代理必须没有对remaining length域进行适当的检查,就将MQTT包从发布者中继转发给订阅者了。该漏洞会在MQTT PUBLISH包在分析路径过程中被触发,尤其是在读取“remaining length”和“topic length”域的过程中。

而且攻击者还可以触发callback域的覆写(overwrite),这会产生一个持续的DoS条件。如果代理是恶意的,所有有漏洞的节点都会处于持续的DoS状态,或继续执行攻击者推送的任意代码。

虽然该漏洞已经有补丁了,但是开发者并没有以最好的方式来应用它。该漏洞的修复最终取决于开发者是否关闭该连接、或丢弃该包并保持连接。

CoAP: UDP IP地址欺骗和放大风险

Figure 3. Abstract layering of CoAP,<br>based on a figure from a document by Internet Engineering Task Force (IETF)

图 3. CoAP抽象层

CoAP是基于UDP的协议,因此就会收到IP Spoofing攻击。与TCP协议不同,UDP协议没有握手阶段,也就是说如果攻击者发送了一个源IP地址伪造的UDP包给终端,终端是没有办法验证包的来源的。也就是说如果自动化系统对欺骗没有应对措施,终端必须信任UDP packet heder和对应的行为。

CoAP的另一个风险是放大攻击。在试验中,研究人员搭建了一个CoAP服务器和客户端组成的测试网络,研究人员发起了增加的payload size的放大攻击来估计最大带宽放大因素。

CoAP除了是基于UDP的,它还是基于request-response方案的。CoAP responses明显比request要大很多。研究人员估计,CoAP放大攻击的放大因子可以达到32倍,该放大因子介于DNS和SSDP的放大之间。也就是说攻击者以1Mbps的带宽可以攻击32Mbps的目标网络。

进一步查看协议说明发现CoAP支持block-wise transfers(分块传输),意味着大量的响应response会被分割为更小的响应。但是大响应和小响应都有block size。这意味着攻击者可以伪造一个要求最大block size的请求包,这可以将放大因子增加到32倍。

更多漏洞和技术详细解释参见The Fragility of Industrial IoT’s Data Backbone: Security and Privacy Issues in MQTT and CoAP Protocols

本文翻译自:https://blog.trendmicro.com/trendlabs-security-intelligence/machine-to-machine-m2m-technology-design-issues-and-implementation-vulnerabilities/如若转载,请注明原文地址: http://www.4hou.com/vulnerable/15046.html
点赞 2
M2M
  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论