XenForo 2.3.13 より前のバージョンでは、深くネストされた BBCode によって PHP ワーカーが枯渇する可能性があります。
公開されている editor/to-html ルートは、ゲストが提供した BBCode を XenForo の再帰的パーサーおよびレンダラーに渡します。この処理の前に、生の長さやネスト数の制限は適用されません。通常のメッセージ準備パスも、最終的なメッセージ長の検証前に BBCode を処理します。
認可された XenForo 2.3.12 (ビルド 2031270) のインストール環境において、5,000 個のネストされた [quote] タグ (75,005 バイト) を含む 1 つのゲストリクエストが接続をリセットしました。Apache は PHP 子プロセスに対して Windows スタックオーバーフロー終了コード (0xC00000FD) を記録し、プロセスを再起動しました。
このリポジトリは、テストによって直接確立された狭い範囲の動作を意図的に文書化しています。つまり、1 つの未認証リクエストでワーカーをクラッシュ/リサイクルでき、繰り返しの同時リクエストによって可用性が低下する可能性があるということです。コード実行、データアクセス、永続性、またはホスト全体の恒久的な障害を主張するものではありません。XenForo 2.3.13 に修正が含まれています。
python poc.py https://xenforo.example 5000 --confirm-disruption
このスクリプトは正確に 1 つのリクエストを送信し、深さを 5,000 に制限します。明示的な障害確認が必要です。Web サーバーのエラーログとプロセスの健全性を監視しながら、隔離されたインストール環境でのみ実行してください。
発見者: Marco Paciaroni (BomboBombone)。