高速化・セキュリティ

【案件事例】「自動更新だから安心」は危険!お問い合わせフォームの不具合から発覚したサーバー全体のセキュリティ事故と解決の全貌

「自動更新だから安心」は危険!お問い合わせフォームの不具合から発覚したサーバー全体のセキュリティ事故と解決の全貌

TEDASKの代表Toshi Seitoです。

先日ですが、クライアントさんから、お問い合わせフォームからメールが送信できなくなったというご相談をいただきました。

一般的にこのようなご相談の場合、Googleのなりすまし対策強化によるものが原因なことがほとんどで、WordPressのフォームの送信がSMTP認証されていない、SPFやDKIMなどの署名や、DMARCなどの対応がされていないのだろうと、考えます。

しかしながら、今回のケースでは、それだけではなく、すでに使えなくなっていたプラグインによる確認画面の表示機能が動作しなかった点に加えて、2024年の段階でマルウェアに感染しており、不正アクセスや大量のメール送信がされていたことがわかり、当初予定していた対応よりも大幅な改善対応が必要になりました。

この記事では、WordPressで陥りがちは自動更新任せの管理についての注意喚起と、日頃からしっかりメンテナンスをしてほしいという思いから、今回行った作業とメンテナンスで必要なことを共有したいと思います。

調査編:次々と見つかる「不具合の連鎖」

サポート切れのプラグインの使用(Contact form 7 add confirm)

冒頭でお話した通り、今回の作業ではSMTP認証が原因と思っていたため、ホスティングで新しくメールユーザーを作成し、WP Mail SMTPというWordPressプラグインによりSMTP認証をすることで、よりメールが届くようにするようにしました。

また、メールユーザーを作成した際に、SPFやDKIM、DMARCがDNSで対応されているかも確認し、すでにホスティングの方で自動で対応しているようだったので、Contact form 7で送信試験をしました。

すると、やはり送信がうまくいきません。

画像が見にくく申しわけないのですが、ボタンをよく見てみると、「確認」となっていました。

これは無効化したあとの画像ですが、「Contact form 7 add confirm」というContact form 7に確認画面の機能をつけるためのプラグインがインストールされ有効化されていました。

この「Contact form 7 add confirm」はすでにサポートが終わっており、対応時点のWordPress 6.9.4では正常に動作しませんし、セキュリティ的にも問題があります。

そういったことから、今回の問題はContact form 7 add confirmが正常に動かないものだと、ここに来て初めて気づきました。

このあと、代替プラグインとして「Contact Form 7 Multi-Step Forms」を利用することにしました。

Outgoing mail from “XXX@abc.com” has been suspendedによりホスティングがメール送信機能を停止していることに気づく

確認画面を作ったあとに、いよいよメール送信試験をしてみるとWP Mail SMTPにエラーが出ていました。

Mailer: その他の SMTP
SMTP Error: The following recipients failed: test@gmail.com: Outgoing mail from “クライアン.com” has been suspended.

これは、どうやらホスティングの方でメール送信を止めているというエラーのようでした。あまり見たことがないエラーだったため最初は、よくわかりませんでしたが、ホスティングからなにかメッセージやアラートが出ていないかを確認することにしました。

すると、以下のようなメッセージが管理画面に届いていました。

お客様ご利用の弊社サービス「クライアント.com」から送信されているメールが
セキュリティシステム等により、迷惑メール(SPAM)と判断されているご状況でございます。
事後の報告となり大変恐縮ではございますが、お客様アカウントのメール送信機能を一時停止しております。

しかもこのメッセージは2024年のものでした。つまりだいぶ前からメール送信ができない状態だったわけです。

このクライアントさんは独自ドメインをメールアカウントで使っていなかったため、良くも悪くもこの状況にも気づくことなく2年が経ってしまったようです。

この時点でようやく、サイトがハッキングされていることに気づくことになりました。

根本的な原因

攻撃の的は更新されていない公式テーマ

解決方法を書く前に、今回のハッキングの根本的な原因をまとめます。

まず、今回攻撃の対象となったのはWordPressの公式テーマのTwenty Twenty Oneでした。これは2020年に作られた公式テーマです。このテーマを使わないにも関わらず、消さないで放置していたのが原因です。

テーマを消さないとしても、もしこまめに更新をしていたらこのような攻撃は受けずに済んだはずです。

しかしながら、クライアントさんは自動更新設定をしていたので、問題ないと思っていたとのことでした。

