Balbooa Forms 安全通知
如果您收到了我发来的指向此页面的电子邮件,是因为您的网站似乎正在运行 Balbooa Forms(Balbooa
开发的 com_baforms,位于您的文件 /components/com_baforms/ 和
/administrator/components/com_baforms/ 中)的一个版本,该版本受一个已知安全问题影响。Balbooa
Forms 是一个用于 Joomla 内容管理系统的表单构建扩展。本页面解释了这为何重要、如何可靠地读取您的
版本,以及如何修复它。
本通知涉及 CVE-2026-56291,这是一个严重(CVSS 10.0)、正被主动利用的缺陷,通过该扩展前端的 表单附件处理,允许 未经身份验证的远程代码执行。它影响 2.4.1 之前的每一个发布版本。它已 于 2026 年 7 月 10 日被列入美国网络安全和基础设施安全局(CISA)的 已知被利用漏洞 目录。
修复此问题的发布版本并不是您应该更新到的版本,这是本页面最重要的一点。 2.4.1 于 2026 年 7 月 9 日发布,确实修复了 CVE-2026-56291。但同一扩展中还有另一个独立缺陷,CVE-2026-65880,影 响直至 2.4.2.1(含)的所有发布版本。因此,更新到 2.4.1 或 2.4.2 的运营者虽然关上了本通知所涉及 的这扇门,却留下了另一扇门敞开着。更晚的发布版本 2.4.3.1 是针对同一上传路径的进一步安全加固 发布。所以:请更新到 Balbooa Forms 2.4.3.1 或更高版本,这是撰写本文时的当前发布版本。不要 止步于 2.4.1。
没有任何旧版本是安全的。 终结此问题的防护措施是在 2.4.1 中 新增 的,这意味着它们在此前的 每一个发布版本中都不存在。这不是一个在扩展历史中途才被引入的缺陷:供应商自己的更新日志显示,前 端上传路径一直连续运行,贯穿整个 2.0.x 系列并延续到 1.x,而我也直接在 2.1.x、2.2.0 和 2.3.x 的 源代码中确认了这一未受保护的处理逻辑。“我的安装版本太旧,不会受影响”这个想法在这里站不住脚,而 实际上,我所看到的受影响安装中有相当一部分本身就是货真价实的旧版本。
无需开启任何设置即可让此问题适用于您。 显而易见的假设是,只有发布了接受文件附件的表单的网站 才会暴露,因此我想明确说明事实并非如此。没有任何设置能让一个受影响版本脱离受影响范围,而且该扩 展的免费版本与付费版本一样都包含受影响的代码,所以“我们只使用免费版本”同样不是一个脱身的理由。 真正重要的仅仅是您正在运行哪个版本。
由于该缺陷是在 修复方案存在之前就已被利用,仅仅更新并非任务的全部。您还应当检查您的网站,看 是否有迹象表明有人已抢先得手(见下文如果您曾使用受影响版本)。
这是一个 扩展 缺陷,而不是 Joomla 核心缺陷。它同样影响 Joomla 4、5 和 6 上的网站:即使 Joomla 核心完全保持最新,如果 Balbooa Forms 扩展本身已过期,也 不会 保护您。
这封邮件是真实的吗?
是的。这是一份来自独立安全研究人员的善意、负责任披露通知。我 不会 向您索要金钱、密码或网站 访问权限,我也 没有 尝试侵入它、上传任何内容或利用任何漏洞。
我所做的只是查看您的网站向每位访客公开提供的文件(与您的主页公开的方式相同):您的页面、写入其
中的扩展自身前端资源地址,以及该扩展的公开清单文件。仅此而已。我特意 没有 触碰受影响的上传
功能,没有提交您网站上的任何表单,也没有在您的网站或任何地方请求 images/baforms/uploads/ 目
录。该路径之所以出现在本页面下方,仅仅是作为一个供 您 自己在网站上查看的位置。此检查的任何
部分都不会触及您的数据、您的后台,或您网站的任何私有部分。
如果您想验证我的身份,请参阅此页面底部的联系方式和 关于 页面。
为什么这很重要
Balbooa Forms 在 Joomla 网站上构建联系表单、咨询表单及类似表单。它提供的功能之一,是允许访客在 提交表单时附加文件。
在受影响版本中,该功能背后的处理逻辑 无需登录 即可触及,并且 不会 正确检查所收到的文件 类型。这种组合使攻击者能够将自己选择的程序放置到您的服务器上并运行它:完全的远程代码执行,既不 需要账号,也不需要您的任何配合。
这不是一种理论上的风险。该缺陷被评为 满分 10 中的 10.0,是最高分,并且 正在野外被利用。 观察到的利用行为始于 2026 年 7 月 8 日,比 2026 年 7 月 9 日发布修复方案早了一天,而美国网络 安全和基础设施安全局已于 2026 年 7 月 10 日 将其列入 已知被利用漏洞 目录。该问题由 mySites.guru 的 Phil Taylor 报告。
我在此描述的详细程度仅限于网站所有者采取行动所需的水平,不再深入。我不会发布能让他人重现此问题 的细节,也希望您不要尝试在自己或他人的网站上进行这种测试。按照下文所述读取您的版本号,就能获知 决定采取何种行动所需的一切信息。
如果我的电子邮件引用了此问题,说明您网站所报告的版本早于 2.4.1。我没有测试您的特定网站是否可被 利用或是否已经被入侵,仅确认它报告的是一个受影响版本。
如何检查您的版本
您不必相信我的话来判断自己正在运行哪个版本。有两种可信的检查方法,以及一个此扩展所特有、值得了 解的误导性信号。
从 Joomla 后台查看(权威来源):
- 登录您的 Joomla 后台(通常位于
yourdomain.com/administrator)。 - 前往 System 然后 Manage 然后 Extensions(或 Extensions 然后 Manage,具 体取决于您的 Joomla 版本)。
- 搜索 Balbooa Forms 并记下已安装的版本。
通过磁盘上的清单文件查看: 打开
/administrator/components/com_baforms/baforms.xml
并阅读其中的 <version> 元素。这就是您的网站实际运行的版本。
请注意区分您读取的是哪一个 baforms.xml。 一个安装了此扩展的 Joomla 站点包含 三个 同
名文件,只有上面路径中的那一个才是组件自身的文件。位于 /administrator/manifests/files/ 和
/plugins/editors-xtd/baforms/ 下的副本携带各自的版本号,这些版本号老旧得多,并且根本不会跟
踪该组件的版本。误读其中之一,会让您严重低估自己的版本。
页面源代码中的版本号并不可靠。 Balbooa Forms 会将版本号标注在其前端资源地址上,所以如果您查
看带有表单的页面的源代码,可能会看到类似 ba-form.js?2.3.0.2 的内容。这个数字并非从正在提供的
文件中读取的。它来自 Joomla 数据库中该扩展清单的副本,而这个副本只有 Joomla 的安装程序才会
更新。如果该扩展曾经通过直接覆盖旧文件的方式更新,而不是通过 Joomla 安装,那么页面所显示的版本
可能与站点实际运行的版本不符,而且可能朝任一方向出错:更新后的文件上显示旧编号,或者旧文件上显
示新编号。请改用后台界面或磁盘上的清单文件。
然后套用以下规则:
- 早于 2.4.1 的任何版本: 受此问题影响。不存在某个下限,低于它旧版本就会重新变得安全。
- 2.4.1 或 2.4.2: 就 此 问题而言已修复,但仍受上文提到的独立缺陷 CVE-2026-65880 影 响。请继续阅读。
- 2.4.3.1 或更高版本: 当前版本。这才是您应该达到的状态。
如何升级
最安全的做法是通过 Joomla 本身进行更新,并先做好备份:
- 在做出更改之前备份您的站点(文件和数据库)。大多数主机服务商都提供一键备份,或者使用 Joomla 备份扩展。
- 在 Joomla 后台,打开 Extensions 然后 Manage 然后 Update,并点击 Find Updates。如果列出了 Balbooa Forms 的更新,就从这里安装它。
- 如果那里没有出现更新,请直接从供应商 Balbooa 获取最新发布版本, 并通过 Extensions 然后 Install 进行安装。免费版本和付费版本都通过供应商自己的网站 进行更新。
- 应通过 Joomla 安装,而不是直接覆盖旧文件。 覆盖文件会让 Joomla 记录的版本停留在旧状 态,这正是页面源代码中的版本号一开始就不可靠的原因,而且这样做可能会遗留旧文件。
- 升级后,按照上述步骤确认新的版本号(2.4.3.1 或更高版本),并检查您的表单是否仍能正常 显示和提交。
既然您已经在处理这些,不妨顺便确认 Joomla 本身 以及您的其他扩展是否都是最新的,因为同样的 原则适用于所有这些组件。
如果您曾使用受影响版本
由于该缺陷在修复方案可用 之前 就已被利用,曾运行受影响版本的站点不应想当然地认为仅仅更新就 足够了。更新会关闭这扇门,但它不会告诉您是否已经有人从中走过。这一点值得心平气和地去检查,而不 是假设最坏的情况:大多数网站将一无所获。
以下是您(或您的网站管理员)可以在 自己的 网站上检查的内容:
-
上传目录中出现的意料之外的 PHP 文件。 查找
images/baforms/uploads/目录下任何位置的.php文件,包括它的所有子目录。任何合法用途都不会在那里放置 PHP 文件。在 Linux 主机 上,检查方法是:find images/baforms/uploads -name '*.php' -type f - 您不认识的管理员账号。 在 Users 然后 Manage 中查看您的用户列表。同时也 检查一 下您确实认识的账号的注册日期,因为一个您以为一直存在、实际上创建于 2026 年 7 月初的账号, 值得再仔细看一看。
- 网站其他地方在 2026 年 7 月初前后或之后被修改过的 PHP 文件,尤其是那些您无法解释的文 件。
如果您发现了其中任何一项,请将该网站视为已被入侵:轮换所有凭据(Joomla 管理员账号、数据 库、FTP/SSH、主机面板),审查您的 Joomla 用户账号及其所属的用户组,并考虑 从 2026 年 7 月 8 日之前所做的备份进行恢复,而不是尝试原地清理站点。原地清理很难做对,因为遗留的后门可能会使清 理工作前功尽弃。如果您的组织有信息安全团队或所在国家的 CERT,请让他们参与进来。
我想说清楚:我 没有 就上述任何一项指标检查过您的网站,也不知道您的网站是否受到影响。列出这 份清单,是为了让您能够自行检查。
我没有网站管理员 / 我卡住了
如果您不是负责维护网站的人,请将此页面转发给负责的人(您的网站开发人员、机构或主机服务商)。他 们会很快认出上述步骤。
如果您自己维护网站并遇到困难,我很乐意免费帮助您指明正确的方向。请使用下面的联系方式联系我。
联系方式
Evan Harris,安全研究员
- 邮箱:security@mail.mcpsec.dev
- X:@Evan__Harris
- GitHub:eharris128
- LinkedIn:Evan Harris
我就此类问题主动联系,纯粹是为了帮助运营者保护自己的网站。如果您不希望再次收到联系,请告诉我, 我会遵从。
参考
官方公告与追踪
供应商(Balbooa)
报告与分析