0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Loco Translate(翻訳プラグイン)CVE-2026-15005──1クリックでPHP実行、確認と更新手順

0
Posted at

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・「不審リンクを踏まない」で時間差を埋める
  • 「使い終わって放置したプラグイン」を棚卸しする良い機会。攻撃面は入れっぱなしのぶんだけ広がります

関連記事

本記事のようなプラグインの脆弱性による弱点も、Web サイトを 9 つの守りでまるごと守るサイトドックでまとめて対策できます → https://sitedock.jp

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?