ただ実は、攻撃を受けたのはお問い合わせフォームの相談をもらったサイトではなく、別のWordPressサイトが原因でもありました。

しかもそのサイトは、更新設定が無効になっていました。

define('AUTOMATIC_UPDATER_DISABLED', true);

これはwp-config.phpというWordPressの設定ファイルに記述することで、自動更新を設定できないようにする設定です。

define( 'DISALLOW_FILE_MODS', true );

また上記のように書くことで、更新メニューを非表示にすることができます

一般的にはこのような設定はしないのですが、これがマルウェアの仕業なのか、機能カスタマイズの開発に入った人が意図的に入れたものなのかはわかりません。

いずれにしても、セキュリティアップデートがされていなかった放置されたテーマが攻撃の的になってしまいました。

WordPressのメジャーアップデートで自動で公式テーマがインストールされる

しかしながらどうして、このような古いテーマが残っていたのでしょうか。

これは実は理由があります。

1つは、WordPressのメジャーアップデートのたびに、その年の新しい公式テーマが自動でインストールされるようになっています。

これを知らないと、WordPressが自動更新した際に、どんどん公式テーマがインストールされてしまうことになります。このクライアントさんの場合は、2018年のサイトを複製して作っていたことから、古いテーマが残っていたということでした。

2つ目は、テーマの削除方法がわかりにくいため放置されてしまうという点です。

テーマを消すためには「外観」→「テーマ」→テーマの選択→右下の削除リンクで削除

という流れですが、プラグインに比べてわかりにくいため、削除せずに放置している人も少なくありません。

繰り返しになりますが、使っていない場合は更新さえしていればマルウェアに感染するリスクは大幅に下がります。とにかく更新をしていれば良いのです。

そして、やはり使わなテーマは必ず削除するようにしましょう。

全部で4つのWordPressの管理の大変さ

そしてなにより問題だと思ったのが、このクライアントさんは4つのWordPressサイトを運営していました。

しかしながら、お話を聞くとちゃんと管理していたのは、Contact form 7が動かないと知ったサイトのみで、他の3つのWordPressはほぼ放置の状態でした。

これは、自動更新を過信していたのもありますが、今回の場合は更新が無効だったことや、仮に自動更新が行われたとしても、WordPressにアクセスがないと自動更新も動かないようになっているため、アクセスが少ないサイトだと余計にセキュリティリスクが高くなります。

そもそもにして、クライアントさんは自営業で一人で事業を行っている中で4つを定期的に管理するというのは時間的にも、心理的にもかなり大変です。

私自身は仕事で保守を行うので、仕事としてアップデートを行っていますが、自分自身のサイトの場合は不思議と心理的に面倒に感じてしまいます。

そのため、以前は特化型サイトにしていましたが、昨年にこのサイトに集約することにしました。

解決編:マルウェアの調査と削除、そしてセキュリティ対応

クライアントさんが利用しているホスティングでは、Cpanelを採用した管理画面でした。

Cpanelにはimunify360というマルウェア検知アプリが自動で動いているため、マルウェアの駆除を行っているのがわかりました。

それが、先程話したWordPressの公式テーマです。

まずは、この原因の明らかなテーマを削除していきます。

その後に、WordPressでマルウェアチェックが出来るWordfenceプラグインを使ってスキャンをします。

このときスキャンの設定を標準ではなく、高感度に設定を変更してサイト全体をチェックします。

すると、imunify360が削除したと思われるマルウェアの残骸のようなディレクトリが検知されたためそれも削除しました。

また、Wordfenceはサポートされていないプラグインやセキュリティリスクが有るプラグインの停止や更新もスキャンのときに警告してくれるため、該当のプラグインは一旦は削除しました。

WordPressの最新化

マルウェアの削除対応が完了したら、次にすべてのサイトアップデートをします。

WordPressのアップデートに伴ってプラグインの更新が新たにでるので、プラグインも再度更新します。

All-In-One Security– Security and Firewallの設定

WordPressが最新版になったところで、セキュリティ対応を行います。

私がおすすめしているのはAll-In-One Security– Security and Firewallです。

古い記事ではありますが、やり方は殆ど変わらないので参考にしていただければ幸いです。

この記事ではGoogle reCAPTCHAを利用していますが、今回はCloudflareのTurnstileというスパムbot対策を利用しました。

Turnstileはログインフォーム、コメントフォーム、パスワードリセットフォームに導入しました。

