← 文章 / 云原生与基础设施
haproxy 3小时前 · 2026-09-24 10:21:07 · 1 阅读

如何验证你的 HAProxy 构建是否为正版

如何验证你的 HAProxy 构建是否为正版

9 月 4 日,Rapid7 Labs 发布了一篇研究文章,披露了在韩国两家机构中潜伏的 Linux 间谍工具包。该工具包的核心是一个被称为“Ted”的后门,它被植入到受害者负载均衡器上运行的一个经过修改的 HAProxy 构建中。Rapid7 中等信心地认定,此次行动由朝鲜政府支持的行为者发起。

除了 HAProxy,该工具包还篡改了受害者系统中的多个工具,包括一个 SSH 键盘记录器。HAProxy 只是众多伪装对象之一,只是恰好因为它便于逆向工程而显得格外突出。

“后门”与“HAProxy”这一令人不安的组合,自然引发了社区和客户们的疑问。因此,我们希望明确交代事情的来龙去脉,以及它对所有开源基础设施运行者的意义。

特洛伊木马二进制文件并非利用漏洞

细节至关重要,先从事实说起。

不存在 CVE(通用漏洞披露)。没有人利用 HAProxy 的漏洞进行攻击。Rapid7 的研究已明确说明这一点:攻击者首先必须通过其他方式彻底入侵受害者的主机,然后才能部署后门。一旦获得权限,他们就替换了原本的 HAProxy 二进制文件,换上自己编译的修改版本。

这也并非供应链攻击。没有人篡改官方 HAProxy 的下载渠道、软件包仓库或发布版本。攻击者从源码重新编译了 HAProxy 2.8.12,内置了恶意插件,并根据受害者的环境进行了定制。该特洛伊木马构建甚至硬编码了特定于 2.8.12 版本的内存偏移量,这证明它是专门为这些特定目标构建的,而非广泛分发的。

换句话说,攻击者不是攻破了 HAProxy,而是攻破了服务器,然后将恶意软件伪装成 HAProxy。

攻击者为何瞄准负载均衡器

攻击者一旦攻陷主机,就能在其上的任何程序中植入特洛伊木马。在这起事件中,他们确实这样做了。同一套工具包中包含了被篡改的 crond、sshd、agetty、atd 和 polkitd 版本。Rapid7 甚至发现了复用自 nginx 早期潜在后门代码的证据。任何广泛部署的开源组件都可能被这样滥用,因为这种技术不依赖软件存在漏洞,而是依赖攻击者已经控制了机器。

负载均衡器之所以成为诱人目标,原因很简单:它能看见一切。它终结 TLS 连接,并处理每一个请求和响应。Ted 植入体利用了 HAProxy 的扩展能力:filter API 和 body-access hooks,允许运维人员构建自定义流量逻辑。利用这些功能,它捕获了会话 cookie,向特定受害者页面注入脚本,同时在底层运行隐蔽的命令通道。整个过程中,正常的负载均衡功能照常运行,因此表面上看不出任何异常。

良好的声誉导致较少的审查

HAProxy 之所以能作为有效的伪装,部分原因在于其声誉。这款开源软件经过同行评审和久经考验,近期还通过了 Almond ITSEF 的审计,验证了 HAProxy 架构的韧性,因此,一个健康的 HAProxy 进程通常是运维人员最后会怀疑的对象。该软件二十多年来积累的信任,成了 malware 借用其名称的掩护。组件越可靠,受到的审查往往越少,攻击者深知这一点。

这是任何可扩展边缘软件的固有属性,而非缺陷。但这也正是为什么边缘二进制文件的完整性应与你的应用服务器同等接受严格审查。

验证开源构建的五种习惯

这项研究带来的不安教训远不止适用于 HAProxy。如果你在 production 环境中运行开源软件,就有责任确保你正在运行的构建版本就是项目实际发布的版本。在实践中,这归结为五种习惯:

  1. 从官方渠道安装。二进制文件和源码都要从可信渠道获取。对 HAProxy 来说,就是 haproxy.com/downloads,HAProxy Community 性能软件包都集中发布在这里。这条规则同样适用于加载进进程的一切东西:模块、Lua 脚本和其他扩展都能以二进制文件的完整权限访问你的解密流量,所以它们的来源必须和二进制文件一样严格审核。

  2. 每次发布都要验证签名。HAProxy 的每个版本都附带 GPG 签名以及 SHA-256 和 SHA-512 校验和,验证只需几秒钟。要把这一步写进升级手册,而不只是安装指南。每次升级都做,不是只做一次。

  3. 部署后持续监控二进制完整性。签名验证只能回答某个时刻的问题,而文件完整性监控则能持续守护。Rapid7 的报告指出,二进制完整性检查是发现 Ted 这类植入物的核心控制手段,因为被替换的二进制文件不会在组件自身的日志中留下痕迹。OSSEC syscheck、AIDE 等开源工具都能胜任这项工作:一旦磁盘上的二进制文件在已知更新之外发生变化,就会发出告警。

  4. 不要以为升级就能清除入侵。如果攻击者已经替换了二进制文件,升级版本毫无作用。清理意味着找到被篡改的构建,换上经过验证的干净版本,而且必须在一台确认已不再被入侵的主机上进行。

  5. 监控整个主机,而不只是进程。Ted 植入物清除了 HAProxy 自身的连接计数器,其命令流量也从未经过后端服务器,因此不会被记录。是独立的网络监控发现了组件级日志看不到的东西。

每次发布验证只需几秒,监控则是一次性配置。两者结合,就覆盖了从安装到后续运行的全部环节。

让攻击者难以绕过的加固措施

