Dyno

オープンソース CMS 利用時に必ず行うべきセキュリティ対策

「バグのないシステムはない」と言われたりしますが、 CMS の世界ではほぼ毎年有名なオープンソース CMS から非常に危険な脆弱性が見つかっています。 オープンソースの CMS がプロプライエタリの CMS に比べてセキュリティ面で必ずしも劣るわけではありませんが、オープンソース CMS はプロプライエタリの CMS よりも「自己責任」の度合いが強いというのは事実です。 「無料で使える」という目先のメリットに惹かれてオープンソース CMS を採用すると、思わぬセキュリティ問題の発生等でかえって高くつくこともあるので、オープンソース CMS を採用する際には相応のリスクマネジメントを行う必要があります。

今回はそんなオープンソース CMS を利用する際に必ず行うべきセキュリティ対策についてご説明します。

いちばんの対策は「専門家に任せる」

早速結論ですが、もしあなたがウェブの技術について詳しい自信が無いのであれば、 いちばんのセキュリティ対策はその道の専門家に任せること です。

理由は 2 つあります。

ひとつは、 ウェブや CMS の技術が複雑化していること です。 現在高いシェアを持つ有名なオープンソース CMS はそのほとんどが 2000 年代に誕生し 10 年以上の歴史を持っています。 年々見つかる新たな攻撃手法に対応するために、有名なオープンソース CMS は年々(それこそ日々)進化し続けてきました。 CMS の作りが比較的シンプルであった一昔前であれば非専門家の方でもその全容を把握できたかもしれませんが、現在主流の CMS は非専門家の方がかんたんに全容を把握できるほどシンプルなものではありません。 さまざまな攻撃手法と CMS のさまざまな側面を正しく理解して CMS を適切な形で利用するには、最低限でも本数冊分は読むぐらいの知識が必要となります(本質を理解するためには、書籍にして数千〜数万ページ分ぐらいの知識は必要です)。

もうひとつの理由は、 セキュリティ対策は一度やればおしまいではなく常に実践し続ける必要があること です。 仮にウェブや CMS の技術について理解できたとしても、それを実践し続けるには継続的に一定のエネルギーと時間を注ぐ必要があります。

例えば、次の一覧は、世界で圧倒的に多くのサイトで使われている CMS WordPress において 2017 年に行われたリリースの一覧です。

  • 2017/11: 4.9.1 セキュリティ・メンテナンスリリース
  • 2017/11: 4.9 “Tipton”
  • 2017/10: 4.8.3 セキュリティリリース
  • 2017/09: 4.8.2 セキュリティ・メンテナンスリリース
  • 2017/08: 4.8.1 メンテナンスリリース
  • 2017/06: 4.8 “Evans”
  • 2017/05: 4.7.5 セキュリティ・メンテナンスリリース
  • 2017/04: 4.7.4 メンテナンスリリース
  • 2017/03: 4.7.3 セキュリティ・メンテナンスリリース
  • 2017/01: 4.7.2 セキュリティリリース
  • 2017/01: 4.7.1 セキュリティ・メンテナンスリリース

出典: Releases — WordPress

2017 年の年内に行われた 11 回のリリースのうち 7 回はセキュリティ対策を含むものでした。 ポイントは、これは WordPress にかぎったことではないということです。 適切にメンテナンスがされているオープンソースの CMS はどれもこれと似た状況で、セキュリティリリースは定期あるいは不定期に必ず発生します (これを見て「 WordPress は危険ではないか」と考える方がいますが、逆です。むしろ、これだけリリースが多いのは活発に対策されている証であり、 WordPress は安全な方だと言えます)。 オープンソースの CMS を利用するということは、これらのリリースがないかをウォッチし続け、リリースが行われたら適時に(ときには真夜中の数時間以内に)対応していく必要があるということです。

趣味等で CMS の利用そのものが目的の場合はこれでもよいかもしれません。 しかし、上位のビジネスゴールがありそれを達成するための手段として CMS を利用したい場合には、これはあまり費用対効果のよい活動とはいえないでしょう。

これらの理由から、 CMS を利用する際に行うべきいちばんのセキュリティ対策はその道の専門家を雇うこと だと私は考えます。

ただし、「専門家が見つけられない」「専門家に頼める予算が取れない」「サイトにアクセスがほとんど無いのでリスクが十分小さい」「万が一のリスクがあっても受容できる」といった理由がある場合には、専門家に頼まず自社で CMS を導入するという選択肢もあるでしょう。 そういった何らかの理由で、専門家に頼まずに自社で CMS を活用する必要がある方に向けて、以下、オープンソースの CMS を利用する際に欠かしてはならないセキュリティ対策をご紹介します。

オープンソース CMS 利用時に必ず行うべきセキュリティ対策