Turnstileを使った理由は、Google reCAPTCHAよりもBot対策に対しては優秀だと思っています。自分のサイトの実際Pythonを使った自動試験でログインを試みようとすると、Turnstileは完全にブロックするので、経験上そう思っています。

お問い合わせフォームにTurnstileを導入

ログインにTurnstileを導入したのと同じように、お問い合わせフォームにもCloudflareのTurnstileを導入しました。

Contact form 7ではインテグレーションから簡単にTurnstileを導入できるようになっているので、おすすめです。

またTurnstileの場合、わざわざ手動でチェックしたり、画像を選択する必要がないのでreCAPTCHAのせいによるフォーム離脱を回避できます。

Cloudflareの導入

Cloudflare

そして今回、マルウェア対策やセキュリティ対策だけでは、それこそマイナスを0にするという、あまりポジティブなお金のかたではないと思い、Cloudflareの導入をご提案しました。

Cloudflareはセキュリティ対策としても有効で、WordPressのサイトに辿り着く前の段階である程度攻撃的なアクセスから防御することができます。

WAFというアプリケーションファイアウォールという機能です。これにより、より強固なセキュリティ対策ができます。

また、CloudflareはCDNというキャッシュする機能があり、ページ表示速度対策として利用される方も多いです。

そういう意味では、スピード対策もできて且つセキュリティ対策もできるというこれから長い目でみて、間違いなく利用したほうが良いサービスなので、このCloudflareの導入も対応させていただきました。

ちなみにCloudflare自体は無料で利用でき、無料でも十分な機能を使えるため、基本的にどの方も導入をおすすめしています。

ホスティングへの連絡

すべての対応が終わったところで、ホスティングへの現状と対応についてこと細かく報告をしました。

1時間以内に、お返事をいただき、1時間1通という条件付きでメール機能の再開させていただくことになりました。

ただこの1時間辺り1通というのは、経過措置ですので、完全に使えるまでは不正アクセスによるメール送信がないことが、一定期間必要とのことでした。

まとめ:WordPress利用者に伝えたいこと

これらの対策をみて、いかがでしたでしょうか?

最悪なんとかなりそうって思いましたか?

実のところ、まだマルウェアが完全になくなった、とは言い切れません。

一度でもハッキングされてバックドアを仕掛けられてしまうと、いたちごっこのように延々と攻撃を受けることもあります。(実際過去にそういった対応もしたことがあります)

つまり、一度でもハッキングされてしまうと、ずっと再発を心配し続けなければいけないことになります。

だから、一度でもハッキングされてはいけないのです。

あなたの大事なWordPressがハッキングされないためには、必ず下記の対応をしてください。

  1. 自動更新設定をしていても必ず定期的にログインする プラグイン自体の開発が止まっている場合(CF7 add confirmなど)は更新されず、不具合や脆弱性の原因になる。
  2. 使わないテーマ・プラグインは「無効化」ではなく「削除」する: サーバーに残っているだけで攻撃の対象になる。
  3. 管理が面倒と感じるのであれば、保守を外注するもしくは別なCMSを使う:WordPressはAIが台頭した今でもまだまだ価値のある集客ツールですが、管理ができないのであれば外注か他のCMSを検討しましょう。
「うちのWordPressは大丈夫かな…?」
少しでも不安を感じたら、プロにお任せください。
  • 「自動更新にしているから」と長期間ログインしていないサイトがある
  • 過去にテストで作ったWordPressや、使っていないテーマ・プラグインを放置している
  • マルウェア感染の調査や、Cloudflareなどの高度なセキュリティ設定を丸投げしたい

記事でもお伝えした通り、表面的な不具合の裏にはサーバー全体を巻き込む重大なセキュリティ事故が潜んでいることがあります。一度ハッキングされると、その復旧とサーバー会社への対応には多大な時間と専門知識が必要です。

TEDASKでは、マルウェアの調査・完全駆除から、再発防止のためのCloudflare(WAF)導入、日々の安全な保守管理まで、あなたのWEB技術パートナーとして徹底的にサポートします。
「自社のサイトが安全か一度チェックしてほしい」「面倒な保守管理から解放されて本業に集中したい」という方は、手遅れになる前にぜひご相談ください!

この記事を書いた人
Toshi Seito

TEDASK代表
WordPressに関する相談実績のべ600件以上!WordPressの高度なカスタマイズから、海外製の高機能WordPressテーマの導入支援、LaravelによるWEBサービス制作はお任せ下さい。

Toshi Seitoをフォローする