SI CAPTCHA Anti-Spam、Captchaに問題発覚のため代わりの画像認証プラグインに変更
これまで、WordPressへのログイン時に画像認証機能をつけられるプラグインとしてSI CAPTCHA Anti-Spamを使っていた。が、2017年の11月にSI CAPTCHA Anti-Spamスパムコードが入っていたことが発覚。この記事を書いている時点では、WordPressの管理画面からは新規追加できないようになってしまった。
たまたまセキュリティに関して聞かれたときにログイン時の画像認証には「このプラグイン使ってますよ」と紹介したら、管理画面からプラグインを検索しても出でこなくて不思議に思っていたところ、まさかの問題発覚……。
で、代わりにどのプラグインにしようかと調べたら、Captchaというプラグインが見つかったが、なんとこれも問題発覚。バックドアが仕込まれていたとのこと。SI CAPTCHA Anti-Spamと同じく、この記事を書いている時点ではWordPressの管理画面から新規追加できない。
で、他は? と調べていたら予想外に手間取ってしまった。結論からいうと、「SiteGuard WP Plugin」を入れたのだが、今後の自分のためと同じように困っている人のためにその経緯をまとめておく。
検索して候補として検討したのは、次の5つ。
- Captcha
- Google Captcha (reCAPTCHA) by BestWebSoft
- Cerber Security & Antispam
- XO Security
- SiteGuard WP Plugin
なお、前提としてあるのは、SI CAPTCHA Anti-Spamの代替プラグインということで、単にログイン時に画像認証が出ればいいくらいで考えていたので、その視点で調べた結果ではある。
まずは、なぜ、SI CAPTCHA Anti-SpamとCaptchaは入れてはいけないのか? に関してから。
目次
SI CAPTCHA Anti-SpamとCaptchaは入れてはいけない
冒頭にも書いたとおり、SI CAPTCHA Anti-Spamはスパムコードが入れられたという問題が2017年の11月に発覚した。一応は修正されたようだが、続けて使いたいとはとても思えないので削除。具体的にどんな問題があってどんな被害があるのか? は後述する。**
で、SI CAPTCHA Anti-Spamの代わりになるプラグインを調べていたらCaptchaというプラグインを使うことにしたというケースがちらほらあった。
じゃあ、Captchaにするかと思ったものの、WordPressの管理画面から検索しても出てこない。調べてたらCaptchaも問題発覚で新規追加できなくなっていた……。こっちはバックドアだそうだ((バックドア:「裏口」を作られてそこから不正侵入されてしまう脆弱性)。
SI CAPTCHA Anti-Spamプラグインには具体的にどんな問題が?
SI CAPTCHA Anti-Spamには、スパムコードが仕込まれていたとのことで、WordPressの公式から締め出されたわけだが、jonkara.netというサイトを見たところ、Where did the plugin go?という元の作者による投稿が紹介されていた。
どうやら所有者が変わってからスパムコードが混入したようだ。
私はWordPress用のSI CAPTCHAの元の著者です。このプラグインには、2017年6月にWPユーザープロファイル名「fastsecure」を持つ新しい所有者がいました。新しい所有者は、自分が所有しているサードパーティのサーバーに接続し、給料日ローンなどのスパム広告をWPの投稿に配置する、新たに取得したWordPressプラグインのいくつかにコードを挿入しようとしました。
新しいオーナーは、スパムコードをバージョン3.0.1と3.0.2に入れましたが、コードをsecureimage.phpファイルに入れるため、スパムを表示できませんでした。悪質なコードでは、WordPressライブラリもロードして実行する必要がありました。スパムコードが何もしない理由は、secureimage.phpファイルがWordPressの実行時環境に含まれていないためです。 secureimage.phpファイルは、WordPressの実行時間外のHTML img srcから直接captchaイメージをロードする別のファイルsecurimage_show.phpに含まれています。このプラグインのスパムコードは決して有効にされませんでした。あなたの投稿を壊したり、WordPressデータベース内の何かを変更したりすることはありませんでした。
これが原因でご迷惑をおかけして申し訳ありません。私はこれが起こるとは決して考えなかった。このプラグインは、WordPressのスタッフがWordPressリポジトリから取り除いて、これを整理することができます。新しいバージョンが間もなく公開されるかもしれません。投稿者のステータスを復元できる可能性があります。その間、プラグインを無効にするかアンインストールすることをお勧めします。
マイクチャリス
これを読む限りは実害はなさそうな感はある。たとえそうであっても、使いたいと思う人はいなそうな気はするが。
Captchaプラグインには具体的にどんな問題が?
では、Captchaにはどんな問題があったのか?
こちらは、WordPressのCaptchaプラグインにバックドア発見、30万件以上のサイトに影響かによると、Captchaに関してはもともとBestWebSoftという会社が所有権を持っていたのだが、2017年9月5日から所有権が他の開発者に移ったそうだ。
その後にバックドアが仕込まれていたという問題が発覚したということで、どうも新たな所有者が余計なことをしたようだ。
SI CAPTCHA Anti-Spamは元作者の話を読む限りでは実害はなさそうだが、Captchaには具体的な実害が発生し得る。Captchaのバックドアによってプラグイン作成者や攻撃者が認証することなしに管理者としてWordPressにログインされてしまうようだ。
なので、WordPressのログイン画面の画像認証としてCaptchaを使ってしまっているなら、バージョンにもよるのだろうけど、基本は削除だろう。
プラグイン候補はこの4つ
調べればたくさんのプラグインが出てくると思う。検索していた中で候補として選んだのが次の4つ。4つにした理由は特になくて、単に調べていたら見つかっただけ。
- Google Captcha (reCAPTCHA) by BestWebSoft
- Cerber Security & Antispam
- XO Security
- SiteGuard WP Plugin
冒頭にも書いたとおり、最終的にはSiteGuard WP PluginをSI CAPTCHA Anti-Spamの代わりに選んだが、その経緯としてそれぞれ知ったことをまとめておく。
Google Captcha (reCAPTCHA) by BestWebSoft
こちらはこんな感じの画面を出して不正アタックを防ごうというプラグイン。名前にもあるとおり、BestWebSoftという会社が製作、管理している。
ちなみにバックドアが仕込まれていたCaptchaはもともとはBestWebSoftという会社が持っていたものだ。これだけの情報だと「BestWebSoftのつくったプラグインなんて怖くて使えないよね……」となりそうだが、そう単純ではない。
というのも、先ほども書いたとおり、BestWebSoftという会社からCaptchaの所有権が他の開発者に移ってから問題が発覚したからだ。実際のところはわからないけれども、BestWebSoftに非はないと思える。
ただ、Google Captcha (reCAPTCHA) by BestWebSoftというプラグインを使用する際にはGoogleと連携しなくてはならず、手間があったり関わるところが増えると不具合や変更があったときに面倒になりかねない、と思える。なので、候補からははずした。
Cerber Security & Antispam
特に問題となるようなことはないので、これでもいいかなとは思ったが、機能がたくさんあってそれが全部英語なのはちょっとネックだった。
英語でも構わないとは思うが、機能が多すぎて何をしていいかよく分からなくなりそうな気がしたので……。候補としては考えるけど、できればもっとシンプルなのか日本語で分かるのがいいという個人的な理由。
XO Security
こちらは日本人が個人で開発している画像認証ができるプラグイン。
こちらも特に問題となるようなことはないので、これでもいいかなとは思ったが、この記事を書いている時点では、まだ利用者数が少ないのと評価数も少ないのが気にはなる。また、個人開発ということで、どこまで継続するか分からないというのもあった(個人だから開発が止まるとは限らないが)。
ということで候補の1つだけれど、もし他があれば、という感じだった。
SiteGuard WP Plugin
SiteGuard WP Pluginは日本のJP-SecureというWebのセキュリティ関係の事業を展開している会社がつくっているプラグイン。
日本のセキュリティ関係企業が提供しているなら比較的安心できそうな気がするし、日本語も浸かるし、継続的にアップデートもしそうな感があった。この記事を書いた段階では評価数が7つだけで少ない感はあったが、使用数は10万を超えているというのも良さそうに思えるポイント(使用者数が多くてもダメなのはダメだけれど)。
ということで、インストールするかと思いきや、こちらのSiteGuard WP Pluginの留意点というQiitaのページで注意しないといけないポイントがあるよと書かれていた。
以前生成した古いファイルは新しい画像を生成する際にクリーンアップを掛けており、また、ファイルが削除対象になる条件(古いと判断される条件)は画像ファイルの更新日時 + 60分後です。
〜中略〜
そのため60分間ローカルマシン上での試行時間があり、siteguard_captcha(入力文字)とsiteguard_captcha_prefix(9桁数字)のセットを合わせてPOSTすれば古いファイルで認証が通せる可能性があります。
要は、ログインをトライした後、60分間はアタックできるチャンスがあって突破されてしまう可能性があるという話。
これを読んでやめようかと思ったのだが、よく見てみると、問題点を指摘されているバージョンから今はバージョンアップしており、変更履歴を見ると指摘箇所が変更されていたことが判明。
※ただし、具体的な修正内容は分からないので指摘された問題がなくなったかどうかは不明。phpのコードを見てもわからないので直ったとみなした。
こうした経緯を経て、ようやく「SiteGuard WP Plugin」に決めた。
SiteGuard WP Pluginでできること
WordPressへのログイン時に画像認証機能をつけることができる以外にも、次の機能がついている(バージョン1.4.1の話)。詳しくは公式サイトのSiteGuard WP Plugin Pageにて確認できる。
初期状態だとこちらの設定になっている。
なお、「ログインページ変更」というのは、通常のログインURLを変更できる機能。ログインURLが変わるのはセキュリティ上はいいけれども、下手をするとURLを忘れて「ログインできなくなった……」となりかねない。対処法は公式ページに書かれているけれども、その点は注意が必要かと思う。
また、wp-adminにアクセスされたら、ログインページに転送されるような設定になっていたらなんの意味もないので、合わせて設定が必要になるかと思う。そのためには公式サイトにあるように「管理者ページアクセス制限」という機能を併用するといい。
画像認証がオンになっていれば、こんな感じでログイン時に画像認証の画面が表示される。平仮名でなく、英数字を設定することも可能。
まとめ
ということで、もともと使っていたSI CAPTCHA Anti-Spamの代替プラグインとして以下の候補があったが、最終期には「SiteGuard WP Plugin」にした。
今後も何かしら問題は起こりそうな気がしてならないが、そうならないことを願うばかり。