概述
思科发现,当暴露于互联网或不受信任的网络时,Cisco IOS XE 软件 (CVE-2023-20198) 的 Web 用户界面 (Web UI) 功能中的一个先前未知的漏洞会被主动利用。这会影响运行 Cisco IOS XE 软件且启用了 HTTP 或 HTTPS 服务器功能的物理和虚拟设备。
成功利用此漏洞允许攻击者在受影响的设备上创建具有 15 级访问权限的帐户,从而有效地授予他们对受感染设备的完全控制权,并允许后续可能的未经授权的活动。
思科于 2023 年 9 月 28 日发现了潜在恶意活动的早期证据,当时向思科技术支持中心 (TAC) 立案,发现客户设备上存在异常行为。经过进一步调查,早在 9 月 18 日就观察到了相关活动。该活动包括授权用户通过可疑 IP 地址 (5.149.249[.]74) 以用户名“cisco_tac_admin”创建本地用户帐户)。此活动于 10 月 1 日结束,当时除了创建可疑帐户外,思科没有观察到任何其他相关行为。
10 月 12 日,思科 Talos 事件响应和TAC 检测到后来确定为同一天开始的另一组相关活动。在此集群中,观察到未经授权的用户从第二个可疑 IP 地址 (154.53.56[.]231) 以“cisco_support”名称创建本地用户帐户。与 9 月份的案例不同,这次 10 月份的活动包括多项后续行动,包括部署由配置文件(“cisco_service.conf”)组成的植入程序。配置文件定义了用于与植入程序交互的新 Web 服务器端点(URI 路径)。该端点接收某些参数(下面将更详细地描述),这些参数允许参与者在系统级别或 IOS 级别执行任意命令。为了使植入程序生效,必须重新启动网络服务器;在至少一个观察到的案例中,服务器没有重新启动,因此尽管安装了植入程序,但它从未激活。
植入程序保存在文件路径“/usr/binos/conf/nginx-conf/cisco_service.conf”下,其中包含两个由十六进制字符组成的变量字符串。植入程序不是持久性的,这意味着设备重新启动会将其删除,但新创建的本地用户帐户即使在系统重新启动后仍然保持活动状态。新用户帐户具有 15 级权限,这意味着他们拥有设备的完全管理员访问权限。这种对设备的特权访问以及随后创建的新用户被跟踪为 CVE-2023-20198。
思科评估这些活动集群很可能是由同一参与者执行的。两个集群看起来很接近,十月份的活动似乎是在九月份活动的基础上建立的。第一个集群可能是攻击者的最初尝试并测试他们的代码,而 10 月份的活动似乎表明攻击者扩展了他们的操作,包括通过部署植入程序建立持久访问。
植入代码分析
该植入程序基于Lua编程语言,由29行代码组成,可方便执行任意命令。攻击者必须向设备创建 HTTP POST 请求,该请求提供以下三个功能(图 1):
第一个函数由“menu”参数指定,该参数必须存在且必须非空。这将返回一串由正斜杠包围的数字,思科怀疑这可能代表植入程序的版本或安装日期。
第二个函数由“logon_hash”参数决定,该参数必须设置为“1”。这将返回一个 18 个字符的十六进制字符串,该字符串被硬编码到植入程序中。
第三个函数也由“logon_hash”参数决定,该参数检查参数是否与硬编码到植入程序中的 40 个字符的十六进制字符串匹配。这里使用的第二个参数是“common_type”,它必须是非空的,其值决定代码是在系统级别还是在IOS级别执行。如果代码在系统级别执行,则该参数必须设置为“subsystem”,如果在IOS级别执行,则该参数必须设置为“iox”。IOX 命令在特权级别 15 上执行。
在大多数情况下,思科观察到安装了此植入程序,第二个函数中的 18 个字符的十六进制字符串和第三个函数中的 40 个字符的十六进制字符串都是唯一的,尽管在某些情况下,这些字符串在不同的设备上是相同的。这表明参与者有一种方法可以根据第二个函数返回的值计算第三个函数中使用的值,充当第三个函数中提供的任意命令执行所需的身份验证形式。
指导和缓解
思科强烈建议可能受此活动影响的组织立即实施思科产品安全事件响应团队通报中概述的指南。
组织应在设备上寻找原因不明或新创建的用户,作为与此威胁相关的潜在恶意活动的证据。识别植入是否存在的一种方法是对设备运行以下命令,其中“DEVICEIP”部分是要检查的设备的 IP 地址的占位符:
curl -k -X POST "https[:]//DEVICEIP/webui/logoutconfirm.html?logon_hash=1"
注意:如果设备仅配置为不安全的 Web 界面,则上述检查应使用 HTTP 方案。