注目★★★★★GitHub Advisory
Phalcon Volt テンプレートの join フィルタに SSTI、任意 PHP コード実行可能
30秒で把握
- 1Phalcon Volt の join フィルタがセパレータ・配列引数をエスケープなしで PHP コード生成、SSTI から RCE 可能
- 2コンパイル済テンプレートが require() で実行されるため、攻撃者が Volt ソースを操作できる環境では即座に任意 PHP が実行される
- 3Phalcon ユーザーは公開パッチの有無と適用時期をセキュリティアドバイザリで確認、本番環境への更新スケジュールを即座に立案すべき
要約
Phalcon Volt テンプレートコンパイラの join フィルタが、セパレータと配列引数をエスケープなしで PHP コードに埋め込むため、テンプレート制御可能な場合に任意 PHP コード実行 (SSTI から RCE) に至る脆弱性が存在する。コンパイラはテンプレートをキャッシュファイルに書き込んで require() で実行するため、攻撃者が Volt テンプレートソースを操作できる環境では即座に RCE が成立する。根本原因は join() の生成時に expression() 関数によるエスケープを通さず、セパレータの単一引用符と配列値をそのまま埋め込んでいる点にある。
あなたへの影響
Phalcon を使用し、ユーザー入力や外部ソース由来の Volt テンプレートをコンパイル・キャッシュ実行する構成の場合、セキュリティ上の即対応が必要。
推奨:join フィルタを使うテンプレートが存在するかコードレビューで確認し、パッチ版への更新を最優先とすべき。