
CraftCMSには、コントロールパネルにおけるリレーショナル条件文を介したRCE脆弱性が存在します
CVE-2026-31857 は、Craft CMS のリレーショナル条件ルールにおけるリモートコード実行の脆弱性です。BaseElementSelectConditionRule::getElementIds() は、ユーザーが制御可能な入力をサンドボックス化されていない Twig テンプレートとしてレンダリングします。認証済みのコントロールパネルユーザーが、要素一覧のエンドポイントを通じて細工された条件を送信し、サーバー上でコマンドを実行できます。管理者権限は必要ありません。
Craft CMS 4.0.0-beta.1 から 4.17.3 まで、および 5.0.0-RC1 から 5.9.8 までが影響を受けます。この PoC は Craft 5 の element-index リクエスト形式を使用します。
標準ライブラリのみを使用する Python 3 が必要です。ベース URL とコントロールパネルのユーザー名を指定してください。スクリプトがパスワードの入力を求めます:
python3 poc.py https://craft.example editor
cmd> でコマンドを入力するか、exit を入力して終了します。現在の作業ディレクトリはコマンド間で保持されます。長時間実行されるコマンドを起動するには、末尾に & を付けます。その入力と出力は HTTP リクエストから切り離され、出力は破棄されます。レスポンスヘッダーを通じて返されるコマンド出力は、最後の 1200 バイトに制限されます。