重要なのはWeb脆弱性診断?Webサイト初心者が知っておきたいセキュリティの話

 2017.04.06 Secure Enterpriseポータル

Webサイトには様々な脆弱性が潜んでいます。データベースを不正に操作するもの、運営者が意図していないコードを実行させるもの、ユーザーのクッキー情報を盗んでしまうものなど多岐に渡ります。

こうした脆弱性は、Webサイトの製作段階ですべて診断、検出した上で排除することが理想です。しかし現実として、製作段階で脆弱性を排除することは非常に困難です。

かと言って脆弱性をそのまま放置するわけにはいかないので、運用でカバーする必要があります。

今回は、新たにWebサイトを運営する企業や、初めてWeb担当者になった方に向け、Webサイトのセキュリティについて解説していきます。

Web制作でなぜ脆弱性が発生してしまうのか?

そもそも「脆弱性」とは、Webサイト制作段階において発生した設計上の欠陥であり、それがセキュリティ性を低下させる原因となっているものです。つまり設計時のバグの見落としで発生するので、単純な考えで言えば慎重なアプリケーション設計で脆弱性を無くすことができます。

しかし、Webサイト制作の現場は開発コストと開発期間に大きく左右され、脆弱性をすべて排除できないケースが多いのです。

依頼側はできる限り開発コストを抑え短期納期を希望するため、十分な診断時間を得ることができません。このため脆弱性をそのままにしてWebサイトが公開されることが多いのです。また、制作側でも価格競争により制作費用の低コスト化を目指すので、検証時間を削って納入する場合が少なくありません。

このため依頼側としては、Webサイトを公開してから脆弱性が発見される可能性を想定しておかなければなりません。

脆弱性が発生するとどうなるか

脆弱性の発生、厳密には表面化した場合企業はどのようなリスクが生じるのか。第一に、個人情報など重大なサイバー攻撃事件の危険性が増します。

頻繁に報道される情報漏えい事件の中には、Webサイトへのサイバー攻撃を起因として派生したものも少なくありません。また、セキュリティ性が甘い企業のWebサイトから内部ネットワークへと侵入し、大手企業へサイバー攻撃を仕掛けるための踏み台にする攻撃も存在します。

脆弱性を突かれ一度サイバー攻撃事件が起きれば、企業の信頼性はもちろん、多くの資源を失うことになるのです。

脆弱性を運用でカバーするために

アプリケーション開発を人の手で行っている以上、Webサイトの脆弱性は無くなることはありません。従って、今あるいは今後発生する脆弱性に対し運用でカバーする必要があります。

ここではWeb運用におけるセキュリティについて、3つのポイントで紹介していきます。

脆弱性診断を定期的に行う

自社開発や開発依頼した場合を除き、全ての企業が既存のアプリケーションやソフトウェアを用いてWebサイトを制作します。この場合、システムアップデートがベンダーから配信されたり、自動でアップデートされます。

もしも現時点で脆弱性が発生していない場合でも、アプリケーションを改修することで、新たな脆弱性が発生する可能性が高まります。

従って定期的な脆弱性診断は欠かせません。Webサイトへの脆弱性の有無を把握することは、安心安全なWebサイト運用への第一歩です。

また、自社開発の場合も経過と共に脆弱性が顕在化する可能性があります。念のため定期的な脆弱性診断を行い、Webサイトの安全性を確認することも重要です。

各脆弱性への対処を迅速に行う

脆弱性を放置するということは、多方面から実行されるサイバー攻撃に対し、まったくの無防備な状態で挑むようなものです。従って、脆弱性を発見した場合は優先次項として、迅速に対処する必要があります。

各脆弱性への具体的な対策ににいては後述します。

WAF導入でWebサイトを保護する

Webサイトの安全性は、脆弱性対策のみで築かれるものではありません。対策を万全に行っていたとしても、サイバー攻撃の被害に遭う可能性はあるのです。

例えば今まで認知されていなかった未知のサイバー攻撃により、情報漏えいなどを許してしまうこともあります。

そこでWAF(ウェブアプリケーションファイアウォール)の導入が有効的です。

WAFはファイアウォールの一種ではありますが、保護する領域が大きく異なります。従来のファイアウォール製品ではシステムレイヤーのアプリケーション層を保護することはできず、正常通信だと偽り攻撃を実行するような通信を防御することはできないのです。

一方WAFはWebサイトとアプリケーションの間に介在し、そこを通るIPアドレスなどを監視した上で不正通信をブロックします。つまり、Webサイトを狙ったサイバー攻撃を総合的に防御できるのは、数あるセキュリティソリューションの中でもWAFのみなのです。

各攻撃に対する具体的な対策

ではここで、Webサイトを対象に実行されるサイバー攻撃の簡単な解説と、具体的な対策について紹介します。

クロスサイトスクリプティング

クロスサイトスクリプティングとは、Webサイトに悪意のあるコードを入力することで、運営者が意図しないスクリプトを実行させるサイバー攻撃です。ユーザーが不正ページに誘導されたり、偽装した入力フォームで個人情報を盗まれてしまう可能性があります。

対策としては検索エンジンや入力フォームなどデータを入力する画面において、htmlspecialchars()やhtmlentities()といった関数でHTMLエスケープしてから表示することが重要です。

SQLインジェクション

SQLインジェクションは数あるサイバー攻撃の中でも危険性が高く、多くのWebサイトが脆弱性を抱えています。データベースを操作する基本的な言語はSQLであり、Webサイトの入力フォームにおいて不正SQL文字列を入力することでデータベースを不正に操作されてしまいます。

SQLインジェクションを防御するためには、MySQLならばmysqli::real_escape_stringを使用したり、プリペアドステートメント(http://qiita.com/tabo_purify/items/d1166236f3b03c7be60d)を使用して脆弱性をカバーします。

セッションハイジャック

セッションハイジャックとは、ユーザーが持つクッキー情報などを盗んだ上で、ユーザーのセッションを乗っ取るというサイバー攻撃です。本来ブロックするはずのユーザーから不正ログインを許してしまったり、それを悪用される可能性があります。

対策としてはクッキー情報の保存期間を設けたり、ワンタイムセッションと言ってリクエストごとに変数値を変えるといった対策が重要です。

まとめ

いかがでしょうか?Webサイト制作を依頼している場合、脆弱性への対策は再度制作会社へと改修を依頼する必要があります。これでは脆弱性が発生する度改修コストがかかり、かつ完璧に対策を取ることができません。

従って、前述したWAFを導入することが有効的です。WAFを導入すれば、脆弱性に関係ない未知のサイバー攻撃へも対応することができます。

しかし、WAFは設定や運用が難しく、導入に躊躇してしまう企業も多いでしょう。

シマンテック クラウド型WAFは、クラウドサービスとして提供しているため面倒な設定や運用が不要です。企業は低コストかつ迅速にWAF環境を構築することができるので、ぜひご検討ください。