最初の「構築時」とその後の「運用時」に分けてあげていきます。

構築時

  • a) 危うい CMS は避ける
  • b) 適切にセットアップする
  • c) CMS を不用意に改変しない
  • d) プラグインは信頼できる最小限のものだけ使う

a) 危うい CMS は避ける: 「オープンソース CMS 」にもさまざまなものがあります。何十万行ものコードで作られた WordPress のような巨大 CMS も、個人が作って GitHub に公開している数百行の CMS も、どちらも括りは「オープンソース CMS 」です。オープンソース CMS の中でも比較的安全なものとそうでないものがあるので、比較的安全なものを選ぶようにしましょう。見るべきポイントは「適切なセキュリティ対策が行われているか」「メンテナンスが活発に行われているか」です。

b) 適切にセットアップする: CMS によって生じるセキュリティ脆弱性の多くは、 CMS そのものではなく、利用者(制作会社含む)の知識不足や勘違いによる「間違った使い方」に原因があると言われています。「公式のセットアップガイドを隅々まで読む」「本番環境と同様の環境で事前にチェックする」といったことをして、適切にセットアップするようにしましょう。現在は https 化も無料でできる時代なので、 CMS を利用する場合サイトの https 化は 100% 必須です。

c) CMS を不用意に改変しない: オープンソースの CMS はライセンスで「改変して利用してもよいもの」とされていますが、 CMS は原則改変せずに利用するのが基本です。世の中の 99% 以上の CMS ユーザは CMS を改変せずに使用しています。改変してしまうと、思わぬ脆弱性を生んでしまったり将来のセキュリティアップデートを適用できなくなったりします。私はやむをえず改変することがありますが、それは開発者として「自分が何をやっているか」「どこに影響があるか」を 100% 完全に把握できている場合だけです。

d) プラグインは信頼できる最小限のものだけ使う: 人気のオープンソースの CMS は、「プラグイン」「パッケージ」「モジュール」等名前はさまざまですが、追加のプログラムで自由に機能拡張できるものが一般的です。ただ、プラグインは CMS 本体に比べると、開発者の技術力が低かったり、メンテナンス体制が不十分であったり、寿命が短かったり(メンテナンスが続かなかったり)する場合がよくあります。プラグイン作成者が意図したものであろうとなかろうと、プラグインにはセキュリティ脆弱性が入り込む余地が CMS 本体に比べて多いので、必要最小限の信頼できるプラグインだけを利用するようにしましょう。積極的に利用していなくても、プラグインのファイルが存在するだけで脆弱性を生むものもあるので、必要の無くなったプラグインはなるべく早く削除しましょう。

運用時

続いて運用時の対策です。

  • e) 定期的にバックアップを取る
  • f) 最新版に素早く更新する
  • g) 公式リリースをウォッチする
  • h) ユーザアカウントは必要最小限だけ作る
  • i) 安全度の高いパスワードを使う
  • j) 攻撃をしてくるアクセス元はブロックする

e) 定期的にバックアップを取る: CMS で構築したサイトは定期的にバックアップを取りましょう。車を運転するかぎり事故の可能性を 100% 排除することができないのと同じように、 CMS のセキュリティ対策も、いくら完璧にしようと思っても問題が発生する可能性はあります。万が一問題が起こったときの対策としてバックアップは強力なので、他の対策と並行でこれは必ず行うようにしましょう。多くのオープンソース CMS はデータベースを使用しているので、ファイル一式とあわせてデータベースのバックアップも行う必要があります。バックにアップに加えて、インシデントやトラブルが発生した際の標準フロー・マニュアル等も用意しておくとベターです。

f) 最新版に素早く更新する: 上で述べたとおり、オープンソースの CMS には定期・不定期に脆弱性対策のための更新版リリースが行われます。ほとんどの場合最新版がいちばん安全なので、新しいリリースがあればなるべく早く適用するのがよいでしょう。例えば、世界で 3 番目によく使われる CMS である Drupal (私がよく知る CMS です)の場合は、「日本時間の真夜中に公開されたリリースを数時間以内に適用しないと攻撃者によって任意のプログラムが実行されてサイトを乗っ取られるクリティカルな脆弱性」が 2018 年前半の間にすでに 2 回見つかっています。同様のことが他の CMS にも起こる可能性はあるので、いつでも最新版に対応できる体制が必要です。逆に、最新版が壊れていたり新たな脆弱性を含んでいたりする場合もあるので、「早ければ早いほどよい」とは必ずしも言えません。

