79% 对 51%:独立数字银行的应用安全落后。 阅读报告

深度解析

深度解析

UnrealIRCd 命令注入已在野利用(CVE-2026-114713)

label 标签转义缺陷让 UnrealIRCd 普通用户可在互联网络上执行服务器命令;已在 6.2.7.1 修复,并已在野利用。

TL;DR

  • UnrealIRCd 的 labeled-response 模块存在转义缺陷,任何普通用户都能注入以服务器权限执行的服务器间命令。UnrealIRCd 于 2026 年 11 月 7 日发布 6.2.7.1 和热补丁。
  • 加载该模块的 UnrealIRCd 6.0.0 至 6.2.7 服务器都会受影响,默认配置会加载该模块;网络必须有两个或更多互联服务器。
  • CVE 记录将其评为 CVSS v3.1 8.6 High。CISA 的 Known Exploited Vulnerabilities(KEV)目录于 2026 年 11 月 13 日将其加入,其 Stakeholder-Specific Vulnerability Categorization(SSVC)记录标记为正在利用。
  • 升级到 6.2.7.1 或应用厂商热补丁,然后检查模块版本。SPAMFILTER 临时缓解措施见“如何修复?”。

我受影响吗?

以下条件全部成立时,您会受影响:

  • 服务器运行 UnrealIRCd 6.0.0 至 6.2.7,或已停止维护的 5.x 版本。
  • 已加载 labeled-response 模块。默认的 modules.default.conf 会加载它。
  • 网络有两个或更多互联服务器。CVE 描述的是该拓扑下以服务器权限执行命令。
  • 普通用户可以连接并发送 IRCv3 消息标签。

单个未互联的服务器不会把注入的行转发给对端,因此 CVE 描述的服务器权限路径不适用。仍应升级:6.2.7.1 还修复了另外八个问题,包括两处 IP 地址泄露。

分支 受影响版本 修复版本
6.x 6.0.0 至 6.2.7 6.2.7.1
5.x 所有版本(2023-07-01 停止维护) 无;升级到 6.2.7.1

检查正在运行的版本和模块状态:

# Version of the running server
./unrealircd version

# Is the module loaded, and at which version?
./unrealircd module-status | grep labeled-response

模块行显示补丁状态。labeled-response 5.0 表示未修复。labeled-response 5.0-hot-patch-bundle-20261107 或 labeled-response 6.2.7.1 表示已修复。

如何修复?

升级到 6.2.7.1,或在不重启的情况下应用热补丁,然后检查模块行。

  1. 在网络中应用厂商的临时 SPAMFILTER。在每个服务器上以 IRCOp 身份运行:SPAMFILTER add -regex T block - Invalid_label ^label=(?![^\r\n;\x20]*\z)。它会阻止包含回车、换行、分号或空格的 label,并且只有在所有服务器运行 6.0.4 或更高版本时才有效。
  2. 在每个服务器上运行 ./unrealircd hot-patch bundle-20261107。最后一行应说明补丁已安装且服务器已正确 rehash。
  3. 或者运行 ./unrealircd upgrade 并重启。Windows 用户从厂商网站下载 6.2.7.1。
  4. 使用 ./unrealircd module-status | grep labeled-response 验证。输出必须显示热补丁包或 6.2.7.1。
  5. 所有服务器修复后移除 SPAMFILTER。

对于已停止维护的 5.x,在每个服务器的配置中加入 blacklist-module "labeled-response"; 并重启,而不只是 rehash。UnrealIRCd 5 自 2023-07-01 起停止维护,不再获得修复。

热补丁覆盖该版本的九个问题。如果失败,厂商的热补丁常见问题说明了发行版升级和构建失败的情形;升级到 6.2.7.1 是备选方案。

根本原因是什么?

服务器把 IRCv3 label 消息标签复制到固定缓冲区,然后在构建回复时直接格式化,没有转义分隔标签、参数和行的分隔符。

在 UnrealIRCd 6.2.7 中,lr_pre_command() 用 strlcpy 把标签值复制到 currentcmd.label。唯一的校验在 labeled_response_mtag_is_ok()。它检查值非空、客户端支持 labeled-response 和 batch 能力,以及值不超过 64 字节。

int lr_pre_command(Client *from, MessageTag *mtags, const char *buf)
{
    lr_clear();

    if (IsServer(from))
        return 0;

    for (; mtags; mtags = mtags->next)
    {
        if (!strcmp(mtags->name, "label") && mtags->value)
        {
            strlcpy(currentcmd.label, mtags->value, sizeof(currentcmd.label));
            currentcmd.client = from;
            break;
        }
    }

    return 0;
}

