WordPress の翻訳プラグイン Loco Translate に、深刻度の高い脆弱性 CVE-2026-15005 が公表されました。翻訳作業でとりあえず入れて、そのまま放置している──というサイトほど危険です。この記事は「自分のサイトは影響を受けるのか」「何をすれば同じ被害を防げるのか」を、確認コマンドと更新手順つきでまとめます。
この記事の対象と結論(3行)
- 対象: Loco Translate(WordPress の翻訳プラグイン / 100 万サイト超で稼働)を使っている、または過去に入れて放置しているサイト運営者・制作会社
- 結論: バージョン 2.8.5 以下に CVE-2026-15005(CVSS 8.8)。ログイン中の管理者が細工されたリンクを一度踏むだけで、サーバ上で任意の PHP が実行されうる
- いま必要なこと: 2.8.6 以降へ更新(使っていなければ停止・削除)。以下、影響確認と更新・多層防御の手順を示します
本記事は再発防止(何をすれば同じ被害を防げるか)の観点でまとめます。悪用の手順や実証コードは載せません。
どんな脆弱性か
出典: NVD - https://nvd.nist.gov/vuln/detail/CVE-2026-15005 (2026 年 7 月 16 日公開 / Wordfence 報告)
| 項目 | 内容 |
|---|---|
| CVE | CVE-2026-15005 |
| 種別 | CWE-352 クロスサイトリクエストフォージェリ(CSRF)を起点としたリモートコード実行(RCE) |
| 影響バージョン | Loco Translate 2.8.5 以下すべて |
| 修正バージョン | 2.8.6(最新は 2.8.7) |
| CVSS v3.1 | 8.8 (HIGH) / AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
|
ポイントは CVSS ベクトルの PR:N(権限不要)と UI:R(利用者の操作が必要)の組み合わせです。攻撃者自身はログイン情報を持っていなくても、ログイン中の管理者に細工したページやリンクを開かせることで成立します。
プラグインのテンプレート処理(execTemplate)で、本来必須のはずの nonce(CSRF 対策トークン)の検証が抜けていたため、正規の管理者セッションに便乗した「なりすましリクエスト」が通ってしまいます。さらに template パラメータに php://filter という PHP のストリームラッパーを指定できたことで、単なる設定改ざんにとどまらず**任意の PHP コード実行(= サーバ乗っ取り)**まで到達しうる、というのが深刻度 8.8 の理由です。
CSRF は「本人が、頼んでいない操作をさせられる」攻撃です。通常はサイト側が nonce でリクエストの正当性を確かめて防ぎますが、その確認が欠けていたのが今回の根因です。
あなたのサイトは影響を受けるか
まず「入っているか」「バージョンはいくつか」を確認します。wp-cli が使える環境なら 1 コマンドで済みます。
# インストール済みか + 現在バージョンを確認
wp plugin get loco-translate --field=version
# 更新可能なプラグインの一覧(loco-translate の行を見る)
wp plugin list --update=available
wp-cli が無い場合は、管理画面「プラグイン」一覧で Loco Translate のバージョン表記を見ます。2.8.5 以下なら対象です。
過去に「テーマや他プラグインの日本語化」で一度だけ使い、その後放置しているケースが実は一番危険です。入っていること自体を忘れているため、更新もされず、管理者が気づかないまま攻撃面として残り続けます。
対策(優先順)
1. 2.8.6 以降へ更新する(最優先)
# 更新前にバックアップを取ってから実行する
wp plugin update loco-translate
# 更新後にバージョンを再確認(2.8.6 以上になっていること)
wp plugin get loco-translate --field=version
管理画面「プラグイン」→「更新」からの更新でも構いません。更新前に必ずバックアップを取ってください。
2. 使っていないなら停止し、削除する
翻訳作業が終わっているなら、有効化したまま残す理由はありません。停止だけでなく削除まで行うと攻撃面そのものが消えます。
wp plugin deactivate loco-translate
wp plugin delete loco-translate
「翻訳が終わったら削除する」を運用ルールにしておくと、同種の放置リスクを根本から減らせます。
3. すぐ更新できないときの緩和(時間差を埋める)
-
管理画面(
/wp-admin)を IP や BASIC 認証で絞る。CSRF は「ログイン中の管理者に踏ませる」ことで成立するため、外部から管理者を狙う経路を狭められます - **管理者アカウントに 2 要素認証(2FA)**を設定する
- WAF で既知の攻撃パターンを遮断する(更新までの時間差を埋める層として)
- 管理者は、SNS やメールで届いた心当たりのないリンクを、WordPress にログインしたまま開かない
いずれも更新の代わりにはなりません。あくまで更新までの時間を稼ぐ措置として捉えてください。
4. RCE を前提とした被害の封じ込め
万一 PHP が実行されても被害を広げないために、wp-content/uploads などのデータ用ディレクトリでの PHP 実行をあらかじめ止めておきます。アップロード領域は本来 PHP を動かす場所ではないため、実行を禁止しても正常な運用に影響しません。具体的な設定例と考え方は、末尾「関連記事」のファイル権限・PHP 実行制限の記事にまとめています。
まとめ
- Loco Translate 2.8.5 以下に CVE-2026-15005(CVSS 8.8 / CSRF → RCE)。100 万サイト超で使われる定番プラグイン
- ログイン中の管理者を細工リンクに 1 回誘導するだけで、サーバ上で PHP が実行されうる
- 最優先は 2.8.6 以降への更新。使っていないなら停止・削除
- 更新までは管理画面の IP 制限・2FA・WAF・「不審リンクを踏まない」で時間差を埋める
- 「使い終わって放置したプラグイン」を棚卸しする良い機会。攻撃面は入れっぱなしのぶんだけ広がります
関連記事
- WordPressコア未認証RCE(wp2shell)の確認と更新手順
- WordPressの改ざんを防ぐファイル権限とPHP実行制限
- WordPress自動更新を全部ONにしない運用(コア/プラグイン/テーマ別)
本記事のようなプラグインの脆弱性による弱点も、Web サイトを 9 つの守りでまるごと守るサイトドックでまとめて対策できます → https://sitedock.jp