XenForo 2.3.13 之前的版本可能因深度嵌套的 BBCode 导致 PHP 工作进程耗尽。
公开的 editor/to-html 路由会将访客提供的 BBCode 传递给 XenForo 的递归解析器和渲染器。在该处理之前,它没有应用原始长度或嵌套限制。正常的消息准备路径也会在最终消息长度验证之前处理 BBCode。
在一个已授权的 XenForo 2.3.12(构建版本 2031270)安装环境中,一个包含 5,000 个嵌套 [quote] 标签(75,005 字节)的访客请求导致连接重置。Apache 记录了 PHP 子进程的 Windows 堆栈溢出退出(0xC00000FD)并重启了该进程。
本仓库有意记录测试直接确立的较窄行为:一个未经身份验证的请求可以导致工作进程崩溃/回收,而重复的并发请求可以降低可用性。它不声称存在代码执行、数据访问、持久化或永久性的主机级中断。XenForo 2.3.13 包含此修复。
python poc.py https://xenforo.example 5000 --confirm-disruption
该脚本仅发送一个请求,并将深度上限设为 5,000。它需要明确的干扰确认。请仅在隔离的安装环境中运行它,同时观察 Web 服务器错误日志和进程健康状况。
由 Marco Paciaroni(BomboBombone)发现。