随后 gen_start_batch() 用 snprintf 把 label 写入 @label=%s :%s BATCH +%s labeled-response。lr_post_command() 在单条回复路径中也这样做:

snprintf(packet, sizeof(packet) - 3,
         "@label=%s%s%s",
         currentcmd.label,
         more_tags ? ";" : " ",
         more_tags ? currentcmd.firstbuf + 1 : currentcmd.firstbuf);

在 IRC 中,一条消息由标签段、来源、命令和参数组成。分隔符的作用如下:

  • 分号分隔标签。
  • 空格结束标签段。
  • 回车或换行结束消息。

因此,包含这些字节之一的 label 会改变 UnrealIRCd 构建的回复结构。label 还会通过消息标签库复制到 ACK 回复中。该库使用同样的未转义值。

如何被利用?

  1. 攻击者以普通用户身份连接到网络上的任意服务器,客户端能够发送 IRCv3 标签。
  2. 攻击者发送带 label 标签的命令,标签值包含标签分隔符、空格或换行。服务器接受它,因为校验只检查长度和客户端能力。
  3. UnrealIRCd 把该 label 复制到 BATCH 开始、ACK 回复或该命令缓冲的单条回复中。
  4. 分隔符把生成的文本拆成额外的标签、参数或第二条 IRC 消息。
  5. 回复经过服务器链路。对端把额外的消息解析为来自受信任链路的服务器间命令,因此以服务器权限执行。

解释该缺陷不需要公开利用代码,本文也没有链接任何利用代码。厂商表示任何普通用户都能 KILL、GLINE 以及做许多其他操作。CISA 记录标记为正在利用,因此该技术已被使用。

攻击如何展开?

普通用户在 label 中放入标签和行分隔符,UnrealIRCd 未转义地把 label 复制到回复中,对端服务器把注入的命令当作受信任服务器命令执行。

flowchart LR A["普通用户发送带伪造 label 标签的
命令"] --> B["模块复制 label
不检查分隔符"] B --> C["构建回复
@label=<值> ..."] C --> D["分隔符把回复拆成
额外标签或第二行"] D --> E["回复经过服务器链路"] E --> F["对端以服务器权限
执行注入的行"] F --> G["KILL、GLINE 等
服务器命令被执行"]

攻击者能做什么?

普通用户可以执行本应只有服务器或 IRCOp 才能执行的命令,包括针对其他用户和频道的 KILL 和 GLINE。

影响需要以下全部条件:

  • 服务器运行受影响版本并加载 labeled-response。
  • 网络有两个或更多互联服务器,使对端把注入的行解析为服务器命令。
  • 攻击者能以普通用户身份连接。不需要服务器账户或操作员身份。
  • 攻击者能发送 IRCv3 标签。原始套接字或脚本客户端即可。

厂商称这是 UnrealIRCd 15 年来最严重的问题。CISA 的 SSVC 记录把技术影响标为 total、可自动化标为 yes。CVE 记录只评估完整性影响(C:N/I:H/A:N);可用性和机密性影响取决于攻击者执行的命令。

为什么修复有效?

修复拒绝任何包含空格、分号、反斜杠、回车或换行的 label,因此值不再能改变回复结构。

修复提交 05b5f5fdc8bb 在 labeled_response_mtag_is_ok() 中增加一项检查:

 int labeled_response_mtag_is_ok(Client *client, const char *name, const char *value)
 {
    if (BadPtr(value))
        return 0;

+   if (strpbrk(value, " ;\\\r\n"))
+       return 0;
+
    if (IsServer(client))
        return 1;

检查在服务器分支之前执行,因此也适用于来自互联服务器的标签。每个使用 currentcmd.label 的回复路径现在都收到不含标签分隔符、参数分隔符或换行的值。这覆盖批次开始、ACK 回复和单条回复缓冲区。

厂商在 6.2.7.1 和热补丁包中提供了同样的更改。该修复对本 CVE 是完整的;该版本中的另外八个问题是不同的更改。

如何检查是否已遭入侵?

没有公开的入侵指标。CISA 标记为正在利用,但厂商和 CISA 都没有发布该 CVE 的请求模式、受害者数量或日志签名。

先检查补丁状态,因为未修复的服务器就是暴露面:

./unrealircd module-status | grep labeled-response
./unrealircd version

然后检查服务器日志中厂商列出的影响:

  • 不是由 IRCOp 或已知服务器链路发出的 KILL、GLINE、SVS* 及其他服务器命令。
  • 同一时间的服务器链路断开或协议错误。
  • 没有操作员执行的配置或封禁列表更改。

UnrealIRCd 的日志因构建和日志级别而异,被阻止的尝试可能不留痕迹。SPAMFILTER 在阻止 label 时会记录匹配;如果启用了过滤器,请搜索其阻止消息。

时间线

  • 2026-11-04:编写修复提交 05b5f5fdc8bb。
  • 2026-11-07:UnrealIRCd 于 15:00 UTC 发布 6.2.7.1 和热补丁 bundle-20261107。
  • 2026-11-08:发布 CVE 记录,厂商向 oss-security 邮件列表发送公告。
  • 2026-11-12:CISA 的 SSVC 记录标记为正在利用。
  • 2026-11-13:CISA 将 CVE-2026-114713 加入 KEV 目录,截止日期为 2026-11-16。

从修复到 CISA KEV 用时 9 天
图 1:修复于 2026 年 11 月 4 日编写,版本于 11 月 7 日发布。CISA 于 11 月 12 日标记为正在利用,并于 11 月 13 日将该 CVE 加入 KEV。来源:UnrealIRCd 公告、CVE 记录和 CISA KEV,2026 年 11 月 14 日检查

常见问题

CVE-2026-114713 是否已在野利用?

是。CISA 于 2026 年 11 月 13 日将其加入 KEV 目录,其 SSVC 记录在 11 月 12 日标记为正在利用。厂商公告描述了影响,但没有指明活动或受害者。

SPAMFILTER 缓解措施能完全修复问题吗?

不能。只有当网络上所有服务器运行 6.0.4 或更高版本时,它才能阻止关键的 label 注入。它不能修复 6.2.7.1 中的另外八个问题,而且它是临时过滤器,不是补丁。

我运行 UnrealIRCd 5,该怎么办?

UnrealIRCd 5 自 2023-07-01 起停止维护,并受该关键问题影响。在每个服务器上加入 blacklist-module "labeled-response"; 并重启,然后迁移到 6.2.7.1。厂商表示其他停止维护的版本未检查,很可能也受影响。

单个服务器会受影响吗?

CVE 描述的是两个或更多互联服务器网络中,以服务器权限执行命令。单个未互联的服务器不会把注入的行转发给对端,因此该路径不适用。仍应升级,因为 6.2.7.1 修复了另外八个问题。

如何验证热补丁?

运行 ./unrealircd module-status | grep labeled-response。该行必须显示 labeled-response 5.0-hot-patch-bundle-20261107 或 labeled-response 6.2.7.1。仅显示 labeled-response 5.0 表示未安装补丁。

参考文献

  • CVE-2026-114713 记录,MITRE CNA,2026-11-08 发布,CVSS v3.1 8.6,CWE-140,以及 CISA ADP 的 SSVC 块:https://www.cve.org/CVERecord?id=CVE-2026-114713(2026 年 11 月 14 日检查)
  • UnrealIRCd,“UnrealIRCd 6.2.7.1 released and hot-patch to fix 9 security issues”,2026 年 11 月 7 日,公告正文和完整问题列表:https://www.openwall.com/lists/oss-security/2026/11/08/1(2026 年 11 月 14 日检查)
  • UnrealIRCd 新闻索引,发布日期、38% 市场份额和热补丁说明:https://www.unrealircd.org/index/news(2026 年 11 月 14 日检查)
  • 修复提交 05b5f5fdc8bb,“Fix CRITICAL issue where anyone could execute commands as server/IRCOp”,2026 年 11 月 4 日:https://github.com/unrealircd/unrealircd/commit/05b5f5fdc8bb(2026 年 11 月 14 日检查)
  • UnrealIRCd 6.2.7 源码,src/modules/labeled-response.c 中未校验的 label 复制和回复构建:https://github.com/unrealircd/unrealircd/blob/59546a20f6c9b0dae1646727acf74b4b744e9b09/src/modules/labeled-response.c(2026 年 11 月 14 日检查)
  • UnrealIRCd 默认模块列表,默认加载 labeled-response:https://github.com/unrealircd/unrealircd/blob/unreal60_dev/doc/conf/modules.default.conf(2026 年 11 月 14 日检查)
  • CISA Known Exploited Vulnerabilities 目录,CVE-2026-114713 于 2026-11-13 加入,截止日期 2026-11-16:https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json(2026 年 11 月 14 日检查)