どうも、都内でPHPエンジニアをやっている者です。かれこれ20年以上、この業界で飯を食っていますが、ここ数年のサイバー攻撃の進化には、正直言って舌を巻くばかりです。特に、WordPressサイトを狙った「自動化された攻撃ボット」の動きは、もはや職人技というか、芸術の域に達しているとさえ感じますね。
先日も、あるプラグインの脆弱性が公表されたんですが、なんとそのわずか90分後には、その脆弱性を突いた攻撃が世界中で観測され始めたんです。90分ですよ?人間が脆弱性の内容を理解して、攻撃コードを書いて、なんてやっていたら絶対に間に合わないスピードです。これはもう、完全に機械化された軍隊が、号令とともに一斉に動き出すようなもの。今回は、そんな神出鬼没な攻撃ボットたちが、一体どのようにして僕らのサイトを狙っているのか、そのリアルな手口を、僕自身の経験も交えながら、できるだけ分かりやすく解説していこうと思います。
攻撃ボットの正体:無慈悲な働きアリ軍団
まず、「攻撃ボット」と聞くと、なんだかSF映画に出てくるような、自我を持ったAIを想像するかもしれません。でも、実際はもっと泥臭くて、単純なプログラムの集合体です。彼らは、ただひたすら命令されたことを、24時間365日、文句も言わずに実行し続ける、いわば「働きアリ」のような存在。その目的はただ一つ。「脆弱性のあるWordPressサイトを見つけ出し、侵入すること」です。
彼らは、世界中のWebサイトを常にスキャンしていて、WordPressで構築されているサイトを見つけると、インストールされているプラグインやテーマのバージョン情報を手当たり次第に収集します。そして、その情報が、彼らの持つ「攻撃対象リスト」と一致した場合、自動的に攻撃を開始するわけです。この一連の流れに、人間の感情や判断は一切介在しません。だからこそ、無慈悲で、そして恐ろしく効率的なんです。
僕が以前関わったある企業サイトで、こんなことがありました。ある朝、担当者から「サイトがおかしい」と連絡があり、見てみると、トップページに見覚えのないリンクが大量に埋め込まれていました。それも、パッと見では分からないように、ソースコードの中に巧妙に隠されていたんです。
原因を調べてみると、使われていたあるプラグインに脆弱性があり、それを突いてボットが侵入し、SEOスパムリンクを埋め込んでいたことが判明しました。しかも、その脆弱性が公表されたのは、攻撃を受けるわずか2週間前。パッチもとっくにリリースされていたのに、担当者が更新を先延ばしにしていたんです。
これ、他人事じゃないんですよ。僕らが「まあ、明日でいいか」と思っている間に、ボットは容赦なく攻撃してきます。しかも、現在の攻撃ボットは、以前に比べて遥かに高度化しています。機械学習を用いて、攻撃パターンを最適化したり、検知を回避するために攻撃のタイミングや頻度を変えたりするものまで出てきています。。
攻撃の3ステップ:スキャン、侵入、そして拡大
では、具体的にボットたちは、どのような手順で攻撃を仕掛けてくるのでしょうか。その動きは、大きく3つのステップに分けることができます。
ステップ1:スキャン(獲物を探す)
まず、ボットは広大なインターネットの海を泳ぎ回り、WordPressサイトの「匂い」を嗅ぎつけます。特定のファイル(wp-login.phpなど)の存在や、HTMLソースコード内の特徴的な記述を手がかりに、WordPressサイトをリストアップしていきます。これは、漁師が魚群探知機で魚の群れを探すようなものですね。
ステップ2:侵入(脆弱性を突く)
獲物を見つけると、次はそのサイトが「料理」できるかどうかを判断します。具体的には、インストールされているプラグインやテーマに、既知の脆弱性がないかをチェックするんです。
例えば、2025年4月に発覚した「OttoKit」という自動化プラグインの脆弱性(CVE-2025-27007)は、まさにボットの格好の餌食となりました。この脆弱性は、認証なしで管理者権限のアカウントを不正に作成できてしまうという、非常に深刻なものでした。
ボットは、この脆弱性を持つバージョンのOttoKitをインストールしているサイトを見つけると、即座に自動化された攻撃スクリプトを送り込みます。そして、サイトの所有者が気づかないうちに、admin_botのような名前の管理者アカウントを静かに作成してしまうのです。一度管理者権限を乗っ取られてしまえば、サイトの改ざん、情報漏洩、スパムメールの踏み台にされるなど、やりたい放題です。
恐ろしいのは、こうした攻撃が完全に自動化されていることです。ハッカーは、脆弱性情報をボットにインプットするだけで、あとはボットが勝手に動いてくれます。寝ている間に、何千、何万というサイトが攻撃されているわけです。
ステップ3:拡大(仲間を増やす)
そして、攻撃ボットの最も厄介な点が、この「自己増殖」能力です。Go言語で書かれた「GoTrim」というボットネットが、この典型的な例です。
GoTrimは、ブルートフォース攻撃(総当たり攻撃)でWordPressサイトのログイン情報を割り出し、侵入に成功すると、そのサイトを新たな「攻撃拠点(ボット)」に変えてしまいます。つまり、乗っ取ったサイトを踏み台にして、さらに別のサイトを攻撃し始めるわけです。こうして、ネズミ算式にボットネットワークは拡大していきます。自分が被害者であると同時に、知らぬ間に加害者にもなってしまう。これほど悪質な話はありません。
しかも、GoTrimは高度な暗号化技術(AES-GCM)を使って、コマンド&コントロール(C2)サーバーと通信します。つまり、ネットワーク監視ツールで通信内容を監視していても、何をやり取りしているのかが分からないんです。このステルス性が、GoTrimを特に厄介な存在にしています。
なぜ攻撃はこれほど速いのか?
冒頭で話した「90分で攻撃が始まる」というのも、この自動化された仕組みがあるからこそです。脆弱性情報が公開されると、世界中のハッカーたちが、その情報を自身のボットネットワークに組み込みます。あとは、ボットが自動的に脆弱なサイトを見つけ出し、攻撃を仕掛けるだけ。そこには、もはや人間が介在する余地はありません。
これは、もはや「いたちごっこ」ですらない。僕らが脆弱性の存在を知り、対策を講じるよりも先に、ボットはとっくの昔に攻撃を完了させている。そんなスピード感なんです。
ちなみに、こうした攻撃ボットの背後には、組織的な犯罪集団や、場合によっては国家が関与しているケースもあります。特定の国からの攻撃が異常に多いのは、そういった背景があるからです。
「放置されたプラグイン」という時限爆弾
「古いプラグインは危ない」というのは、よく言われることですが、それ以上に危険なのが「放置されたプラグイン」です。開発が止まってしまい、何年も更新されていないプラグインは、まさに時限爆弾のようなもの。
かつて、「Eval PHP」という、投稿内でPHPコードを実行できる便利なプラグインがありました。しかし、このプラグインは10年以上も更新が止まっていました。そして2023年、ハッカーたちはこの放置されたプラグインの脆弱性を見つけ出し、バックドア(裏口)を設置するための格好のツールとして悪用し始めたのです。
使っていないプラグインは、「停止」しておくだけではダメです。ファイルがサーバー上に存在する限り、攻撃の標的になり得ます。必ず「削除」する習慣をつけましょう。
僕らができる防御策とは?
では、この無慈悲なボット軍団から、どうやって自分たちのサイトを守ればいいのでしょうか。特別な魔法はありません。基本に忠実な、地道な対策の積み重ねが、何よりも重要です。僕が常々「これだけは絶対にやってくれ」と口を酸っぱくして言っていることを、いくつか紹介します。
1. とにかく更新!更新!更新!
WordPress本体、プラグイン、テーマ。とにかく、すべてを常に最新の状態に保つこと。これが最も基本的で、最も効果的な防御策です。
「更新したらサイトが壊れるかも…」という不安、よく分かります。でも、その不安を理由に更新を先延ばしにすることこそが、最大のリスクなんです。先ほど紹介したFile Managerプラグインの事例を思い出してください。開発者がパッチをリリースしたのに、30万以上のサイトが更新せずに被害に遭いました。
更新が怖いなら、まずステージング環境で試してみる。それだけで、リスクは大幅に減らせます。本番サイトのコピーを作って、そこで安全に更新テストを行えば、万が一問題が起きても本番サイトには影響ありません。
2. WAF(Web Application Firewall)を導入する
これは、サイトの「用心棒」のようなものです。不正なアクセスや攻撃のパターンを検知して、自動的にブロックしてくれます。
WAFには、クラウド型(Cloudflare、Sucuriなど)とサーバー型(ModSecurityなど)がありますが、僕のお勧めはクラウド型です。設定が簡単で、サーバーに負荷をかけずに、世界中の攻撃パターンをリアルタイムで学習してくれるからです。
特にCloudflareの無料プランは、個人サイトや小規模ビジネスには十分すぎるほどの機能を提供してくれます。DDoS攻撃の防御、ボット対策、SSL/TLS暗号化まで、全部タダです。使わない手はありません。
3. ログイン試行回数を制限する
ブルートフォース攻撃対策の基本ですね。一定回数ログインに失敗したIPアドレスを、一時的にブロックします。
WordPressには、この機能を簡単に実装できるプラグインがたくさんあります。「Limit Login Attempts Reloaded」や「WP Limit Login Attempts」などが有名どころです。これを入れておくだけで、総当たり攻撃の大半は防げます。
ただし、注意点が一つ。自分自身がロックアウトされないように、必ず「許可リスト」に自分のIPアドレスを登録しておくこと。これ、意外と忘れがちなんですよね(笑)。
4. 強力なパスワードと2段階認証
これも基本中の基本ですが、意外とできていない人が多い。パスワードは推測されにくい複雑なものにし、可能であれば2段階認証を設定しましょう。
「password123」とか「admin」とか、そんなパスワード使ってる人、まだいますよね?ボットにとっては、そんなの1秒で突破できます。最低でも12文字以上、大文字・小文字・数字・記号を組み合わせた、ランダムな文字列にしてください。
そして、2段階認証(2FA)。これは、パスワードが漏れても、スマホに送られてくる認証コードがないとログインできないという仕組みです。「Google Authenticator」や「Authy」などのアプリを使えば、簡単に設定できます。
5. 不要なプラグインは削除する
先ほども言いましたが、使っていないプラグインは「停止」ではなく「削除」です。サーバーに不要なファイルを残しておかないこと。
停止しているだけでは、ファイルはサーバー上に存在し続けます。そして、そのファイルに脆弱性があれば、攻撃の標的になり得るんです。使わないなら、きれいさっぱり削除する。これ、鉄則です。
6. セキュリティプラグインを活用する
WordPressには、優秀なセキュリティプラグインがたくさんあります。「Wordfence Security」「Sucuri Security」「iThemes Security」などが有名どころですね。
これらのプラグインは、マルウェアスキャン、ファイアウォール、ログイン保護、ファイル整合性チェックなど、包括的なセキュリティ機能を提供してくれます。無料版でも十分な機能がありますが、本気でセキュリティを強化したいなら、有料版も検討する価値はあります。
僕自身、複数のクライアントサイトでWordfenceを使っていますが、毎日のように不審なアクセスをブロックしてくれているのを見ると、「入れておいて良かった」と心から思います。
7. 定期的なバックアップ
万が一、攻撃を受けてサイトが改ざんされたり、データが破壊されたりしても、バックアップさえあれば復旧できます。バックアップは、最後の砦です。
「UpdraftPlus」や「BackWPup」などのプラグインを使えば、自動的に定期バックアップを取ってくれます。バックアップ先は、サーバー内だけでなく、Google DriveやDropboxなどのクラウドストレージにも保存しておくと、さらに安心です。
「バックアップなんて面倒くさい」と思うかもしれませんが、一度設定してしまえば、あとは自動でやってくれます。その「面倒くさい」を乗り越えた先に、安心があるんです。
よくある質問(FAQ)
Q1. 人気のある有名なプラグインなら安全ですよね?
A. それは大きな誤解です。人気プラグインは、それだけ多くのサイトで使われているため、脆弱性が発見された場合の影響が大きく、むしろ攻撃者にとっては格好の標的になります。重要なのは、人気ではなく、開発者がセキュリティに対してどれだけ真摯に向き合い、迅速にアップデートを提供しているかです。
Q2. 更新するのが怖いんです。サイトが壊れたらどうしよう…
A. その気持ち、よく分かります。だからこそ、「ステージング環境」で事前にテストすることが重要なんです。本番サイトのコピーを作って、そこで安全に更新テストを行えば、万が一問題が起きても本番サイトには影響ありません。
Q3. 攻撃ボットに狙われているかどうか、知る方法はありますか?
A. サーバーのアクセスログを調べることで、不審なアクセスの痕跡を見つけることができます。海外からの大量のアクセスや、wp-login.phpへの執拗なPOSTリクエストなどがあれば、ボットに狙われている可能性が高いでしょう。セキュリティプラグインの中には、こうした不審なアクセスを監視・通知してくれるものもあります。
Q4. ぶっちゃけ、対策って面倒じゃないですか?
A. 面倒です(笑)。はっきり言って、セキュリティ対策は地味で、終わりがなくて、面倒な作業の連続です。でも、一度サイトを乗っ取られて、顧客情報が流出したり、ビジネスが停止したりする損害を考えたら、その「面倒」は、絶対に払うべきコストだと僕は思います。
Q5. 小規模なサイトでも、本当に狙われるんですか?
A. はい、間違いなく狙われます。攻撃ボットは、サイトの規模や知名度なんて気にしません。彼らが探しているのは、「脆弱性」という侵入可能な隙間だけです。むしろ、小規模サイトの方がセキュリティ対策が甘いことが多いので、格好の標的になります。「うちは小さいから大丈夫」という油断が、一番危険なんです。
まとめ:僕らのサイトは、常に狙われている
自動化された攻撃ボットは、もはやサイバー空間における自然災害のようなものです。僕らが眠っている間も、彼らは休むことなく活動を続けています。「自分のサイトは小さいから大丈夫」なんていう油断は、絶対に通用しません。
彼らにとって、サイトの規模や知名度は関係ありません。ただ、そこに「脆弱性」という侵入可能な隙間があるかどうか。それだけなんです。
最後に、もう一度だけ言わせてください。セキュリティ対策は、「やったから安全」ではなく、「やり続けることで安全を保つ」ものです。今日完璧に守られたサイトでも、明日新しい脆弱性が発見されるかもしれません。だからこそ、定期的なアップデート、監視、バックアップが欠かせないんです。
この記事を読んで、「ちょっとヤバいかも」と感じたなら、それが対策を始める絶好のタイミングです。面倒くさがらずに、今日からできることから始めてみてください。その地道な一歩が、明日のあなたのサイトを守る、何よりの力になるはずですから。
WordPressサイトの健康診断、していますか?
「うちのサイト、本当に大丈夫かな…」
もし少しでも不安を感じたら、専門家によるセキュリティ診断をお勧めします。
私たち「WordPressセキュリティ救助隊」は、あなたのサイトに潜む脆弱性を徹底的に洗い出し、最適なセキュリティ対策をご提案します。