WordPressに深刻な脆弱性!認証なしでリモートコード実行(RCE)が可能なパストラバーサルを解説
WordPress: Unauthenticated path traversal leading to conditional RCE
WordPress: Unauthenticated path traversal leading to conditional RCE
WordPressにおいて、認証不要でパストラバーサルが発生し、条件付きでリモートコード実行(RCE)に繋がるという非常に危険な脆弱性が発見されました。システムの乗っ取りに発展する可能性があるため、関連する環境を利用している方は至急アップデート状況を確認してください。
pearcmd.phpが存在していて、かつregister_argc_argvがオンになっている必要があるんだけど、レンタルサーバーでは一般的じゃないよね。ただ、他のテーマや条件が多くのWordPressサイトに影響を与える可能性はあると思う。
CVSSスコアなんて全く意味がないし、見出しで取り上げるのをやめた方がみんなのためだよ。これは特定の状況下で起こるWordPressのRCEで、影響を受けるのは一部のテーマだけだしね。
ふむ、かなり古いテーマに予期せぬアップデートが来ていたのはこのせいか。
皮肉なことに、影響を受ける関数の公式ドキュメントにある9年前のコメントが、この重大なセキュリティ欠陥の性質と対策を完璧に言い当てているよ。
Paul Ryan 9年前
locate_template()はディレクトリトラバーサル攻撃を防げないことに注意。だからユーザーから渡されたテンプレート名をこの関数に使うなら、それが適切な3つの場所(有効なテーマディレクトリ、親テーマディレクトリ、または /wp-includes/theme-compat/ ディレクトリ)のどれかにあることを必ず確認してね。
https://developer.wordpress.org/reference/functions/locate_template/
インターネット上でアクセス可能なWebサーバーが /something/something.php?somearg=someval といったスパムで溢れかえる理由はこれだよ。Webの歴史の中で最も脆弱性を突かれ続けてきたソフトウェアを挙げるとしたら、間違いなくWordPressはトップ候補だね。MS TeamsやSharePointあたりと同じか、それ以上かもしれない。
Codexに依頼してWebサイトをHugoテンプレートで書き直してもらったんだけど、大正解だったよ。静的ホスティングに切り替えてWordPressとおさらばできたおかげで、ストレスが激減した!
WordPressは本当にゴミみたいなソフトウェアだよ。プラグイン開発をしたことがある人なら、その惨状は嫌というほど分かるはず。
ドキュメントを見ればこのスパゲッティコードの酷さが一目瞭然だし、プラグイン開発で日常的に使うメソッドの半分はドキュメント化されていないか、型定義すらされていない。正直言って使い物にならないよ。
エコシステムのおかげでWordPressが便利だというのは分かるけど、本当にお願いだから使わない方がいい。
"WordPress 7.1.2がリリースされ、脆弱性への修正が含まれています。また、古いバージョンを利用しているユーザーへの配慮として、4.7まで遡って修正がバックポートされました"
配慮ついでに言うと、私は毎日WordPressについて一つ以上の悪口を言わないように気をつけているんだ。ちなみに、インストールされているWordPressの約3分の1は、最新の7系ではないよ。
素晴らしいソフトだよ、全く。クライアントに「WordPress用のシンプルなPHP環境をホスティングしてくれ」(会社が開発したもっと複雑なJava環境とは別に)と頼まれて用意したんだけど、インストールしたその日のうちにハッキングされたよ。幸い、プロキシでホワイトリストを使って外部へのトラフィックを制限していたから、被害はメインページがプロキシの403エラーページに置き換わった程度で済んだけど。それにしても、これほどクソなソフトウェアが今日まで生き残っているのは、無能さの極みと言える大きな功績だね。
彼らはあらゆるレベルで失敗していて、「ロードバランサー/リバースプロキシ配下のサービス」という単純な問題すら、「公式のRFCではない」という理由でコアでのX-Forwarded-Forヘッダー対応を拒否しているし、かといって公式RFCにも対応していないという始末だよ。