「WordPressをインストールしたら必ず行うべきx件の対策」に足りないかもしれないある対策

(初出:FLAMA技術ブログ 2015/9/20)
ググってよく出てくる項目はもう当然行われているという前提です。

WordPressにおいて「admin」ユーザーの削除は必須とされていますが、ある条件では、adminを消しても同じ危険性が残ります。しかもadminだけの問題ではありません。

今回の結論を3行で:

  • 「ブログ上の表示名」は必ず「ユーザー名」以外に変更するべき
  • 「著者名」が表示・RSSから削除されるか、ユーザーに変更できないようにすべき
  • セキュリティ対策プラグインは必ず入れるべき

・・・

そもそもログインIDとパスワードの組み合わせによって管理画面へのアクセスを制限する、というのは、攻撃者がログインIDとパスワードの組み合わせを解析しなくてはならないようにしているわけですよね。
ログインIDが攻撃者に知られてしまうことは、それ自体で一発アウトということではないにせよ、攻撃に必要な難易度が下がってしまうので、知られたくはないわけです。
攻撃者にとっての利益という面から考えると、自分たちの詐欺サイトやウイルス・マルウェアを仕込んだサイトへ誘導することは可能になるわけで、投稿者権限でも無意味ではないわけですね。

しかし、投稿者のログインIDこそ、攻撃者がわかるはずがないじゃないか、と言われるかもしれません。
ところが。

「ユーザー」>「プロフィール」に「ブログ上の表示名」という項目があります。(”Display name” という項目ですね)
この項目は、「ニックネーム」または「名」「姓」が入力されている場合に、それらに変更することが可能です。
これは基本的に記事内に「著者」として表示されます。
初期状態では「ユーザー名」つまりログインIDになっていますので、記事内にログインIDを表示してしまうということになるのです。
ただ、実際に記事内にユーザー名が表示されることはまず無いでしょう。自分の書いた記事を見れば、「著者名」としてニックネームや名前を設定する必要に(見た目の問題から)容易に気づくからです。

「ウチのは著者名を表示させてないから問題ない」という場合も結構ありそうですね。

しかし、この著者名は、RSSにも出力されているのです。ここが問題なわけです。

つまり攻撃者は、まず/feed/にアクセスしてRSSから著者名を抽出し、各記事の著者名がログインIDであると仮定してパスワード総当たり攻撃を行ないます。しかもRSSを使うのは攻撃手段として非常に単純に自動化できるので、手当たり次第にWordPressのサイトをあたっていけば、突破も非現実的なことではないでしょう。

またWordPressでは、このニックネームの変更が、ユーザーによって自由に変更可能になっています。つまり、管理者のコントロールが及ばないということです。
管理者がこの事態を確実に防ぐためには、表示・RSSから著者名にログインIDが表示されないようテーマなどを改変するか、ユーザーのプロフィール編集を防ぐプラグインを導入するなどの対処が必要だということになります。

現実問題として、多くのWordPressサイトでこの問題が発生しているのではないかと思います。
しかし、素のWordPressではこの問題は検知できないので、もしセキュリティ対策のプラグインなりアプリケーションなりが使用されていなければ、気づかずに放置されているはずです。
このことから、ログイン試行検知程度のプラグインでも最低限必ず導入すべきだと言えるでしょう。