こんにちは。
セカンドセレクションのYokoyamaです。
最近、Webアプリケーション開発をさせていただくことが多くなりました。その中で絶対に忘れてはいけない「セキュリティ・脆弱性」の話を今回はさせていただきます。
Webアプリケーション(例えば銀行サイトやECサイト等)はインターネット上に公開されており、常に脅威にさらされています。不正アクセスや情報漏洩、データ改ざんなどセキュリティ関連のニュースが後を絶ちません。どういった脅威があるのか、どう対策するのかといったWebセキュリティ対策についてご紹介いたします。
Webセキュリティ対策とは
インターネット上に公開されているWebアプリケーション(Webサイト)は世界中の人がアクセスでき、常に悪意ある人にさらされている状態です。Webセキュリティ対策とは、簡単に言ってしまうと「悪意ある人からのサイバー攻撃を防ぐこと」です。Webに関するすべての脅威から身を守るための対策を、一般的に「webセキュリティ」と呼びます。
日常生活で例えれば、マンションの防犯対策の様なものです。オートロックにより、許可されてない人は自由に入れない、または防犯カメラで出入りを監視するといったことです。
サイバー攻撃の種類
悪意ある人はどういった攻撃をし、実際にどういった被害がでるか、代表的なサイバー攻撃の手法をいくつかご紹介します。少し横文字が並びますが、いろいろ手口があるということを知ってください。
- SQLインジェクション攻撃
Webサイトの入力フォームなどに不正な文字列(SQL文)を入力し、Webアプリケーションが想定しないSQL文を実行させることにより、データベースを不正に操作する攻撃です。
セキュリティが十分ではない状態で攻撃を受けると、情報漏洩やデータ改ざんといった被害が発生します。 - OSコマンドインジェクション攻撃
Webサイトの入力フォームに不正な文字列(OSコマンド)を入力し、Webアプリケーションが想定しないOSに対するコマンドを実行させる攻撃です。SQLインジェクション攻撃と同様に、情報漏洩やデータ改ざんなどの被害が発生します。 - DoS/DDoS攻撃
Webアプリケーションに対して大量のアクセスを行い、Webサーバーのリソース(メモリ、CPU、ディスクなど)を使用させる攻撃です。この攻撃によってWebサーバーが負荷に耐えられなくなるとサーバーがダウンしてしまいます。ショッピングサイトのプライスダウンキャンペーン開始時などに、アクセスが集中し、つながりにくくなる、つながらなくなるといった現象を経験されて方も多くいらっしゃると思います、それを意図的に起こさせる攻撃です。 - クロスサイトスクリプティング攻撃
掲示板やTwitterなど、他者が書き込みを閲覧できるサイトに、スクリプト付きのリンクを投稿し、閲覧者にクリックさせます。悪意あるリンクと知らずクリックするとスクリプトが実行され、データを抜き取とられたり、他のサイトに遷移させマルウェア感染などをさせる攻撃です。 - データ改ざん
前述のSQLインジェクション攻撃、OSコマンドインジェクション攻撃などもデータ改ざん可能な攻撃ですが、ここでご紹介するデータ改ざんは、通信の傍受、改ざん、再送という攻撃です。入力フォームで入力した内容は「送信」ボタンクリックなどで、ブラウザからWebアプリケーションへ送信され、Webアプリケーションは受信したデータを処理します。この通信を傍受し、データを改ざん・再送するのがこの攻撃です。
データ改ざんの具体例
5に関して、もう少し詳しく説明いたします。
例えば、Webサイトの入力フォームで日付の欄は1月から12月までしか選択できないようになっていることが多いと思います。そういった日付入力フォームの送信を傍受し、「13月」といった存在しない月のデータに改ざんし再送されたのであれば、Webアプリケーション上でエラーチェックされ、入力エラーとして返されるでしょう。
しかし「どのデータを送信しているかという情報」を改ざんされるとどうでしょうか。
Aさんが送信したプロフィール変更の通信を傍受し、Bさんの送信データであるかのように改ざんされると、WebアプリケーションはBさんのデータが送られてきたと思い、Bさんのデータを変更してしまいます。このように本来アクセスできないデータを操作することもサイバー攻撃の手口です。
セキュリティ対策の方法
Webアプリケーションに関する代表的な防御手段としてWAF(Web Application Firewall)と呼ばれるものがあります。WAFはWebサーバーの前に設置された壁、セキュリティゲートです。
※以下🔓がWAFのイメージ
WAFの機能を簡単に説明すると、「通信データの中身をアプリケーションレベルで解析し、問題あればWebサーバー、Webアプリケーションまでデータを到達させず、送信元にエラーを返します」。様々なセキュリティ会社からWAFが販売されており、SQLインジェクション攻撃などいくつかの攻撃はWAFで防ぐことができます。
WAFも完璧ではありませんので、防げない攻撃もありますし、防げるとなっている攻撃でも攻撃者は穴を見つけ攻撃してきますので、Webアプリケーションでも対策は必要です。
セキュリティ対策の確認方法
では、対策を講じたとして、正しく対策できているかどう確認すればよいでしょうか。
実際に攻撃してみて、防げているか確認する必要がありますが、セキュリティに関して素人が確認し、問題なしとすることは問題です。年々、サイバー攻撃手法も増えてきておりそれだけ対策も難しくなってきています。
本格的に情報漏洩を防ぐ場合は、セキュリティに精通した会社がセキュリティテストを請け負っておりますので、そういったところに依頼することをお勧めします。自分でも確認してみたいというときに、無料で使用できるツールがありますので参考にご紹介いたします。
Burp Suite
Burp Suiteはローカルプロキシツールと呼ばれるもので、Webアプリケーションセキュリティ診断ではこういったプロキシツールを使用して作業を行います。プロキシツールを使うことで、ブラウザとWebアプリケーションの通信内容を確認することができます。
Burp Suiteにはセキュリティ診断のためのさまざまな機能があります。
先日弊社で使用した「proxy」と呼ばれる機能もそのひとつです。「proxy」は、ブラウザとWebアプリケーションの通信を閲覧したり書き換えたりできる機能です。
データ改ざんの例で挙げたような、Aさんのプロフィールの送信を、Bさんのプロフィールですよと改ざんし再送するようなことを擬似的に行って、正しく対策できているかどうかを確認します。
※Burp Suiteの使い方に関してはこちらをご覧ください。
OWASP ZAP
OWASP ZAPは無料のWebアプリケーション脆弱性診断ツールです。
OWASP ZAPの使い方としては下記のようなものがあります。
- 簡易スキャン
自動で画面をクロール(巡回)しセキュリティを診断します。 - 静的スキャン
手動で画面をクロールし、その通信を検査します。これにより次項の動的スキャンの診断対象のURLが登録されます。 - 動的スキャン
静的スキャンでクロールしたURL、通信データをもとに、攻撃データに書き換え、対策されているか診断します。
静的スキャンで診断したい画面を登録し、動的スキャンで攻撃を行うといった使い方が基本となります。
※OWASP ZAPの使い方に関してはこちらをご覧ください。
まとめ
Webアプリケーションにはセキュリティ対策が必須です。
そのためには、どういった攻撃があり、どんな対策があるのかを知ることが重要です。IPA(情報処理推進機構)やWebセキュリティ会社のHPなどでくわしく紹介されていますので、目を通してみてはいかがでしょうか。
Webアプリケーションの対策だけでなく、使用しているOS、ミドルウェア、ソフトウェアにも脆弱性は存在します。アップデート情報をチェックし、必要に応じてアップデートを行いましょう。何年も運用しているとサポートされなくなり、脆弱性が見つかってもアップデートされないこともありますので、その場合は、バージョンアップする必要があります。
Webアプリケーションは作って終わりではなく、運用・保守ということも重要です。
長文読んでいただきありがとうございました。2021年よりSSコラムを公開中です!
もしよろしければご覧ください。
・ソフトウェア保守性の高め方はこちら!
・ExcelをGitで管理する方法!