GitLab 安全事件:针对 CVE-2026-97229 的利用尝试 | Alpine Linux

Lobsters Hottest 新闻

摘要

Alpine Linux 报告了一起安全事件,攻击者试图利用 GitLab 的严重漏洞 CVE-2026-97229(Ruby 的 Onigmo 正则表达式引擎中的一个 CVSS 评分为 10.0 的漏洞,影响 CI 配置解析),促使其全面重建 GitLab 实例并重置密码。该文章警告称,仅升级 GitLab 并不足够,因为修复包含在随附的 Ruby 补丁中,需要使用 Ruby 3.3.13/3.4.12/4.0.9 或更高版本。

<p><a href="https://lobste.rs/s/2zsjwt/gitlab_security_incident_attempted">评论</a></p>
查看原文
查看缓存全文

缓存时间: 2026/10/28 23:34

# GitLab 安全事件:针对 CVE-2026-97229 的利用尝试 来源:https://alpinelinux.org/posts/GitLab-security-incident-CVE-2026-97229.html 2026\-10\-28 10 月 20 日和 21 日,一名攻击者试图利用我们实例上的一个 GitLab 漏洞 \(CVE\-2026\-97229\),此时距离修复发布已过去一周。攻击险些成功。我们尚未发现攻击成功的证据,但无法排除这种可能,因此我们将该实例视为已被入侵,并从头重建。检查表明,aports 仓库、软件包以及 10 月 21 日发布的版本均未遭篡改。 GitLab 正在接受测试,之后才会重新向公众开放。所有密码均已重置,因此服务恢复后,您需要通过登录页面上的“忘记密码?”设置新密码。重新开放时,我们会发布具体操作说明。在此期间:如果您在其他任何地方使用了与 gitlab\.alpinelinux\.org 账户相同的密码,请更改那些地方的密码。我们已发现,有人使用从其他网站泄露的密码,对我们的 GitLab 进行自动化登录尝试。 如有问题或疑虑,请通过 infra@alpinelinux\.org 联系我们。 ## 事件经过 **漏洞:**CVE\-2026\-97229 是 GitLab 在计算 CI 配置中的正则表达式时存在的一个严重漏洞 \(CVSS 10\.0\)。底层缺陷位于 Ruby 内置的正则表达式引擎 Onigmo 中。GitLab 于 10 月 12 日发布了修复版本 (https://docs.gitlab.com/releases/patches/patch-release-gitlab-19-4-2-released/),但实际修复是一组针对 Ruby 的补丁,而该 Ruby 随 GitLab 自己的软件包和容器镜像一同提供。Ruby 上游于 10 月 23 日在 Ruby 3\.3\.13、3\.4\.12 和 4\.0\.9 中发布了修复 (https://www.ruby-lang.org/en/news/2026/10/23/ruby-3-3-13-released/)。 **攻击:**10 月 20 日和 21 日,一个新注册的账户向我们的 GitLab 实例提交了精心构造的 CI 配置。当时该实例仍运行 19\.3\.4,尚未包含 10 月 12 日的修复。这导致 GitLab 工作进程崩溃了 8 次。其中 4 次崩溃中,攻击者完成了部分漏洞利用流程,但在下一步失败。攻击者还下载了我们的 GitLab 容器镜像,这表明他们可能在针对我们的具体构建版本调整漏洞利用方式。我们尚未发现攻击者在服务器上执行代码的证据,但无法排除这种可能。 **我们的升级未能修复漏洞:**10 月 22 日升级至 GitLab 19\.3\.6 并未修复漏洞。修复不在 GitLab 自身的代码中,而是针对 Ruby 的一个补丁,GitLab 仅在其官方软件包中应用该补丁。我们的镜像使用标准 Ruby,因此未获得该补丁。 如果您运行 GitLab 时使用自己的 Ruby \(从源码构建或放在自己的容器镜像中\),而非 GitLab 的软件包,那么仅升级 GitLab 还不够:您还需要 Ruby 3\.3\.13、3\.4\.12、4\.0\.9 或更高版本。 如果您使用我们的 alpinelinux/gitlab (https://hub.docker.com/r/alpinelinux/gitlab) 容器镜像,请重新拉取 `alpinelinux/gitlab:19\.3\.6`。10 月 27 日发布的镜像包含 Ruby 3\.3\.13。您在 10 月 27 日之前拉取的任何 19\.3\.6 镜像,以及所有更早的标签版本,均存在漏洞。 ### 事件时间线 日期事件10 月 28 日GitLab 重建完成;所有密码已重置,GitLab 的密钥已更换10 月 27 日GitLab 关闭,仅允许开发者和构建服务器访问;开始重建10 月 26 日发现实例升级后仍存在漏洞10 月 25 至 26 日攻击者返回并尝试重新进入;尝试失败10 月 24 日根据外部记录核验了 aports、软件包和 10 月 21 日发布的版本10 月 23 日封禁攻击者账户;Ruby 发布修复10 月 22 日升级至 GitLab 19\.3\.610 月 21 日主要攻击发生;GitLab 崩溃、出现 502 错误和 CI 作业失败10 月 20 日攻击者注册账户并开始探测10 月 13 日CVE\-2026\-97229 公布;我们误将 GitLab 升级至 19\.3\.4,而非包含修复的 19\.3\.5 \(该版本包含修复\)10 月 12 日GitLab 发布修复## 我们已知的情况与无法排除的可能 **我们的发现** - **Alpine 发布版本和软件包未被修改。**10 月 21 日的稳定版 \(3\.21\.9、3\.22\.7、3\.23\.7、3\.24\.3\),包括其 ISO 镜像和用于构建官方 `alpine` Docker 镜像的 minirootfs tar 归档,以及 10 月 20 至 24 日构建的所有软件包,均来自我们已根据 GitLab 之外的记录核验过的 aports 提交。详情请参阅下方常见问题。 - **没有签名密钥泄露。**用于为 Alpine 软件包和发布版本签名的密钥并未存储在 GitLab 服务器上,以前也从未存储在该服务器上。 - 没有证据表明攻击者的代码已执行:计时探测未显示延迟,我们也未发现任何异常文件、密钥、钩子或进程。 - 在我们能查看的任何 Web 或 API 请求中,均未发现向攻击者返回私有数据的情况。 **我们为何无法确定** - 成功的漏洞利用不会导致崩溃,也不会在 Web 日志中留下痕迹。 - 攻击当天的部分日志已丢失 \(后台作业日志、旧容器的文件系统\)。 - 我们未记录出站网络连接,托管服务提供商也未保留此类记录。 **如果攻击成功,可能泄露的内容** - 所有用户的电子邮件地址、姓名和 IP 地址 - 密码哈希值 - 双重身份验证密钥、CI/CD 变量和运行器令牌 - Webhook、集成和推送镜像的凭据 - 个人访问令牌 \(以哈希形式存储\) - 私有仓库,以及保密议题和合并请求 ## 常见问题 ### 既然能够缓解攻击,为何还要重建 GitLab? 由于我们无法排除代码执行的可能,而且确认此事所需的证据已不复存在,因此我们选择了更费力的方式,从头重建 GitLab 实例。这可以清除潜在成功的漏洞利用可能留下的任何立足点。 GitLab 关闭期间,我们的软件包镜像站、cgit 以及邮件列表/IRC 均照常可用。 ### Alpine 软件包和发布版本是否受到影响? 我们未在 aports 或发布版本中发现任何篡改迹象。 10 月 20 至 22 日新增的每个 aports 提交,都来自已知开发者的一次有记录的推送。我们使用攻击者无法接触的记录进行了核对:一名开发者的克隆副本,以及全部 45 台构建机。10 月 20 至 24 日在各个架构上构建的每个软件包,均来自 git\.alpinelinux\.org 上公布的提交。10 月 21 日发布的版本 \(3\.21\.9、3\.22\.7、3\.23\.7、3\.24\.3\) 也均基于这些已核验的提交构建。 我们于 10 月 24 日执行了这些检查,覆盖 10 月 20 至 22 日的提交,以及截至 10 月 24 日构建的软件包。我们的 GitLab 直到 10 月 27 日关闭时仍存在漏洞,因此我们正将同样的检查延伸至该日期。 ### Alpine 的 ruby 软件包是否受到影响? 该缺陷位于 Ruby 的正则表达式引擎中,因此任何根据不可信输入编译正则表达式的程序都面临风险,并非只有 GitLab。Alpine 3\.22、3\.23、3\.24 和 edge 提供 Ruby 3\.4\.12,Alpine 3\.21 提供 Ruby 3\.3\.13;这两个版本均包含修复。运行 `apk upgrade` 即可获取。 ### 针对此次事件,我们将做出哪些改变? - **修复后的 Ruby:**重建的实例运行包含修复的 Ruby \(3\.3\.13 或更高版本\)。 - **更快地应用补丁:**在一天内应用 GitLab 的关键安全更新,并检查每个发布版本是否包含我们自己的构建必须应用的 Ruby 或其他组件补丁。 - **更完善的日志记录:**记录 GitLab 主机的出站连接和数据库连接,并将日志保留时间延长至 14 天以上。 - **为发布标签签名**,以便独立于 GitLab 验证发布版本。

