注目★★★★★GitHub Advisory
Pimcore に SQL インジェクション脆弱性、クラス定義 UID 検証の不完全な修正が原因
30秒で把握
- 1Pimcore の ClassDefinition UID 正規表現に終了アンカー欠落、SQL インジェクション脆弱性発生
- 2認証済み objects 権限ユーザーが悪意ある UID を含むクラスを作成し、データオブジェクト読み込み時に SQL 実行可能
- 3先行アンカー追加の過去修正が不完全・Fieldcollection の正しい実装パターン (末尾 $) と対比して確認必須
要約
Pimcore の ClassDefinition UID 検証正規表現に終了アンカー (`$`) が欠けており、認証済みユーザーが悪意あるUID を含むクラスを作成できる。当該クラスのデータオブジェクト読み込み時に Block.php が生 classId を引用符なしで SQL クエリに連結するため、SQL インジェクション攻撃が成立する。先行アンカー (`^`) を追加した過去修正 (commit dbe1d131e4) で終了アンカーを見落とした不完全な対応が原因。正しい実装は Fieldcollection の定義ファイルで確認可能で、末尾に `$` を付けた正規表現 `/^[a-zA-Z]\w*$/` が使用されている。
あなたへの影響
Pimcore を使用するシステムの管理者は当該バージョン確認のうえパッチ適用を検討し。
推奨:その間は objects 権限付与範囲を制限することを推奨。