WordPress サイトを多言語化するプラグイン TranslatePress に、ログインしていない第三者が管理者アカウントを乗っ取れる脆弱性が、Wordfence から 8/25 に公開されました。有効インストールは 40 万です。
修正版 3.3.2 は 8/13 に出ています。それ以降に更新していれば、今回の乗っ取りはすでに塞がっています。8/25 に新しくなったのは、悪用の手順が誰でも読める形になったことの方です。
Wordfence の advisory と wp.org の配布情報をもとに、やることだけ整理しました。
取るべき対応
- プラグイン一覧で TranslatePress のバージョンを見る。3.3.2 以上なら、今回の乗っ取りは塞がっています
- 3.3.1 以下なら、現行の 3.3.4 に上げる。乗っ取りが塞がるのは 3.3.2 からですが、その後もログインなしで悪用できる XSS の修正が 2 本続いています
| 版 | 公開 | 直したもの |
|---|---|---|
| 3.3.2 | 8/13 | 今回の乗っ取り |
| 3.3.3 | 8/18 | 検索機能経由の XSS |
| 3.3.4 | 8/25 | コメント経由の XSS |
- すぐ上げられない場合は、管理者全員のプロフィールの「言語」を「サイトデフォルト」に戻す。後述のとおり、これで乗っ取りの成立条件が外れます
- 3.3.1 以下を後述の条件に当てはまる状態で使っていた期間があるなら、ユーザー一覧に見覚えのない管理者がいないか見ておく。念のためです
起こったこと
ログインしていない第三者が、管理者のパスワードリセット URL を平文のまま取り出せる状態でした(CVE-2026-19632、CVSS 9.8)。攻撃者は管理者のユーザー名かメールアドレスを知っていれば、パスワードリセットのメール送信を自分で起こし、その URL を読み取ってパスワードを設定し直し、管理者としてログインできます。管理者として入られれば、被害はサイト全体に及びます。
原因
TranslatePress は、サイトが送るメールも翻訳の対象にしています。管理者のプロフィール言語が翻訳先の言語に設定されていると、パスワードリセットのメールも翻訳を通り、文字列の自動保存(automatic string saving・初期設定でオン)が、本文中のリセット URL を翻訳待ちの文字列として辞書テーブルに保存します。そして、この辞書をログインなしで読み出せる機能があったため、保存された URL をそのまま取り出せました。
対象者
対象は 3.3.1 以下で、次の 2 つがそろっているサイトです。文字列の自動保存が初期設定のままオンになっていること、そして管理者のプロフィールの「言語」が、公開中の翻訳先言語に変わっていることです。
逆に言うと、管理者の言語がサイトの既定言語のままなら、リセットメールは翻訳を通らず、この乗っ取りは成立しません。ユーザー一覧から各管理者のプロフィールを開いて、「言語」が「サイトデフォルト」のままかどうか、その場で確認できます。日本語のサイトに英語ページを足している構成なら、管理者が自分の画面を英語表示に切り替えている場合が該当します。
条件から外れたサイトも、上げる先は同じ 3.3.4 です。表のとおり 3.3.2 の後にも XSS の修正が続いていて、そちらには管理者の言語のような条件がありません。