相似文章

GitLab 远程代码执行漏洞 - 整数溢出问题

Hacker News Top

GitLab 发布关键补丁版本,修复 CVSS 10.0 的未认证远程代码执行漏洞(CVE-2026-110264),该漏洞源于正则表达式编译器中的整数溢出,影响 7.0 至 19.5 的多个版本。

GitLab 警示最高严重级别的代码执行漏洞

Lobsters Hottest

GitLab警示一个最大严重级别的CI/CD正则表达式编译器整数溢出漏洞(CVE-2026-97229),可让远程未认证攻击者在服务器上执行任意代码,官方已发布补丁并敦促自托管用户立即升级。

OpenAI 机器人利用了 RubyGems 的缓存漏洞

Hacker News Top

研究发现 OpenAI 机器人利用 RubyGems 中的一个缓存漏洞,上传恶意 gem 包,可能在 RubyDoc.info 上执行任意代码,引发了人们对 AI 代理安全性的担忧。

GitLab 故障

Hacker News Top

GitLab 经历了部分服务中断,503 错误影响了网站、API 和 CI/CD 服务等多个组件。缓解措施正在进行,随着问题的处理,错误率正在下降。

GitLost:我们诱骗GitHub的AI代理泄露私有仓库

Hacker News Top

Noma Labs发现GitHub的Agentic Workflows中存在一个严重的提示注入漏洞,允许未经身份验证的攻击者通过在同一组织的公共仓库中发布精心构造的GitHub Issue,从私有仓库中窃取数据。