応用情報技術者試験 過去問 2016年(平成28年) 春期 午後 問1

Webサイトを用いた書籍販売システムのセキュリティ

K社は技術書籍の大手出版社である。従来は全ての書籍を書店で販売していたが、顧客からの要望によって、高額書籍を自社のWebサイトでも販売することになった。K社システム部のL部長は、Webサイトを用いた書籍販売システム(以下、Webシステムという)の開発のためのプロジェクトチームを立ち上げ、開発課のM課長をリーダーに任命した。L部長は、情報セキュリティ確保のための対策として、サイバー攻撃によるWebシステムへの侵入を想定したテスト(以下、侵入テストという)を実施するようにM課長に指示した。M課長は、開発作業が結合テストまで完了した段階で、Webシステムのテスト環境を利用して侵入テストを実施することにした。

[Webシステムのテスト環境]

Webシステムは、高額書籍を購入する顧客の氏名、住所、購入履歴などの個人情報(以下、顧客情報という)を内部ネットワーク上のデータベースサーバ(以下、DBサーバという)に保存し、WebサーバがDBサーバ、業務サーバにアクセスして販売処理を行う。Webシステムのテスト環境の構成を図1に示す。

Webシステムのテスト環境の構成図
図1 Webシステムのテスト環境の構成

[Webシステムの認証と通信]

顧客がWebシステムを利用する際、利用者IDとパスワードで認証する。また、顧客との通信には、インターネット標準として利用されているaによる暗号化通信を用いる。

サーバ管理者は、各サーバやファイアウォールのログを定期的にチェックすることによって、Webシステムにおける不正なアプリケーションの稼働を監視する。

[侵入テストの実施]

M課長は、社外のセキュリティコンサルタントのN氏に侵入テストの実施を依頼した。N氏は、表1に示す侵入テストのテスト項目を作成し、M課長に提出した。

表1 テスト項目(抜粋)
項番 内容
1 攻撃者が、Webサーバの構成情報の調査結果からWebシステムの脆弱性を確認することが可能か。
2 Webシステムへの攻撃によって、Webシステム内に侵入した後、Webサーバの管理者権限の奪取が可能か。
3 Webアプリケーションの脆弱性を意図的に利用した攻撃が可能か。

[結果]

N氏は、テスト項目に沿って侵入テストを実施し、その結果と改善項目をM課長に報告した。テスト結果と改善項目を表2に示す。

表2 テスト結果と改善項目(抜粋)
項番 テスト結果 改善項目
1 Webシステムのサービスに必要がないポートが、インターネットに公開されていた。また、ネットワークからWebサーバの構成情報を調査できた。 Webシステムのサービスに必要なポートだけをインターネットに公開する。Webサーバが攻撃の際の足がかりに応答しないようにする。
2 Webサーバの脆弱性を利用して、Webサーバをbにし、そこを中継点として内部ネットワークに侵入できた。 セキュリティ機器を導入して、Webサーバへの不正アクセスを防御し、脆弱性の存在自体が広く公表される前にそれを悪用するc攻撃のリスクを軽減する。ファイアウォールとサーバのログ管理を強化する。
3 Webアプリケーションを対象とした次の攻撃について、対処されていないので、Webアプリケーションを誤作動させることが可能であった。
・バッファオーバフロー
・SQLインジェクション
さらに、DBサーバに不正アクセスし、顧客情報の奪取や改ざんが可能であった。
開発課で開発したWebアプリケーションの脆弱性の原因となっているセキュリティホールを修正する。

[改善項目とその対策]

M課長とN氏は、Webシステムの侵入テストの結果と、セキュリティ上の改善項目について、表1と表2を基にしてL部長に報告した。

N氏: 現在のWebシステムには、サイバー攻撃に対して多くの脆弱性が存在します。

L部長: 項番1について説明してください。

N氏: 攻撃者は①Webサーバの構成情報の調査によって、攻撃するために有用な情報を得ることで、Webサーバの脆弱性を探ってきます。

L部長: どのような対策が有効ですか。

N氏: ②ポートスキャンについては、Webサーバやファイアウォールの設定で防止する必要があります。Webサーバの構成情報の調査については、Webサーバの設定情報を変更して、必要のない問合せに応答しないようにすることで対処します。

L部長: 項番2で、Webサーバについて改善項目がありますが、どのような対策が必要ですか。

N氏: ③Webサーバへの攻撃の疑いがあるアクセスを遮断するセキュリティ機器の導入が効果的です。保護する対象をWebアプリケーションに特化しており、Webサーバ上で使用するアプリケーションに潜む未知の脆弱性を突く攻撃を、プロトコルの異常などによって検知し、遮断できるようになります。

L部長: 項番3のバッファオーバフローとSQLインジェクションについては、どのような対策が必要ですか。

N氏: ソースコードをチェックするツールを使用して、Webアプリケーションの脆弱性を調査し、その結果に基づいたソースコードの修正が必要です。バッファオーバフローは、バッファにデータを保存する際にdを常にチェックすることで防ぐことができます。SQLインジェクションは、データをSQLに埋め込むところで、データの特殊文字を適切にeすることで防ぐことができます。

M課長: 改善項目に対応するようWebアプリケーションのソースコードを修正します。

N氏: Webシステムの構成にも問題点があります。攻撃者が、攻撃の発見を遅らせるために、Webシステム内でログを消去するおそれがあります。

L部長: 対策方法はありますか。

N氏: 各サーバやファイアウォールのログを集中して保存する専用のサーバを設置し、ログが消去されることを防ぎます。また、④ログをリアルタイムにチェックするツールを導入します。

N氏の指摘に基づいて、開発課がWebシステムを改修し、L部長はWebシステムの総合テストの実施を承認した。

  1. Webサーバの設定を変更し、不要なポートを閉じ、必要のない問合せへの応答を停止する
  2. WAF(Web Application Firewall)等のセキュリティ機器を導入し、未知の脆弱性を突く攻撃を検知・遮断する
  3. Webアプリケーションのソースコードを修正し、バッファオーバフローとSQLインジェクションの脆弱性を解消する
  4. ログを集中管理する専用サーバを設置し、リアルタイムチェックツールを導入する

[メール送付のリスク]

  • バッファオーバフローは、バッファにデータを保存する際にdを常にチェックすることで防ぐ
  • SQLインジェクションは、データの特殊文字を適切に処理することで防ぐ
  • データをSQLに埋め込むところで、データの特殊文字を適切にeすることが重要
出典:平成28年度 春期 応用情報技術者試験 午後 問1