CVE-2026-52134 已被分配。相应 CVE 记录的发布尚待进行。
src/goose/goose_receiver.cparseGoosePayload()libiec61850 v1.6 中的 GOOSE 订阅者接收路径在更新订阅者可见状态并调用已注册的监听器回调之前,未能充分拒绝某些重放或过期的 GOOSE 消息。
两项受控实验展示了同一接收路径中的相关行为:
stNum 回滚: 在订阅者处理完 stNum=2 后,重放先前捕获的 stNum=1 帧会致使监听器再次报告较旧的状态和数据。sqNum 重放: 当重放先前捕获的、具有相同 stNum 但较旧 sqNum 的帧时,该帧被标记为无效,但监听器回调仍会发生,且重放的数据依然可见。这些是同一个重放/消息新鲜度处理问题的两个相关观察结果,而非两个独立的 CVE。
攻击者必须能够:
0x88B8 注入以太网帧这不是一种任意的、基于互联网的远程攻击。
相关的接收逻辑在接收到的 stNum 与已存储的 stNum 相等时检查 sqNum。所测试的代码路径在订阅者状态更新和监听器被调用之前,不会拒绝较低的 stNum。
所测试的库文件未被修改。src/goose/goose_receiver.c 的原始副本和工作副本具有相同的 SHA-256 值:
c42f2aec80f605c458d0bca524ccb09f2e35f9b83a02f854f95d9444616c075b

veth0 / veth1 隔离虚拟以太网对tcpdump该测试平台产生了受控的状态转换,并打印了回调可见的 stNum、sqNum、有效性和数据值。易受攻击的库文件本身未被修改。
受控发布者发送了两种状态:
State A: stNum=1, sqNum=0, data=1111
State B: stNum=2, sqNum=0, data=2222
基线数据包捕获按以下顺序包含两个 GOOSE 帧:
Frame 1: stNum=1, sqNum=0
Frame 2: stNum=2, sqNum=0

订阅者输出还包含一个在状态 B 之前、针对 stNum=1, sqNum=0 的辅助回调,标记为 valid=false。该辅助回调保留在证据中,但不作为回滚结论的依据。决定性的重放前状态是稍后包含 stNum=2 和数据值 2222 的回调。
重放脚本加载了两帧基线捕获,选择帧 1,并通过 veth0 发送了一次。
紧接重放之前,监听器已报告:
stNum=2, sqNum=0, valid=true, allData={2222}
旧帧被重放一次后,监听器报告:
stNum=1, sqNum=0, valid=true, allData={1111}

这表明在重放先前捕获的较低 stNum 帧后,观察到了订阅者状态从 stNum=2 回滚到 stNum=1。
另外发送了同一旧帧的四份副本。这四份均包含 stNum=1, sqNum=0。
后续副本被报告为 valid=false,但回调编号持续增加,且重放的数据仍然可见:

这一次要观察表明,在受测接收路径中,将重复帧标记为无效并不能阻止监听器交付。
较早的一次复现使用了官方示例发布者和订阅者。发布者生成以下正常序列:
stNum=1
sqNum=0, 1, 2, 3
在订阅者已经处理了后续序列值之后,重放了首次捕获的帧(stNum=1, sqNum=0)。

由于接收到的 sqNum=0 并不比已存储的序列值更新,重放的副本被报告为无效。然而,订阅者继续打印包含重放数据的监听器事件:

该实验支持一个范围更窄但相关的观察结果:
原始的未处理重放截图保留作为支持材料:
这些原始图像包含无关的 Scapy 可选模块导入警告。这些警告并未阻止脚本报告捕获的 GOOSE 帧并完成传输,但为了查看技术结果,更倾向于使用上面较清晰的截图。
这两个实验展示了同一个 GOOSE 重放/消息新鲜度问题的不同分支:
| 观察项 | 接收到的消息 | 观察到的结果 |
|---|---|---|
较低 stNum 重放 | 已存储 stNum=2;接收到旧的 stNum=1 | 旧状态和数据被传递给监听器,并在受测运行中被报告为有效 |
非递增 sqNum 重放 | 相同 stNum;接收到较旧或重复的 sqNum | 消息被报告为无效,但监听器回调和重放数据交付仍在继续 |
第一个观察结果是主要的 CVE 发现,因为它展示了从较新状态回滚到较旧状态。第二个观察结果是关于无效的同状态重放如何继续通过监听器路径的支持性证据。
已证明的软件层面影响是:
stNum 变为较旧的 stNum。在没有独立的新鲜度强制措施的情况下消费回调数据的应用程序,可能会处理过期或重放的值。
下游影响取决于订阅者应用程序、配置、联锁逻辑和保护逻辑。
在这些实验中,未测试或操作任何物理保护继电器、跳闸回路、断路器或生产变电站网络。
在更新订阅者状态或调用监听器之前:
stNum 的 stNum。stNum 未改变时,拒绝非递增的 sqNum。stNum 回滚和重复的 sqNum 值。以下图像提供来源和环境信息。它们支持复现,但并非理解主要结果所必需。





已证明的结果是重放接受和过期状态交付。它不依赖于证明受测部署中启用了加密身份验证。
报告者: