bug: UBI 9 base in 4.55.0+ ships pcre2 10.40-6.el9 with no available RHEL 9 fix (CVE-2026-86145)

这个报错通常出现在对 Langfuse 自托管容器镜像做安全扫描时:4.55.0 起基础镜像从 Alpine 换成 UBI 9.8,带入了受 CVE-2026-86145 影响的 pcre2-10.40-6.el9 。优先排查你正在使用的镜像 tag 以及扫描器命中的包版本,并升级到已修复的发布版本

快速结论:这个报错通常出现在对 Langfuse 自托管容器镜像做安全扫描时:4.55.0 起基础镜像从 Alpine 换成 UBI 9.8,带入了受 CVE-2026-86145 影响的 pcre2-10.40-6.el9。优先排查你正在使用的镜像 tag 以及扫描器命中的包版本,并升级到已修复的发布版本。

适用环境:Langfuse 自托管;4.55.0 及以上(Issue 中验证了 4.56.0);基础镜像 registry.access.redhat.com/ubi9/ubi:9.8;容器运行时使用 Docker;扫描场景为外部安全扫描器。4.54.0 及更早版本基于 Alpine,不受影响。Issue 未涉及 Python、CUDA、PyTorch 或显卡版本。

最快修复方案:升级到最新发布版本。Issue 评论中确认 grype langfuse/langfuse:4.58.0 不再复现该 finding,建议直接升级到 4.58.0 或更高版本。

注意事项:Issue 中说明该 CVE 在实际运行时可能不可利用,因为镜像内没有任何组件导入 pcre2_dfa_match,但扫描器按包版本判定,仍会阻塞合规检查。仅把 4.x 升到 4.55.0 之后的任意 tag 并不能清除该 finding,因为在 ubi9:9.8 上执行 dnf upgrade 仍会解析到同一版本;需要以实际发布的最新镜像为准。此外,维护者表示基础镜像变更不属于版本间 API 约定,从浮动的 :4 tag 升级可能伴随基础发行版变化,建议固定具体 tag 并自行复扫。

问题场景

用户以自托管方式运行 Langfuse 容器镜像(Issue 中为 langfuse/langfuse:4.56.0),在对镜像做安全扫描时,扫描器持续报出 pcre2-10.40-6.el9 相关的 Critical/High 漏洞告警,对应 CVE-2026-86145。由于运行时镜像故意不带包管理器(no package manager),需要把 /var/lib/rpm 从容器中复制出来,再用 ubi9:9.8 镜像挂载 rpmdb 查询,才能确认镜像内实际安装的包版本。

报错原文

bug: UBI 9 base in 4.55.0+ ships pcre2 10.40-6.el9 with no available RHEL 9 fix (CVE-2026-86145)

pcre2-10.40-6.el9
pcre2-syntax-10.40-6.el9
pcre-8.44-4.el9

"fix_state": "Affected"

原因分析

最可能的原因是基础镜像在次版本发布中发生了变更:4.55.0 起镜像从 node:24-alpine 切换为 registry.access.redhat.com/ubi9/ubi:9.8,从而把 pcre2-10.40-6.el9 带入运行时镜像。该版本受 CVE-2026-86145(pcre2_dfa_match 越界写)影响,上游在 PCRE2 10.48 修复。Red Hat 的安全数据 API 将 RHEL 9(以及 RHEL 8、10)的 pcre2 标记为 "fix_state": "Affected" 且没有 errata,唯一已修补的构建位于 Red Hat Hardened Images 的 pcre2-main-10.48-0.1.hum1(RHSA-2026:67534),而该镜像并未使用它。

Issue 另附分析认为实际不可利用:镜像内只有 libselinux、wget 和 pcre2 自身依赖 libpcre2-8.so.0,其中 libselinux.so.1 不导入匹配器入口,node(V8 使用 Irregexp)及 78 个内置 .node 插件均不引用 pcre2。虽然 libpcre2-8.so.0 导出了 pcre2_dfa_match,但没有任何组件导入它,而该 CVE 需要以攻击者可控的 pattern 触达 DFA 匹配器,因此这条利用路径看起来不可达。但这属于运行时可达性判断,扫描器不识别调用图。

环境排查

  • 确认当前运行的 Langfuse 镜像 tag 与具体版本号(例如 4.56.0)。
  • 确认镜像基础发行版:4.55.0 及以上为 UBI 9.8,4.54.0 及更早为 Alpine 3.24.2。
  • 确认扫描器(如 grype)命中的具体包名与版本,是否为 pcre2-10.40-6.el9。
  • 确认是否使用浮动 :4 tag,以及该 tag 当前解析到的实际版本。
  • 确认是否仍在使用“升到更高 4.x 即可修复”的假设——Issue 明确指出该假设不成立。
  • 如需自查,确认具备从容器复制 rpmdb 并在 ubi9:9.8 中查询的权限与工具。

解决步骤

  1. 记录当前镜像 tag 与扫描结果,确认告警命中的是 pcre2-10.40-6.el9。
  2. 升级到最新发布版本;Issue 评论中确认 4.58.0 在 grype 下不再复现该 finding,可优先尝试该版本或更高版本。
  3. 如仍停留在 4.55.0–4.57.x 区间,不要依赖在 ubi9:9.8 上执行 dnf upgrade 来清除告警,因为仍会解析到同一包版本。
  4. 升级后重新拉取镜像并重新扫描,确认 finding 消失。
  5. 如因合规仍需固定版本,固定到已验证无该 finding 的具体 tag,而不是继续跟随浮动 :4 tag。

验证方法

对升级后的镜像重新执行扫描,例如 Issue 评论中使用的 grype langfuse/langfuse:4.58.0,确认不再出现 pcre2 相关 finding。也可按 Issue 的复现方式,把新镜像的 /var/lib/rpm 复制出来后用 ubi9:9.8 查询 rpm --dbpath /rpmdb -qa | grep pcre,确认输出中的 pcre2 版本已不再是 10.40-6.el9,或该包已不存在。

参考来源

langfuse/langfuse #18674

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 29093

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注