2017/02/01、WordPressにかなり影響の大きな脆弱性があったことが発表されました。
仕事でWordPressを導入することになった場合、クライアントからセキュリティは大丈夫か?という質問をよく受けます。数ヶ月単位での更新の度に、「不具合を修正しました」や「脆弱性に対応しました」といった内容が含まれているので、当然と言えば当然ですね。でも、逆に言えば、世界中から常に脆弱性の有無をチェックされ続け、更新され続けているので、下手にスクラッチで作ったシステムよりよっぽどセキュリティは高い状態が維持されています。
そんな中、今回発表された脆弱性についてはかなり衝撃的な内容で、今後、クライアントの心理的なハードルがさらに上がってしまうことは間違いないでしょう。
では、今回の脆弱性がどれくらいヤバイのか、どのような影響があるかを説明していきます。
Contents
今回の脆弱性はどれぐらいヤバイのか?
WEBに関わる仕事をしていると、脆弱性の発表自体は日常茶飯事のように耳に入ってきます。聞きすぎて気にも留めなくなっている人も多いと思います。そんな中、今回の脆弱性については、様々なところから発表やアナウンスがあり、WordPressのここ数年で最大の脆弱性だと言われています。
脆弱性修正の発表のされ方が普通じゃない!?
1/26時点のリリースノートでは、影響の少ない3点だけが発表されていましたが、2/1になってから追加でセキュリティ対応を行なっていたことが発表されました(公式発表)。WordPressの自動更新などにより、1サイトでも多く脆弱性が修正された最新版になるように配慮された結果のようです。
その面影は、2/19現在でもWordPressの日米の公式サイトに残っています。
【英語版のリリースノート】
WordPress 4.7.2 Security Release
【日本語翻訳版のリリースノート】
英語サイトでは、4.7.2での更新は4種類になているのに対し、日本語翻訳サイトでは3種類になっています。
英語サイトの4件目が今回問題になっている脆弱性になります。
通常は最新版のリリースとともに更新内容が公開されるのですが、そうなると更新が遅いサイトが脆弱性を利用した攻撃の対象になってしまうことを懸念して、約1週間後に通知があったという気の使い方です。
そこまでしても脆弱性対応についての発表から約10日間で世界中で150万を超えるサイトが被害にあっているようです。
ホスティングサービスから連絡が入ってませんか?
さくらインターネットやバリュードメイン、CPIなど、レンタルサーバーのホスティング会社が、メールやHP上でユーザへの更新の呼びかけが行われています。
これまでにも数ヶ月単位でのWordPressの更新があり、そこに脆弱性対応を行ったような記述はされていることも多いのですが、直接関係のないホスティングサービスの会社がメール等による周知を手伝うくらいヤバイと思ってもらえれば良いです。
脆弱性を使ってどんな攻撃ができるのか?
今回の脆弱性は、REST APIがユーザ認証なしで呼び出せてしまうという問題です。
すごく簡単に言えば、「誰でも記事の内容を変更したり、投稿したりすることが可能」というような状態になってしまっていました。
公式発表は下記の通りです。
An unauthenticated privilege escalation vulnerability was discovered in a REST API endpoint. Reported by Marc-Alexandre Montpas of Sucuri Security.
「REST APIとは?」について、詳細は記述しませんが、プログラム同士の通信方法の仕様の1つです。
通常は、管理画面にログインして、投稿の画面から記事を作っていると思いますが、専用のアプリ等を作れば、APIに向けてデータを投稿することで、更新をしたり、外部のサイトで別のWordPressのデータを取得したりと、非常に便利な機能なので、将来活用したいと期待していました。
脆弱性による攻撃を防ぐには?
大きく分けて4つの方法があります。
- WordPressを最新版に更新する
- REST APIを停止する
- アクセス元を制限する
- セキュリティの高いサーバに移す
上2つは脆弱性があった部分を修正したり、無効にすることで完全に被害を防ぐことができます。
大幅なカスタマイズを入れている等の理由で、バージョンアップや設定変更が難しい場合の対策として、下2つのように、悪意のあるユーザからのアクセスをブロックしてしまうという方法もあります。
こちらは完全には防ぐことはできませんが、一定の効果はあります。例えば、一般向けに公開しているサイトの場合でも、海外からのアクセスを禁止するだけで、攻撃されるリスクが大きく下がります。セキュリティの高いサーバだと、前述の海外アクセスを防ぐ仕様以外にも、攻撃によく使われているIPアドレス等が記録されていて、自動的にアクセスを防ぐ仕組みが入っていたりします。
今回の脆弱性の影響を受けるバージョン
これまでの流れの中で記載している通り、対象となるバージョンは、4.7.0 と 4.7.1 です。
4.7.0からREST APIが有効化されてましたが、それ以前のバージョンについては、REST APIは使えない設定だったので、影響がないのです。
ただ、先取りして使える状態ではあったようなので、ご自身で有効化して使っていた人は最新版に更新しておいた方が無難だと思います。
WordPressの自動更新について
今回、最新版のリリースの発表が2017/01/26でしたが、私が管理しているサイトでは1/27付で自動更新しましたという通知が大量に届いていました。
開発中のサイトは、最新版の4.7.2への更新でしたが、リリース済みでメジャーアップデートを避けていたサイトでは、4.3.8など、それぞれのバージョンの中での最新に更新されていました。
こちらの記事で書いたように、WordPressのアップデートをOFFにする方法があります。仕事で使う場合は、自動更新やエンドユーザが勝手に更新してしまって、崩れたり止まったりするリスクを少しでも下げるために、OFFにすることもありますが、今回のような話があると自動更新は常に有効にしておきたいですね。
まとめ
WEB業界で働いている人なら、大小関わらず、今回のWordPressの脆弱性の話を目にしたり、耳にしたりしていると思います。
脆弱性対応についての発表は、簡単に再現されて、最新版へのアップデート前に攻撃されないように配慮してもらっていることは分かりましたが、それでも1週間程度しか時間をもらえません。
毎日、セキュリティに関するニュースを調べている余裕もないと思いますし、自動更新を有効にし、自動でできることは自動的に対応させるようにした方が良さそうですね。