bug: 4.72.0 images are back on Node.js 24.21.0 (regression of #19177)

当你在自托管 Langfuse 的 Docker 镜像里执行 node -p process.version 时,如果 4.72.0 镜像返回 v24.21.0 ,就会看到 bug: 4.72.0 images are back on Node.js 24.21.0 (regression of #

快速结论:当你在自托管 Langfuse 的 Docker 镜像里执行 node -p process.version 时,如果 4.72.0 镜像返回 v24.21.0,就会看到 bug: 4.72.0 images are back on Node.js 24.21.0 (regression of #19177) 这类判断。优先排查版本字符串是否只是补丁包造成的显示问题,不要立刻认定安全修复缺失。

适用环境:Langfuse Docker 镜像 langfuse/langfuse:4.72.0、langfuse/langfuse-worker:4.72.0;已确认 linux/arm64 与 linux/amd64;自托管 Docker Compose;Issue 未提供宿主机操作系统、Python、CUDA 或显卡信息。

最快修复方案:暂无确认的一步修复方案。Issue 最终确认这不是可复现的安全回归:镜像内的 Node 版本字符串仍为 v24.21.0,但仓库的 scripts/docker/nodejs-rpm/test-node-security-fixes.js 在 web/worker、arm64/amd64 镜像中均 10/10 通过。可优先尝试用该脚本验证,而不是仅凭 process.version 判断。

注意事项:process.version 输出的是打包 RPM 的版本字符串,Langfuse 使用打过补丁的 RPM 时该字符串可能未变,因此不能单独作为安全回归证据。Issue 讨论中只覆盖了 4.72.0 已发布镜像和上述脚本检查;其他版本、其他架构或后续镜像仍需自行验证。

问题场景

用户在自托管 Langfuse 的 Docker Compose 环境中拉取 langfuse/langfuse:4.72.0 或 langfuse/langfuse-worker:4.72.0,通过 node -p process.version 检查镜像内 Node.js 版本,发现返回 v24.21.0,而 4.70.1 返回 v24.22.1。由于 4.72.0 当时还是 latest 指向的版本,拉取 latest 的用户也会看到同样的版本字符串。

报错原文

bug: 4.72.0 images are back on Node.js 24.21.0 (regression of #19177)

docker run --rm --entrypoint node langfuse/langfuse:4.72.0 -p process.version
docker run --rm --entrypoint node langfuse/langfuse:4.70.1 -p process.version

node -p process.versions
node 24.21.0, brotli 1.2.0

原因分析

Issue 最初的判断是 4.72.0 镜像回退到了 Node.js 24.21.0,导致 10 月 Node 安全修复缺失。后续排查表明这可能只是版本字符串误导:Langfuse 的 Dockerfile 使用打过补丁的 RPM,而该 RPM 的版本字符串仍保持 24.21.0,上游当时也没有适用于其基础镜像的补丁。维护者也确认采用的正是这种 patch 方式,并说明 Node.js 的关键和高危 CVE 已修补。因此,单看 node -p process.version 不足以证明安全修复缺失。

环境排查

  • 确认镜像标签与架构:langfuse/langfuse:4.72.0、langfuse/langfuse-worker:4.72.0,并区分 linux/arm64 与 linux/amd64。
  • 确认拉取的镜像是否为 Issue 中提到的发布摘要,例如 web 镜像 sha256:c311fd9db4b69f6514fdcb1b86a2a105d5a4ed51fbf0ded033ff2722459c804a、worker 镜像 sha256:aa1724b989a00f1e4ca9930709202489c73deaaf2f1116bbd3d71c77edb8fedb。
  • 检查镜像内 node -p process.version 输出,同时检查 process.versions 中的 brotli 版本。
  • 使用仓库当前的 scripts/docker/nodejs-rpm/test-node-security-fixes.js 做功能验证,覆盖 Brotli、TLS、DNS 等探测项。
  • Issue 未提供 Python、CUDA、PyTorch、显卡或 GPU 驱动信息,这些不需要作为本问题的排查前置条件。

解决步骤

  1. 不要仅依据版本字符串判定回归。先记录所拉取镜像的标签、架构和 digest。
  2. 在对应镜像内运行 node -p process.version,复现 v24.21.0 输出。
  3. 将仓库中的 scripts/docker/nodejs-rpm/test-node-security-fixes.js 放入对应镜像环境执行,分别验证 web 和 worker 镜像。
  4. 在 arm64 和 amd64 上分别执行;Issue 中 amd64 检查时固定了 Docker platform。
  5. 若 10 项安全探测全部通过,包括 Brotli、TLS 和 DNS,则说明版本字符串未反映补丁内容,不需要额外“降级/升级 Node”的特殊处理。
  6. 若脚本无法通过,再保留镜像 digest、架构和完整输出,向项目方反馈,不要只提交 process.version 结果。

验证方法

在对应架构的 4.72.0 web 和 worker 镜像中运行 scripts/docker/nodejs-rpm/test-node-security-fixes.js,确认 10/10 检查通过,尤其是 Brotli、TLS 和 DNS 探测。Issue 中 arm64 与 amd64 均已完成该验证;若你的检查也全部通过,可认为 v24.21.0 只是版本字符串显示问题,而不是缺失安全修复的回归。

参考来源

langfuse/langfuse #19529

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 31735

发表回复

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