突然、見知らぬアカウントが作られた
先日、保守契約を結んでいないお客さまから相談を受けました。WordPressのサイトに、見覚えのないユーザーアカウントが勝手に作られているというものです。権限はいちばん低い「購読者」でした。
結論から言うと、原因は不正侵入ではありませんでした。WordPressの「だれでもユーザー登録ができるようにする」という設定にチェックが入っていて、そこへ自動プログラム(ボット)が次々と登録していただけでした。
ただ、その結論にたどり着くまでに紆余曲折がありました。この記事では、その遠回りも含めて対応の経緯を書いておきます。同じ現象に出会った方が、最初の一手を間違えないための材料になればと思います。
最初の対応と再発
知らないアカウントが増えていると聞けば、まず乗っ取りを疑います。私もそうでした。
取り急ぎ、不明なユーザーを削除しました。そのうえで、10日前のファイルとデータベースをバックアップから復元しました。しばらくは何も起きず、これで落ち着いたと思っていました。
ところが数日後、またユーザーが作られていました。同じ処理をもう一度行いましたが、ここで立ち止まりました。復元しても再発するということは、原因がまだサイトの中、あるいは設定の中に残っているということです。同じことを繰り返しても終わりません。
スパム登録か、侵入か
見知らぬユーザーが増える原因は、大きく二つに分かれます。どちらなのかで、その後の対応がまったく変わります。
| 原因 | 状況 | 深刻度 |
|---|---|---|
| スパム登録 | ユーザー登録が誰にでも開かれていて、ボットが登録している | 低い(設定変更で止まる) |
| 侵入 | 登録を閉じているのに作られる。プラグインの脆弱性を突かれたか、不正なプログラムが仕込まれている | 高い(調査と駆除が必要) |
前者なら、設定を一つ変えるだけで済みます。後者なら、どこから入られたのかを調べ、改ざんされたファイルを取り除き、パスワードを変更するところまで必要です。
ですから、最初に確認すべきは「そもそもユーザー登録が開かれているかどうか」です。数分で確認できるので、復元より先にここを見るべきでした。
原因はメンバーシップ設定のチェック
管理画面の「設定」→「一般」にある「メンバーシップ」を確認すると、「だれでもユーザー登録ができるようにする」にチェックが入っていました。新規ユーザーの初期権限は「購読者」です。作られていたアカウントの権限とも一致します。
この設定は、WordPressの初期状態ではオフになっています。つまり、どこかの時点で誰かがオンにしたことになります。このサイトには以前WooCommerce(ネットショップ機能のプラグイン)が入っていたので、ショップの会員登録のために必要だと考えてチェックしたのかもしれません。経緯ははっきりしませんが、意図せず残っていた設定と考えるのが自然です。
なお、WooCommerceの会員登録はWordPress本体のこの設定とは別に、WooCommerce側の設定で管理されています。WooCommerce経由で作られたユーザーの権限は「顧客」になるので、作られたユーザーの権限名を見れば、どちらの経路かを見分けられます。
チェックを外せば、WordPress本体の登録画面からは誰も登録できなくなります。
振り返り
復元では原因は取り除けない
バックアップからの復元は、サイトを過去の状態に戻すだけです。設定ミスも、脆弱なプラグインも、仕込まれた不正なプログラムも、その時点ですでにあれば一緒に戻ってきます。今回も、10日前の時点ですでにチェックは入っていました。再発して当然でした。
復元には代償がある
データベースを10日前に戻すと、その間の問い合わせや記事の更新など、正規のデータも失われます。原因がわからないまま復元を繰り返すのは、損失だけを積み重ねることになりかねません。
削除する前に記録を残す
不審なユーザーをすぐ消したくなる気持ちはわかります。ただ、作成日時やメールアドレスを控えずに消すと、原因を調べる手がかりもなくなります。作成日時がわかれば、その時刻のアクセスログから登録の経路をたどれます。
購読者でも放置はしない
購読者はほとんど何もできない権限です。それでも、プラグインの脆弱性には「購読者以上でログインしていれば悪用できる」ものが少なくありません。スパムで作られたアカウントが、攻撃の足がかりになることもあります。
同じ現象が起きたときの確認手順
サイトの担当者の方が自分で確認できる順に並べました。
- 不審なユーザーの権限、作成日時、メールアドレスを控える。削除はこの後にします。
- 「設定」→「一般」→「メンバーシップ」で、「だれでもユーザー登録ができるようにする」にチェックが入っていないか確認する。
- 同じ画面で「新規ユーザーのデフォルト権限グループ」が「購読者」になっているか確認する。「管理者」や「編集者」になっていたら、改ざんの疑いが強いので専門家に相談してください。
- 登録機能が不要ならチェックを外す。会員機能などで必要な場合は、外さずにreCAPTCHAなどのボット対策を追加する。
- 「ユーザー」一覧で、見覚えのない管理者がいないか確認する。
- WordPress本体、プラグイン、テーマを最新にし、使っていないプラグインは削除する。
- チェックを外した後も新しいユーザーが作られる場合は、侵入を疑う。復元の前に、専門家に調査を依頼してください。
おわりに
今回の件で伝えたいことは、トラブルが起きたときは「元に戻す」より先に「原因を確かめる」ということです。
見知らぬユーザーが増えると、つい最悪の事態を想像して、急いで手を打ちたくなります。私も20年以上この仕事をしていながら、最初の一手は復元でした。結果は、設定のチェック一つだったわけです。
原因がわかれば、対応は小さく済みます。わからないまま手を打つと、手間も損失も大きくなります。WordPressを自社で運用している方は、一度メンバーシップの設定を確認してみてください。
