概要
- WordPressの get_page_template() 関数に 脆弱性 が存在
- 攻撃者が任意の .phpファイル をテーマ外から読み込ませる可能性
- 特定の テーマ構造 と サーバー環境 が条件
- RCE(リモートコード実行) に発展するリスク
- WordPress 7.1.2 で修正済み、古いブランチにも修正が適用
WordPress get_page_template() 脆弱性の概要
- 未認証の攻撃者 によるget_page_template()の悪用リスク
- page- で始まるディレクトリがテーマ直下に存在する場合が条件
- 例: page-templates ディレクトリ
- 影響を受けるテーマ例:
- Twenty Twelve
- Twenty Fourteen
- サードパーティ製: Neve, Hestia, Sydney
- サーバー上に 攻撃者が選択したローカル .phpファイル が存在し、Webサーバーアカウントで読めることが必要条件
- pearcmd.php (PEAR)を利用したRCEへの移行が可能
- register_argc_argv がOnの場合、悪用されるリスク
影響範囲と環境
- Docker公式phpイメージ が影響対象
- cPanel のデフォルト設定(PHP 8.5未満)も影響
- サーバー環境やテーマ構成によっては、 RCE(リモートコード実行) に発展
- 攻撃成功には複数の事前条件が必要
対策とアップデート情報
- WordPress 7.1.2 にて本脆弱性を修正
- 4.7以降の全ブランチ にも修正をバックポート済み
- 早急な アップデート 推奨
- 脆弱性発見・責任ある開示: Robert Ressl
管理者への推奨対応
- 利用中テーマの ディレクトリ構造 を確認
- サーバー上の 不要な.phpファイル の削除・権限見直し
- register_argc_argv 設定の確認と必要に応じてOffへ変更
- WordPress本体のバージョンアップ を最優先で実施
- 影響を受けるテーマの アップデート または 変更 検討
うーん、これが原因で古いテーマに予期しないアップデートがあったのかも。