g) 公式リリースをウォッチする: 最新版に素早く更新するためには「最新版がいつリリースされるのか」「リリースはどんな変更が含まれているのか」を知る必要があります。例えば、上の日本時間の深夜に新たなリリースが公開されるようなケースだと、事前にその情報を知らなければ、朝起きたときにはすでにサイトの情報が抜き取られていて間に合わないということが起こりえます。ですので、利用する CMS の公式なリリース情報、特にセキュリティ情報をウォッチする必要があります。プラグインを使用する場合はその情報もあわせてウォッチしなくてはなりません。公式リリースの他に信頼できる情報源があれば、その情報もあわせて収集するようにしましょう。

h) ユーザアカウントは必要最小限だけ作る: CMS では、管理画面等にアクセスできるユーザアカウントを好きなだけ追加できる形が一般的です。しかし、ユーザアカウントの数が増えるということはそれだけアカウント乗っ取りをされるリスクも増えるということなので、ユーザアカウントは必要な分だけ最小数作るようにしましょう。すでに作ったアカウントでも、しばらく使用しないようなものはログインができないように無効化するか、いったん削除するのがよいでしょう。

i) 安全度の高いパスワードを使う: これは他の項目とは異なり、システム管理者だけでなく CMS を利用するすべてのユーザが気をつけるべきポイントです。パスワードはなるべく安全度の高いものを使うようにしましょう。ユーザ名と同じパスワードや qwerty abc123 といったよくある文字の羅列のパターンは絶対に使ってはいけません。技術の進歩により認証システムが進化すると認証にパスワードを使わない未来が来る可能性はありますが、現時点ではパスワードは CMS の世界では最も一般的な方式です。パスワードはなるべく安全なものにしましょう。危険なパスワードは設定できない機能を提供するプラグイン等を使用するのもひとつです。

j) 攻撃をしてくるアクセス元はブロックする: ウェブに公開される CMS に対する攻撃の多くはウェブを通じて行われます。中国・ロシア・東欧諸国等が有名ですが、世界には CMS への攻撃を盛んに行っている国や地域があるので、もしそれらの国や地域がサイトのターゲットとして含まれていないのであれば、それらの国や地域からのアクセスを完全に遮断してしまうのもひとつです。それらの攻撃はたとえ有効なものではなくても、ウェブサーバのリソースを無駄に消費する要因にもなるので、不要なアクセス元はブロックしてしまうのがよいでしょう。例えば、日本語限定のサイトの場合は、日本国内からのアクセスのみを許可する形にするだけで、セキュリティレベルは大きく上がるでしょう。

まとめ

以上、オープンソース CMS 利用時に必ず行うべきセキュリティ対策でした。

この一覧をご覧いただくと、冒頭の「いちばんの対策は専門家に任せること」というのが現実感を持って感じていただけるのではないかと思います。 繰り返しになりますが、これらを自社で自信を持ってこなせる場合や専門家に任せるだけの予算が取れない場合、趣味での CMS 利用の場合は専門家に任せる必要はありません。 ただ、考えられるリスクの大きさを考えると、専門家に任せるというのはほとんどの場合で費用対効果の非常に高い選択肢になるのではないかと思います。

補足

最後にひとつ補足があります。

よく言われることですが、 CMS のセキュリティに関しては 「サイトが攻撃されて被害を受けても自分が被害を受けるだけだから、そこまで気にしなくてもいいよね」と思われることがありますが、これは大きな間違いです 。 クラッカーに乗っ取られたサイト及びサーバは、サイトに内の情報を漏洩させてしまうだけではありません。 乗っ取り後にサイトにアクセスした利用者の情報漏洩や、他サイトへの攻撃、スパムメールの大量送信等々さまざまな 2 次被害をもたらす可能性があります。

セキュリティ対策を十分に行わずに CMS を利用するということは、例えるなら、玄関前に鋭利な刃物を放置しているようなものです。 万が一それが犯罪に使われたときに「盗んだ人が悪いんです」と言い逃れしても「あなたにも管理責任があるよね」と言われるのが当然なのと同じく、 CMS をウェブに公開して利用する人にも一定の管理責任があります。

ですので、 CMS を使って構築したサイトについて適切なセキュリティメンテナンスができなくなったときは、たとえアクセスがほとんど無いサイトでも、非公開にする等の措置を取るようにしましょう

ぜひセキュリティ面に気をつけて快適に CMS を活用してください :)

参考

IPA (情報処理推進機構)によるウェブセキュリティ資料です。 CMS の管理者はこれらの資料に書かれていることを最低限理解しておく必要があるでしょう。 書かれてあることの意味がわからない場合は、読み飛ばさず必ず書籍やウェブで調べるようにしてください。

この方面での定番書籍といえば「安全なWebアプリケーションの作り方」です。 これは技術者向けに丁寧な解説がなされたウェブセキュリティ書籍です。 この書籍に書かれていることを知らない・理解できていない制作会社スタッフの方はたくさんいますが、 CMS 管理者や制作会社スタッフであれば必読の一冊です。