保护互联网关键软件:我们如何本可以给 Bash 植入后门

Lobsters Hottest 新闻

摘要

Hacktron 的安全研究人员披露了 GNU Savannah(托管 Bash 和 Coreutils 的代码托管平台)中一条包含 26 个漏洞的攻击链,其中包括一个可通过电子邮件地址实现的 shell 注入漏洞,该漏洞可导致远程代码执行(RCE)、获取超级用户权限以及向上游 Bash 仓库推送代码;自由软件基金会(FSF)目前已修复这些问题并发布了事件报告。

<p><a href="https://lobste.rs/s/0mdf8w/securing_internet_critical_software_how">评论</a></p>
查看原文
查看缓存全文

缓存时间: 2026/11/02 17:50

# 保障互联网关键软件的安全:我们本可以如何给 Bash 植入后门 来源:https://www.hacktron.ai/blog/hacking-gnu-savannah 1. https://www.hacktron.ai/ 2. 博客 (https://www.hacktron.ai/blog) 3. 保障互联网关键软件的安全:我们本可以如何给 Bash 植入后门 隐藏在电子邮件地址中的一段 shell 注入让我们在 GNU Savannah 上获得了代码执行权限,随后是 root 权限,以及向上游 Bash 仓库推送代码的能力。我们报告了漏洞,继续审计,并协助 FSF 修复了这个承载 GNU 项目的代码托管平台上的 26 个漏洞。 2026年10月30日 阅读约 7 分钟 **摘要:**GNU Savannah 托管着 Bash、Coreutils 以及数百个其他 GNU 项目。我们使用 Hacktron 发现,形如`a\`touch$\{IFS\}/tmp/savane\-rce\-proof\`@attacker\.example`的电子邮件地址可以让任何注册用户在其后端执行代码。借此,我们将自己的账号变成了超级用户,冒充了 Bash 的维护者,并确认可以添加具有上游 Bash 仓库推送权限的 SSH 密钥。一个未打补丁的内核让我们获得了 root 权限以及对 GNU 备份服务器的访问权限。我们于 2026 年 5 月 11 日向 FSF 报告了这些问题。 随后我们使用 Hacktron 对 Savane 的其余部分进行了渗透测试,发现了更多漏洞并一并上报,总计确认了 26 个漏洞。FSF 修复了这些漏洞并发布了一份事件报告 (https://static.fsf.org/nosvn/security/savannah-20260807.pdf)。 利用链 1. **普通账号** savannah.gnu.org 2. **电子邮件地址** 允许 Shell 元字符 3. **GPG 密钥测试** 邮箱出现在 shell 命令中 4. **Web 服务器 RCE** 数据库访问 5. **超级用户** 可冒充任意用户 6. **Bash 维护者** 添加 SSH 密钥 7. **OverlayFS** 未打补丁的内核 8. **Root** Savannah 后端 9. **备份服务器** GNU ## 为什么是 Savannah Savannah 承载了大量 GNU 用户态工具,包括 Bash 和提供`ls`、`cp`、`rm`等命令的 Coreutils。这里存放着仓库、维护者账号,以及决定谁有权推送代码的 SSH 密钥。落地到这里的代码会被各个发行版打包并安装到数百万台机器上,而xz后门事件 (https://www.openwall.com/lists/oss-security/2024/03/29/4) 已经展示了这条链条中一个环节被攻破会造成什么后果。 和许多自由软件所依赖的基础设施一样,Savannah 由少数志愿者和资源有限的 FSF 工作人员运营。我们希望将我们的资源投入其中。Savannah 运行的是Savane (https://savannah.nongnu.org/projects/administration),一个本身也是自由软件的 PHP 应用程序,于是我们将 Hacktron 指向其源代码进行了审计。 我们得到的结果,很可能是我们迄今发现的最有影响力的漏洞。 ## 漏洞:一个能执行命令的电子邮件地址 Savane 允许我们使用以下电子邮件地址注册: `` a`touch${IFS}/tmp/savane-rce-proof`@attacker.example `` 你已经猜到接下来会发生什么了吧? ### 验证器 Savane 的邮箱验证器(`frontend/php/include/account\.php:275`)接受包含反引号、`$`、`\{\}`、`/`、`\|`等字符的 dot\-atom 格式地址。根据 RFC,这些字符大多在技术上是允许出现在电子邮件地址本地部分的,因此上述地址通过了验证。任何用户都可以在注册时或通过修改邮箱流程(`frontend/php/my/admin/change\.php:271`)设置它。 ### 汇聚点 每个已登录用户都可以为其账号管理 GPG 密钥,Savane 在`/my/admin/change\.php?item=gpgkey`处提供了一个"Test GPG keys"按钮。它执行的检查之一会列出账号邮箱对应的密钥指纹。在`frontend/php/include/gpg\.php`中: `` function test_gpg_command ($temp_dir, $command, &$ret, $in = null){ $cmd = gpg_name () . " --home '$temp_dir' $command"; ... $res = utils_run_proc ($cmd, $out, $err, $aux); ...}function test_listing ($temp_dir, $level, &$ret, $test_against_email = false){ ... if ($test_against_email) { $email = user_get_email (0); ... } $options = '--list-keys --fingerprint'; if ($test_against_email) $options .= " $email"; $res = test_gpg_command ($temp_dir, $options, $ret);} `` 邮箱以纯文本形式追加到`$options`中,`$options`被拼接进`$cmd`,`utils\_run\_proc\(\)`再把这个字符串交给`proc\_open\(\)`。对于字符串形式的命令,PHP 会通过`/bin/sh`执行它。shell 看到我们的反引号,会在`gpg`启动之前先执行反引号中的内容。使用`$\{IFS\}`是因为验证器会拒绝空格,而 shell 会将其展开为空格。 利用它只需四步: 1. 用上述载荷作为电子邮件地址注册,或修改现有账号的邮箱地址。应用会接受它。 2. 打开`/my/admin/change\.php?item=gpgkey`。 3. 粘贴任意 GPG 密钥并点击"Test GPG keys"。 4. 电子邮件中的命令会以 Web 服务器用户的身份在服务器上运行。 FSF 后来将漏洞路径追溯到 2026 年 3 月 7 日发布的 Savane(3\.17\-c369)。它同时影响 savannah\.gnu\.org 和 savannah\.nongnu\.org,因此受影响时间窗口约为两个月。 ## 从 shell 到超级用户 为了看看能走多远,我们将载荷换成反向 shell,以 Web 服务器用户的身份进入了后端。 Web 服务器用户可以读取 Savane 的配置,其中包含数据库凭据,因此无需破解任何东西。我们在自己的账号`harshjaiswal`上设置了`superuser`标志,然后重新加载页面。 以超级用户身份登录 savannah.gnu.org 超级用户在侧边栏会看到一个"Become this user"框,网站管理员可以通过它无需密码即可以任意账号身份操作。 ## 成为 Bash 的维护者 我们在那个框里输入了`chet`。Chet Ramey 是 Bash 的维护者。 以 chet 身份登录,在 Change Authorized Keys 页面 那是他的 SSH 密钥页面,还有一个空位可以再添加一个密钥。Savannah 的 Git 托管基于这些条目,因此在这里添加密钥就授予了以维护者身份向`bash\.git`推送的权限。我们确认该页面接受编辑,然后就停下了。我们没有添加密钥,也没有碰过仓库。 处于这一位置的攻击者本可以 Chet 的名义向上游 Bash 推送提交,也可以对 Coreutils 或 Savannah 上的其他任何项目做同样的事。 ## Root 和备份服务器 Web shell 是无权限的。Savannah 运行的是 Trisquel GNU/Linux 11,内核是从 Ubuntu 22\.04 的 5\.15 LTS 内核构建的 linux\-libre 内核。该内核仍受GameOver\(lay\) (https://www.wiz.io/blog/ubuntu-overlayfs-vulnerability)影响,这是 2023 年的两个 OverlayFS 漏洞(CVE\-2023\-2640 和 CVE\-2023\-32629)。Canonical 当时修复了 5\.19 和 6\.2 内核,但 5\.15 内核直到 2026 年 5 月 7 日的 USN\-8255\-1 才得到修复——比我们的报告早四天。公开的利用代码第一次尝试就成功了,让我们在 Savannah 后端获得了 root 权限。 以 root 身份,我们发现了一把密钥,可以让我们以`gnubackup`用户身份 SSH 到 GNU 备份主机。 在 GNU 备份服务器上以 gnubackup 身份获得 shell 到那时,我们已在代码托管平台获得 root 权限,能够访问其备份,并可以以任意维护者身份操作。我们停止了进一步的侦察,开始撰写报告。 ## Savane 的其余问题 RCE 只是众多发现之一。在最初的报告之后,我们让 Hacktron 继续对 Savane 代码库运行,这套代码源自 2001 年的 SourceForge 代码。它产生了 33 项发现;我们剔除了 7 个误报,将其余 26 项(2 个严重、6 个高危、16 个中危、2 个低危)连同文件路径、行号和复现步骤一并发送给了 FSF。其中较为突出的有: | ID | 严重程度 | 发现 | |---|---|---| | HCK\-001 | 严重 | 通过 GPG 密钥测试邮箱导致的命令注入 RCE | | HCK\-002 | 严重 | 全站管理员组配置的授权绕过(`siteadmin/triggercreation\.php`) | | HCK\-003 | 高 | 任何群组成员都可以删除该群组的邮件列表 | | HCK\-004 | 高 | 任何用户都可以更改任意群组的 tracker 通知地址 | | HCK\-006 | 高 | 任何群组成员都可以重置邮件列表管理员密码 | | HCK\-008 | 高 | 私有文件访问信任请求中的`file\_uid`参数而非会话 | | HCK\-010 | 中 | 会话劫持:跨域 SSO 在 URL 中传递`session\_uid`和`session\_hash` | | HCK\-012 | 中 | 密码重置和邮箱更改确认哈希永不过期 | | HCK\-017 | 中 | 通过真实姓名字段的存储型 XSS,该字段仅过滤`<` | ## 与 FSF 的协作 Savannah 管理员 Corwin Brust 当晚就回复了。FSF 将其视为一次完全入侵:修补了内核,审计了访问控制、数据库和日志,并通知了另一个公共 Savane 实例的运营者。授权类漏洞是通过重构而非逐个补丁的方式修复的。 ## 漏洞披露时间线 | 日期 | 事件 | |---|---| | 2026\-03\-07 | Savane 3\.17\-c369 发布,包含存在漏洞的 GPG 密钥路径 | | 2026\-05\-07 | Canonical 发布 USN\-8255\-1,修复 5\.15 内核中的 GameOver\(lay\) | | 2026\-05\-11 | 我们向 savannah\-hackers\-private 报告了 RCE、root 权限以及对 Bash 仓库的访问权限 | | 2026\-05\-12 | Savannah 管理员 Corwin Brust 确认收到报告及我们 30 天的披露窗口 | | 2026\-05\-14 | FSF 安装了修复后的内核并删除了我们的账号 | | 2026 年 5 月 | 我们发送了 Savane 完整审计中剩余的 25 项发现 | | 2026\-06\-19 | FSF 发布了关于此事件的声明 | | 2026\-08\-07 | FSF 发布其事件报告 (https://static.fsf.org/nosvn/security/savannah-20260807.pdf) 及 Savane 补丁 | 感谢来自 Savannah hackers 和 FSF sysops 的 Ineiev、Corwin Brust 和 Bob Proulx 与我们合作。 ### 与本研究背后的团队合作 Hacktron 汇集了顶尖的 CTF 研究人员、经验丰富的红队成员和进攻性安全研究者。我们利用 AI 加速安全研究,在恶意行为者之前发现并消除广泛使用的可信软件中的漏洞。我们正在全球所依赖的基础设施上继续研究。如果您负责保障其中一部分的安全,我们希望通过红队测试 (https://www.hacktron.ai/red-team)、渗透测试 (https://www.hacktron.ai/pentests) 或AI 代码审查 (https://www.hacktron.ai/pr-review) 与您合作。欢迎联系 [hello@hacktron\.ai](mailto:[email protected])。 上一篇 Node2Shell:Brotli 解码器 RCE 在 Node\.js 中(CVE\-2026\-111497)(https://www.hacktron.ai/blog/node2shell#post-title) 下一篇 你已经在最新的一篇了!(https://www.hacktron.ai/blog/hacking-gnu-savannah#)

相似文章

@tobi:真是场灾难

X AI KOLs Following

Linux 的稳定内核已发布针对 CVE-2026-98432 的修复,这是一个在 IPv4 TCP 握手过程中存在的严重(CVSS 9.8)释放后使用漏洞,远程未认证攻击者即可利用;该漏洞由 Anthropic 报告,Anthropic 称其 Claude 模型编写出了一个可用的远程 root 漏洞利用程序,而 Ubuntu 和 RHEL 尚未修复。

数十个Red Hat软件包通过其官方NPM渠道被植入后门

Ars Technica

数十个Red Hat软件包通过该公司官方NPM渠道被植入后门,攻击者利用Shai-Hulud蠕虫通过GitHub Actions OIDC入侵了Red Hat的CI/CD管道。Red Hat已移除恶意软件包,并声明它们仅用于内部,但此次攻击凸显了日益升级的供应链风险。

黑客在严重的 PHP2Shell 漏洞上抢占了四天先机

Ars Technica

黑客提前四天就开始利用由 OpenAI、Calif 和 Wiz 发现的严重 PHP 漏洞。这些漏洞影响全球多达 70% 的网站,并促使美国国家安全局(NSA)、英国国家网络安全中心(NCSC)和白宫发布紧急警报。