WordPressのパスワードを変更した。さらに、スマホで本人確認する「二段階認証」も導入した。これで不正ログイン対策は万全だろうか。
今回、実際に導入してみたのは、WordPress.org名義で配布されている無料プラグイン「Two Factor」。2026年10月時点で有効インストール数は10万以上。スマホのGoogle Authenticator(Google認証システム)を使えば、ログイン時に表示される6桁の数字を入力するだけだ。
ところが開発履歴を調べると、2026年9月には、このTwo Factor自体にも認証上の問題を修正した記録があった。
鍵を二つに増やしても、泥棒が別の入口から入ってきたら意味がない。WordPressには、そんな「別の入口」が存在するのである。
Google認証システムなら、スマホだけで簡単に守れる
WordPressの二段階認証は、パスワードに加え、もう一つの方法で本人確認する仕組みだ。今回選んだTwo Factorは、WordPress公式のセキュリティガイドでも紹介されているプラグインの一つである。
導入は難しくない。WordPressの管理画面からプラグインをインストールして有効化し、「ユーザー」→「プロフィール」にある二要素認証の設定へ進む。そこで認証アプリを選び、表示されたQRコードをスマホで読み取る。
認証アプリにはGoogle Authenticatorなどが使える。これでスマホにWordPress用の6桁の数字が表示されるようになる。設定を検証・保存した後は、別のブラウザでログインを確認すればよい。
便利なのは、認証コードを表示するだけなら、スマホが圏外でもインターネット接続が不要なこと。Googleの公式ヘルプでも確認できる。メールの到着を待つ必要がなく、複数サイトの認証コードも一つのアプリで管理できる。

実際の導入画面を参考に再構成したイメージ。QRコードや認証コードなどは実際の認証情報ではない。
ただし、プラグインを有効化しただけでは各ユーザーの二段階認証は完成しない。利用する管理者ごとに設定が必要だ。スマホを紛失したときのため、画面で生成できる10個の使い切りリカバリーコードも、安全な場所に保管しておきたい。
6桁の数字は100万通り。では、突破される確率は?
Google Authenticatorなどで使われるTOTP方式は、時刻と秘密鍵をもとに認証コードを生成する。一般的な設定では約30秒ごとに数字が切り替わる。
ここで単純計算してみよう。6桁の数字は「000000」から「999999」まで、全部で100万通り。正解が一つで、攻撃者が無作為に1回だけ入力すると仮定すれば、一致する確率は100万分の1、つまり0.0001%になる。
もちろん、これは理論上の計算だ。実際には前後の時間帯のコードを受け付ける設定や、試行回数の制限などによって条件が変わる。
それでも、パスワードを盗まれただけではログインを完了しにくくなる点は大きい。反対に、偽のログイン画面へパスワードと認証コードの両方を入力してしまえば、短時間で悪用される可能性は残る。
なんと、Two Factor自身にも認証の抜け道があった
2026年9月25日付のTwo Factor Ver.0.17.0更新履歴には、気になる修正が記載されている。
WordPressのREST APIやXML-RPCを通じた認証で、一定の条件下では通常のパスワードによって二段階認証の制限を回避できる問題だ。開発記録によれば、複数のログイン処理を一つの通信にまとめる場合、先にアプリケーションパスワードで認証したユーザーの判定が、別のユーザーにも影響する可能性があった。
これは通常の管理画面ログインが誰でも突破できたという話ではない。また、この問題によって実際に個人情報が流出したという事実も確認できていない。
さらに同年9月30日には、旧版に存在したサービス妨害(DoS)の脆弱性「CVE-2026-100508」も公表された。こちらも0.17.0で修正済みだ。
セキュリティを強化するためのプラグインでも、更新を怠れば、それ自体が弱点になる。公式名義だから永久に安全、というわけではない。
WordPressにはログイン画面以外にも入口がある
では、二段階認証を導入しても防げない攻撃は何だろうか。入口別に整理すると、その違いがよく分かる。
| 侵入・攻撃の経路 | 二段階認証の効果 |
|---|---|
| 通常の管理画面ログイン | パスワード流出対策に有効 |
| API用の認証情報 | 別途管理・失効が必要 |
| PHPやプラグインの脆弱性 | 直接の防御にはならない |
WordPressには外部アプリや自動投稿ツールからアクセスするための「アプリケーションパスワード」もある。これは通常のログイン用パスワードとは別の認証情報で、不要になったものは個別に無効化できる。
さらに、PHPやWordPressのプラグインに欠陥があれば、ログイン画面を通らずに攻撃される場合もある。二段階認証は、そのようなソフトウェアの欠陥まで修正してくれるわけではない。

WordPressの複数の防御対象を建物に見立てた概念図。実際の侵入事件やシステム構造を再現したものではない。
実際、Two Factorの公式配布ページには、必要PHPバージョンとして「7.4以上」と表示されているが、PHP 7.4の公式セキュリティサポートは2022年11月に終了している。「プラグインが動くこと」と「サーバー環境が安全であること」は、まったく別の話なのだ。
では、WordPress管理者は何をすればいい?
まずはTwo Factorなどの信頼できる二段階認証を導入し、各管理者のアカウントで有効化する。おすすめはGoogle Authenticatorなどの認証アプリ方式だ。
そのうえで、リカバリーコードの保管、不要なアプリケーションパスワードの削除、PHP・WordPress本体・テーマ・プラグインの更新、定期的なバックアップを組み合わせる。Two Factorについても、使用中のWordPressとの互換性を確認して修正版を利用したい。
認証アプリは便利だが、設定用QRコードや秘密鍵、リカバリーコードを公開してはいけない。それらはログインを守るための重要な秘密情報だからだ。
二段階認証は万能ではない。しかし、パスワードだけで運営するより、守りを一段強くできる。WordPress管理者には、ぜひ導入を検討してほしい。
【編集者が思うこと】
今回、実際にGoogle認証システムを使ってみて、まず思ったのは「もっと早く入れておけばよかった」ということだ。スマホを開いて数字を入れるだけ。意外と手間は少ない。
ただ、調べていて引っかかったのは、セキュリティ用プラグイン自身にも修正すべき穴があったこと。しかもログイン画面とは別の入口だという。玄関に鍵を二つ付けて安心していたら、裏口の存在を忘れていた。そんな話では困る。
結局、二段階認証を入れて終わりではない。入れた後も更新すること。そして、何よりパソコンの前に座っている管理者本人が、裏口まで気にしておくことなんだろうね。
ちょっと分かりにくい用語
- TOTP(時間ベースのワンタイムパスワード)
- スマホとサーバーで共有する秘密鍵と現在時刻から、短時間だけ使える認証コードを生成する仕組み。
- REST API・XML-RPC
- 外部アプリやプログラムがWordPressと情報をやり取りするための仕組み。通常の管理画面とは異なる認証経路を持つ。
参考資料
- WordPress.org「Two Factor」公式配布ページ・更新履歴
- WordPress公式「Two Step Authentication」
- WordPress/two-factor GitHub:2026年9月のAPI認証修正記録(#989)
- Patchstack:Two Factor 0.16.0以前のDoS脆弱性(CVE-2026-100508)
- Google公式ヘルプ:Google Authenticatorの認証コード
- RFC 6238:時間ベースのワンタイムパスワード(TOTP)
- WordPress公式「Application Passwords」
- PHP公式:サポート終了バージョン一覧
- NIST SP 800-63B:デジタル認証とフィッシング耐性
