CVE-2026-58115:西门子 IoT2050 满分漏洞已在野利用,Node-RED 沦为后门入口

西门子 SIMATIC IoT2050 Advanced 工控边缘设备上一枚满分漏洞已经被人真刀真枪地用起来了。CVE-2026-58115 在 CVSS 3.1 与 4.0 两套标准下都是 10.0,成因是 Node-RED 的 HTTP 接口没有做认证。VulnCheck 在 10 月 30 日观察到攻击者对其蜜罐发起利用,目标很明确:在设备上跑起一个 Linux 僵尸程序,并留下一条重启也不会消失的命令通道。

事件概述

西门子在 2026 年 8 月就发布了公告 SSA-834709。受影响的是型号 6ES7647-0BA00-1YA2 的 SIMATIC IoT2050 Advanced,所有低于 V4.3.4.1 且运行 Industrial OS、同时安装了 Node-RED 的版本都在范围内。修复版本为 4.3.4.1 或更高。

官方描述很直白:设备没有对 Node-RED 的 HTTP 接口强制认证,攻击者可以未认证访问具备执行系统命令能力的编程节点,通过 HTTP 接口构造恶意 flow,从而以最高权限在底层服务器上执行任意代码。

技术细节

VulnCheck 研究员 Patrick Garrity 对这次利用的评价是:请求本身就是一份完整的利用。”它部署了一个 Node-RED flow,自动触发它,从一个攻击者控制的服务器上拉取二进制文件,全程套了三层编码。”

目前观测到的几条攻击路径:

  • 直投僵尸程序:恶意 flow 执行 shell 包装脚本,用 wget 从 85.215.73.250 下载 AMD64 架构的僵尸网络二进制,wget 失败则用 curl 兜底,最终落盘为 /dev/shm/.b 并执行。
  • 两阶段投递:攻击者随后改用先取 wget.sh、再由它取载荷的方式,同样是 85.215.73.250。
  • 伪装内核线程:另一批请求访问 45.194.90.57:38472 取 .sys_update,落盘为 /tmp/.kworker,名字刻意模仿内核工作线程。
  • 不带载荷的纯后门:相当一部分请求根本不下载任何东西,只在 flow 里挂一个 HTTP in 端点(路径为 /cmd 或随机字符串),经 function 节点接到开启 addpay 的 exec 节点。这样攻击者事后用查询参数就能执行任意命令。

最后这条最需要警惕。前几种依赖内存或临时目录里的植入物,重启可能丢;而 flow 本身是持久化配置,设备重启后后门依然在,靠”重启一下就干净了”的思路完全无效。

影响评估

双框架满分的原因不只是未认证:CVSS 4.0 向量里后续系统影响 SC/SI/SA 全为高,意味着失守的不只是这台边缘网关,还包括它所连接的下游系统。IoT2050 的典型角色是产线数据采集与协议转换,通常放在车间内网,理论上有 NAT 隔挡;但只要有任何一条端口映射、远程运维通道或临时调试暴露,攻击面就成立。攻击者已经在主动扫,未认证、单请求、无需交互,扫描成本几乎为零。

修复建议

  • 升级到 Industrial OS V4.3.4.1 或更高,这是唯一的根治手段。
  • 暂时无法升级的,按西门子建议卸载 Node-RED;确有业务依赖的,至少做到:启用 HTTPS、给编辑器和 admin API 加基于凭证或 OAuth/OpenID 的认证、给 HTTP 节点与 Dashboard 加 basic 认证。
  • 限制设备出网:允许列表之外的出站连接一律阻断,能直接掐掉 wget/curl 拉载荷这一段。
  • 排查已有失陷痕迹:Node-RED flow 中出现 HTTP in 接 exec 的组合、/dev/shm/.b、/tmp/.kworker 等文件、异常的外连 IP。
  • 把 Node-RED 编辑器端口从任何公网入口上摘掉,这是成本最低的一步。

还有个容易被忽略的细节:攻击者特意做了三层编码。这不是为了绕过某个具体 WAF,而是为了让日志里的人眼和基于正则的检测规则都失效——解码后的真实意图被埋在几层 base64 或百分号编码之下。如果所在网络有出口流量审计,值得把”短期内多次出现深层编码的 POST 请求体”列为一条独立告警规则。

参考来源