前回の『webサイト脆弱性対策のポイントVol.3 〜脆弱性が見つかった場合の対応〜』では、脆弱性が見つかった場合の対応と、トラブルが発覚したときの対応についてご紹介しました。
今回は、webアプリの公開前や、運用が始まってからの定期メンテナンスなどでも利用できる『脆弱性対策のチェック項目』についてご紹介します。下記の脆弱性のチェック項目が満たせていない場合には、改修の検討が必要になります。
脆弱性対策のチェックを行う箇所
まず、以下の図をご覧ください。ほとんどのwebサイトは、下記の図で示したような構成になっており、チェック項目もいくつかのポイントによって分かれています。
ここでは、webアプリケーションとwebサーバーのチェック項目についてご紹介します。
webアプリケーションの脆弱性対策チェック項目
この中でもっとも対応がしやすい『webアプリケーション』における脆弱性対策のチェック項目から見てみましょう。
公開するべきではないファイルは別で保管する
設定ファイルや個人情報など、重要な情報が記載されたファイルが、公開するファイルと一緒に保管されてはいませんか?これらの情報はweb上に公開するべきではありません。公開するファイルとは別で保管し、インターネット上からアクセスできないように設定しておく必要があります。不要なファイルに関しても、思わぬトラブルを招く原因になるため、削除して起きましょう。
また、公開するべきではないファイルを誤って公開してしまったことがある場合、単に非公開にするだけでは検索エンジンのキャッシュに残り、外部のユーザーに見られてしまうことがあります。
この場合、非公開にしたファイルを検索エンジンで検索してみて、キャッシュに残っている場合には、運営会社に対してキャッシュの削除を依頼するか、専門の業者に削除を依頼する必要が出てきます。
不要なページやサイトを公開しない
テストで公開したページや、期間限定で公開されていたページ、ステージング環境で構築したサイトなど、不要なwebページやwebサイトを公開しておくと、うっかり脆弱性対策がもれてしまったり、外部からの攻撃やトラブルの発見が遅れる原因になります。
現在は不要なページや、管理ができていないwebサイトがないか確認をし、不要な場合には非公開にするか閉鎖するようにしましょう。
脆弱性対策を意識したwebサイトが構築できている
webサイトへの攻撃にはいくつかのパターンがあります。それらがwebサイトの機能上できちんと対策されていることで、トラブルへのリスクは大きく減らすことができます。以下の箇所をチェックしてみてください。
・SQLインジェクション
・OSコマンド・インジェクション
・パス名パラメータの未チェック/ディレクトリ・トラバーサル
・セッション管理の不備
・クロスサイト・スクリプティング
・クロスサイト・リクエスト・フォージェリ
・HTTPヘッダ・インジェクション
・メールヘッダ・インジェクション
・クリックジャッキング
・バッファオーバーフロー
・アクセス制御や認可制御の欠落
※脆弱性の種類と主な被害については『webアプリケーション/webサイトの脆弱性診断(セキュリティ診断)について』で紹介しております。
webアプリケーションを構成しているソフトウェアの脆弱性対策
webアプリケーションは様々なソフトウェアやフレームワークで構成されています。それらに脆弱性が発見された場合、バージョンアップする等の対策が必要なため、自社のwebサイトがどのようなソフトウェアやフレームワークを使用し、どのような構成で作られているかを把握して、脆弱性対策を行う必要があります。
エラーメッセージは適切か?
webアプリケーションのエラーメッセージにはさまざまな情報が記載されています。これによりwebサイトの設定情報などが外部から見える状態になってしまい、脆弱性となってしまう場合があります。エラーメッセージのほとんどは開発の際に必要なもので、webサイトの利用者には不要なものです。外部に余計な情報を漏らさないためにも、エラーメッセージの内容はきちんと管理しておきましょう。
webアプリケーションのログを確認する
webサイトの運用に限らず、ログはトラブルや不正アクセス等の原因を追究するための重要な情報ソースとなります。不審な動きがあった際にすぐに確認できるように、必要なログは全て保管し、定期的に内容を確認することでトラブルの早期発見にもつながります。
webサーバーの脆弱性対策チェック項目
次に、webアプリケーションが構築されているwebサーバーにおける脆弱性対策のチェック項目を見てみましょう。
OSやソフトウェア、ミドルウェアのバージョンをアップする
webサーバーで使用しているOSやソフトウェア、ミドルウェアのバージョンをアップすることは、脆弱性対策の基本です。マイナーチェンジのバージョンアップの多くが、動作の不具合やセキュリティの問題を改修するものになっており、逆に言えば攻撃者たちはそうした脆弱性を突いてくるという証明でもあります。
しかし、バージョンをアップする際には注意も必要です。OSやソフトウェア、ミドルウェアのバージョンアップした場合、それまで動作していたアプリケーションが正常に動作しなくなる場合があります。
不要なサービスやアプリケーションが導入されている
構築の際に使用して運用段階では不要になったアプリケーションや、過去に利用していたが現在では利用しなくなったサービスなどが残っていると、悪用されることがあるので削除しましょう。担当者が変わるタイミングなどは特に見落としがちなので注意が必要です。
不要なアカウントが登録されている
webサーバーやwebサーバーを管理するソフトウェアや端末に不要なアカウントが登録されている場合、悪用される可能性が高くなります。開発時やテスト等で使用したアカウントが残っていることがよくあるので、アカウントはしっかりと管理されている状態にしておきましょう。
安全なパスワードを使用している
簡単で推測しやすいパスワードを使用している場合、アカウントが乗っ取られ悪用される可能性が高くなります。パスワードによる脆弱性対策は、システムによるものと、パスワードそのものによる2つがあります。
システムによるパスワードの脆弱性対策
・シャドウパスワードの導入
・パスワード有効期限の設定
・ワンタイムパスワード
・通信経路の暗号化
・アカウント作成時に付与したパスワードを変更させる
パスワードそのものの脆弱性対策
・長くする:8文字以上で設定する
・複雑にする:文字、数字、記号などを組み合わせる
・変更する:3ヶ月ごとに新しいパスワードを設定し直す
・同じものを使用しない:すべてのアカウントで同じパスワードを使用しない
適切なアクセス制御をおこなっている
webアプリケーションと同様に、webサーバ上のファイルやディレクトリに適切なアクセス制御が設定されていない場合、外部のユーザーに公開するべきではないファイルが見えてしまったり、プログラムが不正に利用されたりしてしまいます。
webサーバーのログを確認する
こちらもwebアプリケーションと同様に必要なログは全て保管し、トラブルや不正アクセス等があったときに原因を追究ができ、定期的に内容を確認することでトラブルの早期発見にもつながります。
まとめ
このように、webサイトの脆弱性対策にはさまざまなチェック項目があります。上記のチェック項目で満たせていない部分がある場合には、改修を検討してください。
■脆弱性診断(セキュリティ診断)はお任せください
弊社が提供する「セキュリティ診断サービス」は、高い技術レベルの専門家が擬似攻撃を仕掛けるなど、貴社webアプリケーションやプラットフォーム、スマートフォンアプリ、データベース、システムの脆弱性やセキュリティにおける問題点を、 さまざまな観点・手法から診断するサービスです。詳しくはセキュリティ診断サービスをご覧ください。
■webサイト脆弱性対策に関するその他の関連記事
webサイト脆弱性対策のポイントVol.1 〜設計・開発段階〜
webサイト脆弱性対策のポイントVol.2 〜公開後・運用段階〜
webサイト脆弱性対策のポイントVol.3 〜脆弱性が見つかった場合の対応〜
webサイト脆弱性対策のポイントVol.4 〜脆弱性対策のチェック項目〜【本記事】
【参考URL】:
https://www.ipa.go.jp/files/000017316.pdf, (参照 2017年8月31日)