HAProxy 自带的加固机制正是为这种场景设计的。推荐配置会让进程运行在空的 chroot 中,并在启动后放弃特权。第三重防护默认开启:一旦线程开始运行,HAProxy 就会在操作系统层面阻止自己创建任何新进程。

每一重防护,都会剥夺入侵者的一项能力。

  • chroot 将进程锁定在一个空目录中,使其既无法读取任何文件,也无法写入任何位置。

  • 降权操作使其以权限极低的用户身份运行,几乎不具备任何能力。

  • 禁止 fork 操作意味着进程无法启动 shell 或其他工具。

这些安全措施最初旨在防范通过被植入恶意代码的库造成的入侵,但它们恰好剥夺了这个植入体运行所需的大部分功能。Ted 会在 /tmp 下创建命名管道作为命令通道,并通过 popen 执行操作员指令。在启用了 chroot 且禁止 fork 的环境中,这两项调用都会失败。

关键在于,该植入体具备自检功能。其命令通道可以回报目标进程是否处于 chroot 环境中,以及是否运行在 master-worker 模式下。攻击者在开发时就特意加入了对这些防护状态的检查逻辑。除非你知道强化的配置会破坏其工具,否则不会写出这样的代码。

如何验证 HAProxy 是否已正确加固

已经能从源码编译的攻击者可以剔除这些加固措施吗?当然可以,而这恰恰是重点所在。一个以 root 身份运行、未置于 chroot 中且拥有完整权限的 HAProxy 进程,从外部视角看就明显异常。加固本身不能让被入侵的主机变得安全,但它迫使恶意软件要么失效,要么在有人检查时暴露出来。

进行检查只需几秒钟,且无需额外工具:

  • /proc/$(pidof haproxy)/root 应指向一个空目录或已删除的目录(即 chroot 目录)

  • /proc/$(pidof haproxy)/status 中的 Uid 应为非零值,且有效能力(capabilities)应接近无

  • /proc/$(pidof haproxy)/limits 中的 Max processes 在每个工作进程中应为,表明内置的 fork 保护已生效

如果在已启用安全加固的主机上,上述任何一项显示异常,那么要么是加固配置不当,要么你正在查看的是一个被篡改过的进程。无论哪种情况,都值得进一步排查。另外,如果你的全局配置段尚未设置 chrootusergroup,现在就是修复的最佳时机。HAProxy 3.4 引入了 chroot auto 功能,该功能无需任何配置,即可将进程限制在一个无名称、空的只读目录中,目前正在讨论将 chroot 设为默认行为。

从何处获取可信的 HAProxy 构建

这就引出了一个实际问题:HAProxy 的二进制文件应该从哪里获取?

社区版

如果你正在运行 HAProxy 社区版,有两个不错的选择。你可以从官方项目仓库获取源码进行编译,并验证签名。或者,更快的方式是使用我们 HAProxy Technologies 维护的HAProxy 社区高性能软件包。这些软件包由开发团队构建和打包,包含针对高性能库优化的同源开源 HAProxy。你不仅能获得来源可追溯的二进制文件,还能享受开箱即用的高性能。

我们建议避免运行来源不明的二进制文件。发行版软件包是通过发行版自身经过验证的流水线构建和签名的,你可以使用 rpm -Vdebsums 等工具确认已安装的二进制文件与发布版本一致。其代价是版本滞后:发行版通常停留在较旧的分支上,因此修复补丁的落地时间晚于官方发布版本。

厂商内置的构建版本差异更大。如果 HAProxy 是作为设备或平台的一部分捆绑提供的,完全有理由询问厂商他们的构建方式、是否公布校验和,以及跟进上游修复的速度。我们直接背书的构建,仅来自官方渠道。

企业版

如果你使用的是我们的商业平台 HAProxy One,那么构建产物完全来自 HAProxy Technologies。每个版本都由我们自行构建、测试并签名,再通过经过身份验证的渠道交付——因此在二进制文件到达你手中之前,来源可信问题就已经解决了。企业客户还能获得我们支持团队的服务,一旦部署中出现任何异常,就有专家帮你把关。

需要记住的一点:任何厂商的构建产物——包括我们的——都无法保护一台已被攻击者控制的主机。可信构建和签名验证只能保证你安装的是正品,而文件完整性监控和主机安全才能保持它始终可信。两者缺一不可。

发现问题,请告诉我们

还有一个待解的疑问:还有哪些地方在传播被植入木马的 HAProxy 构建版本?如果你遇到可疑的 HAProxy 二进制文件,或某个安装包未通过我们公布的校验和验证,请上报至 security at haproxy.com。非官方下载站点提供的 HAProxy 构建版本同样值得警惕。

感谢 Rapid7 Labs 的深入研究和负责任的披露。他们的完整报告包含了从文件哈希到主机痕迹等失陷指标(IoC),建议纳入你的检测工具中。

结论很简单:HAProxy 本身没有被攻破,被攻破的是一台服务器,攻击者只是把 HAProxy 当作了伪装。请验证你的构建产物并监控其完整性,同时确保二进制文件来自可信来源。

订阅我们的博客。 获取 HAProxy 专家带来的最新版本更新、教程和深度解析。 订阅我们的博客 博客 分享 标签: 安全 , 开源

作者

Ron Northcutt

朗·诺思卡特(Ron Northcutt)是 HAProxy Technologies 的技术市场总监。他凭借对行业的深入理解,以及超过 25 年的开源经验与贡献,围绕性能指标、开发者互动以及 HAProxy 的多用途解决方案,创作出具有影响力内容。他的专业领域涵盖技术产品营销、解决方案架构和赋能开发者,致力于弥合技术团队与业务需求之间的差距,确保其观点具备实际价值,并直接回应技术受众面临的现实挑战。

LinkedIn GitHub

原始来源: haproxy

评论 (0)