Modbus网关漏洞(CVE-2021-4161)分析

发布时间 2022-01-17

一、漏洞概述


近期,启明星辰ADLab在工业控制漏洞监控中发现工控厂商Moxa的Modbus网关存在高危漏洞(CVE-2021-4161),ICS-CERT的评分高达9.8。针对该高危漏洞,ADLab研究员第一时间进行了详细分析和验证。


1.1 基本信息

根据ICS-CERT的漏洞公告,该漏洞基本信息如下:


受影响的设备:

MGate MB3180/MB3280/MB3480 Series Protocol Gateways

受影响的版本:


MGate MB3180 Series: Firmware Version 2.2 or lower

MGate MB3280 Series: Firmware Version 4.1 or lower

MGate MB3480 Series: Firmware Version 3.2 or lower

漏洞可利用性:远程、低复杂度


CVSS v3评分:9.8


1.2 漏洞描述


根据ICS-CERT漏洞公告的描述,该漏洞类型属于敏感信息明文传输。受影响设备的固件存在漏洞,攻击者可以通过嗅探网络流量来窃取和解密设备登录凭据的详细信息,从而获得对目标设备http web server的admin权限。


ICS-CERT Advisory中对漏洞的描述.png

图1 ICS-CERT Advisory中对漏洞的描述


该漏洞的CVSS3特征为(AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)。如图2所示,ICS-CERT认为该漏洞可远程利用,同时对完整性(Integrity)和可用性(Availability)的影响均为“High”。


ICS-CERT 对CVE-2021-4161 CVSS(3.0)评分.png


图2 ICS-CERT 对CVE-2021-4161 CVSS(3.0)评分


从前面的漏洞描述可知,该漏洞是一个不安全的凭据传输导致凭据泄露的漏洞。那么,为何ICS-CERT认为这样一个漏洞其对完整性和可用性的影响为“High”呢。带着这个疑惑,我们在MGate MB3180设备上对该漏洞进行了分析和验证。


二、漏洞分析


根据ICS-CERT对漏洞的描述,我们一开始猜测该系列设备的web登录采用了Basic认证。Basic认证是低性能设备web server所常用的方法,其几乎没有安全性,直接通过base64解码登录流量的认证信息即可获得用户名密码。

按照上述思路,我们对MB3180的登录流量进行了分析,如图3所示。MB3180的Web认证并没有采用Basic认证方式。


 MB3180 Web登录POST请求.png


图3 MB3180 Web登录POST请求


继续对登录请求进行分析,发现请求中的表单数据包含了“account”、“password”等字段信息。如图4所示:


MB3180 Web登录POST请求表单数据.png


图4 MB3180 Web登录POST请求表单数据(用户名admin,密码1234567)


观察表单中的数据可知,account和password没有常见哈希运算的特征。多次登录的表单数据如下所示:


使用不同用户名密码登录的POST表单部分数据记录.png

表 1 使用不同用户名密码登录的POST表单部分数据记录


从上表数据还可以发现如下特征:


account和password和输入长度是相关的;


account和password和FakeChallenge是相关的。

后续对登录页面的源码分析找到了上述特征。在登录页的js代码中,setInfo函数负责生成登录信息并以表单方式提交,如下所示:


MB3180的setInfo函数.png


图5 MB3180的setInfo函数


显然,登录数据的安全性取决于函数SetSHA256,其代码如下所示:


MB3180的SetSHA256函数.png

图6 MB3180的SetSHA256函数


分析SetSHA256函数的逻辑可知,该函数并没有真正实现SHA256的功能,而是使用了异或方式来处理输入数据。具体来讲,SetSHA256函数的返回值是xor(m,n)之后的结果,而m来源于account/password,n则来源于FakeChallenge。显而易见,在FakeChallenge被泄露的前提下,account/password是可还原的。


至此,该漏洞的原理就基本清晰了。MB3180在处理登录页面的用户名和密码加密时,未正确实现SHA256的运算,同时web server默认使用http协议。因此,在可嗅探到该设备登录的http报文时,便可通过解密表单数据来得到登录的用户名和密码。


三、漏洞验证


根据上述漏洞分析结果,我们编写了解密脚本对该漏洞进行了验证。为简化验证过程,我们直接使用Wireshark抓取了登录MB3180 Web Server的http流量,然后编写脚本对该流量进行分析并解密。


在抓包过程中,我们进行了两次登录,用户名均为admin,密码则使用了一个错误的密码(admin)和一个正确的密码(moxa)。


使用admin\admin登录的表单数据.png

图7 使用admin\admin登录的表单数据

 

使用admin\moxa登录的表单数据.png

图8 使用admin\moxa登录的表单数据


验证结果如图9所示,可从登录流量解密得到用户名和密码信息:


解密脚本验证.png

图9 解密脚本验证


四、漏洞危害


在工业控制环境中,有大量的设备并不具备TCP/IP协议栈,要把这些设备接入基于IT技术的数字化网络就需要借助协议转换网关来完成。MGate MB系列Modbus网关设备的功能即是把RS485类的工业设备接入到TCP/IP网络。这类网关设备漏洞的危害通常不仅仅影响该设备自身,更直接影响其背后支撑的现场设备。因此,NVD对该漏洞给出了两种CVSS3评分,如下所示。


NVD和ICS-CERT评分区别.png


图10 NVD和ICS-CERT评分区别


其中,NVD基于NIST的视角给出了7.5分,而ICS-CERT基于工业视角给出了9.8高分。这两种评分的差别就在于:从IT角度看,该漏洞不能修改该设备的底层数据,也不能使设备停止运行,因此不影响该设备的完整性和可用性;但从工业角度看,通过该漏洞获得管理员账号后可以修改网关的配置,进而使得该设备支撑的工业控制业务发生变更甚至是停止,所以影响了工业控制业务的完整性和可用性。


可见,同样类型的网络安全漏洞,其在工业控制系统领域的影响和危害通常要高于传统IT业务领域。因此,在处理工业控制系统网络安全漏洞时,需要考虑到工控业务环境的特殊性,结合对工控业务的影响来综合评判漏洞的危害才能更加客观真实的反映漏洞的影响力。


五、修复建议


目前,官方未发布该漏洞的修复补丁,但提供了漏洞缓解建议:

建议将受影响设备的Web Server访问的协议设置为https,避免明文传输表单数据;


建议参照Moxa SecurityHardening Guide for MGate MB3000 Series中的方式部署设备。


此外,针对工业控制系统,CISA提供了如下的通用建议:


尽量减少在公网暴露工控设备或者系统;


将控制系统网络和远程设备置于防火墙之后,并和办公网络隔离;


当需要远程访问时,采用类型VPN的安全访问方式。