基本情報技術者 2015年 春期 午後 問01
インターネットを利用した受注管理システムのセキュリティに関する次の記述を読んで、設問1〜4に答えよ。
製造業のK社では、インターネットを利用した受注管理システムを開発している。受注管理システムは、取引先も利用するので、セキュリティ上の欠陥があった場合、自社だけでなく取引先にも損害を与える可能性がある。そこで、K社は、セキュリティ診断サービスを行っているZ社に、受注管理システムの脆弱性診断を依頼した。
〔受注管理システム〕
受注管理システムのアプリケーション(以下、受注管理アプリケーションという)は、Webサーバ上で稼働する。受注や出荷などの情報は、データベース(以下、DBという)サーバ上で稼働する受注情報DBに格納され、受注管理アプリケーションから、参照、更新される。取引先PCにダウンロードできるファイルや、取引先PCからアップロードされたファイルは、Webサーバに接続されているディスクに格納される。受注管理システムの構成を図1に示す。
RPSには、ディジタル証明書を設定しておく。受注管理システムを利用する取引先の担当者は、取引先PCのブラウザからRPSを経由して受注管理アプリケーションにアクセスし、ログイン画面で利用者IDとパスワードを入力してログインする。その際、取引先PCのブラウザからの通信には、HTTP over SSL/TLS(以下、HTTPSという)を使用する。RPSではディジタル証明書を使って、HTTPSからHTTPにプロトコルを変換する。
〔Z社の脆弱性診断の結果〕
受注管理アプリケーションには、想定していない操作をDBサーバに実行させて、DBに不正アクセスするようなaについては、対策がされている。しかし、Z社の脆弱性診断の結果、受注管理アプリケーションに対策が必要なセキュリティ上の脆弱性が複数指摘された。表1にZ社からの指摘事項(抜粋)を示す。
K社は、表1中の下線①及び②に対策を行った。さらに、Z社からのその他の指摘事項にも対策を行って、K社は、受注管理システムの運用を開始することにした。
設問1:
問題文を見る 図1中の通信経路を表2に示す1〜5とした場合、取引先PCからWebサーバにアクセスするときに、HTTPSが通信に使われる通信経路だけを全て示す正しい答えを、解答群の中から選べ。

解答群
ア:1
イ:1, 2, 3
ウ:1, 2, 3, 4
エ:1, 2, 3, 4, 5
オ:2, 3, 4
カ:2, 3, 4, 5
キ:3, 4
模範解答
イ
解説
解答の導き方
ポイントは、HTTPSがどこまで使われるかです。本文には「RPSではディジタル証明書を使って、HTTPSからHTTPにプロトコルを変換する」とあります。
HTTPS(HTTP over SSL/TLS:SSL/TLSで通信内容を暗号化するHTTP)は、取引先PCのブラウザとRPSとの間で使われます。RPS(Reverse Proxy Server:Webサーバの代わりに外部からの要求を受け取り、中継するサーバ)でHTTPSからHTTPに変わるため、RPSに到着するまでの経路がHTTPSです。
表2の経路を取引先PC側から順に見ると、次のようになります。
経路番号1〜3は、いずれもRPSに到着する前の通信です。そのためHTTPSが使われます。一方、経路番号4と5はRPSがHTTPに変換した後の通信なので、HTTPが使われます。
したがって、HTTPSが使われる経路は「1, 2, 3」に当たるイです。FW(Firewall:通信を通すか制限する装置)を通過しても、そこでプロトコルが変換されるわけではありません。HTTPSからHTTPへの変換点は、本文にあるとおりRPSです。
誤りやすいポイント
- 経路番号4と5もHTTPSだと考える
- 取引先PCからWebサーバまで、一続きでHTTPSが使われると思い込むと誤ります。本文では、RPSでHTTPに変換すると説明されています。
- 経路番号1だけを選ぶ
- HTTPSはインターネット上だけで使われるわけではありません。取引先PCからRPSに届くまでの間は、経路番号2と3でもHTTPSが使われます。
- FWを通ると通信方式が変わると考える
- FWの役割は通信を制限することです。この問題でプロトコルを変換するのはFWではなくRPSです。
FAQ
Q: HTTPSは、なぜRPSまで使われるのですか?
A: HTTPSによる通信は、取引先PCのブラウザとRPSとの間で行われるためです。FWを通過しても、RPSに到着するまではHTTPSのままです。
A: HTTPSによる通信は、取引先PCのブラウザとRPSとの間で行われるためです。FWを通過しても、RPSに到着するまではHTTPSのままです。
Q: ディジタル証明書は、HTTPをHTTPSに変換する装置ですか?
A: いいえ。ディジタル証明書は、通信相手の確認などに使う電子的な証明書です。この問題では、RPSがHTTPSを受け付け、HTTPに変換する構成になっています。
A: いいえ。ディジタル証明書は、通信相手の確認などに使う電子的な証明書です。この問題では、RPSがHTTPSを受け付け、HTTPに変換する構成になっています。
Q: RPSより後ろの通信も、必ずHTTPになるのですか?
A: この問題では、RPSでHTTPSからHTTPに変換すると説明されているため、RPSより後の経路はHTTPです。
A: この問題では、RPSでHTTPSからHTTPに変換すると説明されているため、RPSより後の経路はHTTPです。
関連キーワード: HTTPS、SSL/TLS、リバースプロキシ、ディジタル証明書、ファイアウォール
設問2:
問題文を見る 本文中のに入れる適切な答えを、解答群の中から選べ。
a, bに関する解答群
ア:DoS攻撃
イ:SQLインジェクション
ウ:クロスサイトスクリプティング
エ:辞書攻撃
オ:ディレクトリトラバーサル
カ:トラッシング
キ:ブルートフォース攻撃
ク:ポートスキャン
模範解答
a:イ、b:ウ
解説
解答の導き方
この設問では、本文の説明に合う攻撃名を、解答群から選びます。攻撃が「何を狙っているか」に注目すると区別できます。
まず、aの前後には、「想定していない操作をDBサーバに実行させて、DBに不正アクセスする」とあります。DB(Database:データを蓄積・管理する仕組み)に対して、攻撃者が入力した文字などで本来の指示を変え、不正な処理をさせる攻撃です。
DBへの指示には、SQL(Structured Query Language:データベースにデータの検索や変更などを指示する言語)が使われます。SQLの指示内容を不正に変えてDBを操作する攻撃は、SQLインジェクションです。したがって、aは「イ:SQLインジェクション」と判断できます。
次に、bの前後には、「Webページ内にスクリプトが埋め込まれ」て、取引先の担当者が別のWebサイトに誘導され、利用者IDとパスワードを奪われる可能性があるとあります。スクリプトは、ブラウザ上で動く小さなプログラムです。攻撃者がWebページにスクリプトを埋め込み、そのページを見た人のブラウザ上で実行させる攻撃が、クロスサイトスクリプティングです。英語ではCross-Site Scriptingといい、XSSと略されます。したがって、bは「ウ:クロスサイトスクリプティング」と判断できます。
誤りやすいポイント
- DBへの不正な操作と、Webページへのスクリプトの埋め込みを混同しないようにします。前者はSQLインジェクション、後者はクロスサイトスクリプティングです。
- 「任意のファイルをダウンロードできる」という問題は、ファイルの場所を不正に指定するディレクトリトラバーサルなどが関係する場合があります。しかし、aの手掛かりは「DBサーバに想定していない操作を実行させる」ことです。
- 利用者IDをロックしない問題は、パスワードを何度も推測する攻撃への対策に関係します。Webページにスクリプトを埋め込むbとは別の問題です。
FAQ
Q: SQLインジェクションとクロスサイトスクリプティングは、どちらも入力内容を悪用する攻撃ですか?
A: どちらも入力内容が関係する場合がありますが、狙う先が異なります。SQLインジェクションはDBへの指示を不正に変えます。クロスサイトスクリプティングはWebページにスクリプトを埋め込み、閲覧者のブラウザ上で動かします。
A: どちらも入力内容が関係する場合がありますが、狙う先が異なります。SQLインジェクションはDBへの指示を不正に変えます。クロスサイトスクリプティングはWebページにスクリプトを埋め込み、閲覧者のブラウザ上で動かします。
Q: パスワードを何度も間違えたときの利用者IDのロックは、何を防ぐためのものですか?
A: パスワードを繰り返し試す攻撃を防ぎやすくするためです。本文の②はこの対策に関係しますが、aやbの攻撃名を選ぶ手掛かりとは別です。
A: パスワードを繰り返し試す攻撃を防ぎやすくするためです。本文の②はこの対策に関係しますが、aやbの攻撃名を選ぶ手掛かりとは別です。
関連キーワード: SQLインジェクション、クロスサイトスクリプティング、ディレクトリトラバーサル、ブルートフォース攻撃、Webアプリケーション
設問3:
問題文を見る 表1中の下線①の対策として適切な答えを、解答群から選べ。
解答群
ア:ダウンロードしたいファイルを絶対パスで指定させ、該当ファイルが存在する場合には、ダウンロードの処理を行う。
イ:ダウンロードしたいファイルを相対パスで指定させ、該当ファイルが存在する場合には、ダウンロードの処理を行う。
ウ:ダウンロードしたいファイルのファイル名だけを指定させ、取引先ごとに決められたフォルダ内に該当ファイルが存在する場合には、ダウンロードの処理を行う。
エ:取引先PCのブラウザに、Webサーバ上の全てのフォルダ構成及びファイルを表示し、ダウンロードしたいファイルを指定させ、ダウンロードの処理を行う。
模範解答
ウ
解説
解答の導き方
この設問では、ファイルのダウンロード処理にどのような制限を設ければ、取引先の担当者がWebサーバ上の任意のファイルを取得できなくなるかを考えます。
-
表1には、「取引先の担当者がWebサーバ上の任意のファイルをダウンロード可能である」とあります。原因は、受注管理アプリケーションのファイルダウンロード処理に問題があることです。つまり、利用者が指定したファイルの場所を、アプリケーションが十分に制限していないと考えられます。
-
ファイルの場所を示す情報を「パス」といいます。ファイルの指定を利用者に任せると、本来アクセスできないフォルダのファイルまで指定されるおそれがあります。たとえば、上の階層へ移動する指定を悪用し、許可されたフォルダの外にあるファイルを探す攻撃があります。これは、ディレクトリトラバーサル(フォルダをたどる指定を悪用して、許可されていない場所へ移動する攻撃)と呼ばれます。
-
選択肢アのように絶対パスで指定させると、サーバ上のファイルの場所を直接指定できてしまいます。選択肢イの相対パスも、指定の仕方によっては許可されたフォルダの外を指せるため、安全とはいえません。また、ファイルが存在するかどうかを確認するだけでは、その利用者にダウンロードを許可してよいかは判断できません。
-
そこで、利用者にはファイル名だけを指定させ、アプリケーション側で取引先ごとに決めたフォルダを使ってファイルを探します。これなら、利用者が別のフォルダを指定する余地を減らせます。表1の問題である「任意のファイル」のダウンロードを防ぐ方法として適切なのは、選択肢ウです。
選択肢エのようにWebサーバ上の全ファイルやフォルダを表示すると、利用者に不要な情報まで見せてしまい、問題の解決になりません。
誤りやすいポイント
- 「ファイルが存在する場合だけダウンロードする」という確認で十分だと考えることです。存在確認だけでは、利用者がそのファイルを取得してよいかは確認できません。
- 絶対パスを避ければ相対パスは安全だと考えることです。相対パスでも、フォルダの外へ移動する指定を使われる可能性があります。
- ファイル名だけを指定させることと、アクセスできるフォルダを制限することを別々に考えることです。選択肢ウでは、ファイル名に加えて、取引先ごとのフォルダに対象を限定しています。
FAQ
-
Q: ファイル名だけを指定させれば、どんな場合でも安全ですか?
A: それだけで十分とは限りません。ファイル名に不正な指定が含まれていないかを確認し、実際に参照するフォルダも取引先ごとに制限する必要があります。この設問では、取引先ごとに決められたフォルダ内で探す点が重要です。 -
Q: 相対パスは、なぜ危険になることがあるのですか?
A: 相対パスは、基準となるフォルダから見た位置を指定します。上の階層へ移動する指定などを使われると、基準のフォルダの外にあるファイルを指すおそれがあります。 -
Q: 「該当ファイルが存在する」ことと「ダウンロードを許可する」ことは、何が違いますか?
A: 前者は、そのファイルがサーバ上にあるかどうかの確認です。後者は、その利用者がそのファイルを取得してよいかどうかの確認です。ファイルが存在していても、アクセス権がなければダウンロードさせてはいけません。
関連キーワード: ディレクトリトラバーサル、アクセス制御、認可、入力検証、ファイルパス
設問4:
問題文を見る 表1中の下線②の脆弱性から考えられるセキュリティ事故として適切な答えを、解答群の中から選べ。
解答群
ア:取引先の担当者が誕生日をパスワードにしていると、誕生日を知っている者がログインできてしまう。
イ:パスワードの候補を自動で次々と入力するプログラムを利用することで、ログインできてしまう。
ウ:パスワードを記載したメモを取引先の担当者が落とし、それを拾った者がログインできてしまう。
エ:ログイン操作を背後から盗み見て、パスワードを入手し、ログインできてしまう。
模範解答
イ
解説
解答の導き方
-
下線②の内容は、「パスワードを連続して間違えても利用者IDがロックされない」というものです。利用者IDは、誰がログインしようとしているかを識別するための名前や番号です。
-
パスワードを何度間違えてもロックされない場合、間違いを理由にログインを止められることがありません。そのため、攻撃者がパスワードの候補を自動で次々に入力し、正しいパスワードを探すことができます。このような攻撃を、パスワードの総当たり攻撃といいます。
-
解答群のイは、「パスワードの候補を自動で次々と入力するプログラムを利用する」場合を述べています。これは、下線②の脆弱性によって起こり得る事故です。
-
アは誕生日など推測しやすいパスワードを使っている場合、ウはパスワードを書いたメモを拾われた場合、エはパスワードを入力するところを盗み見られた場合の危険です。いずれも、パスワードを何度間違えても利用者IDがロックされないことによる危険とは異なります。
誤りやすいポイント
- パスワードが分かればログインできる、という点だけで選択肢を判断しないようにしましょう。設問では、下線②の「パスワードを連続して間違えても利用者IDがロックされない」ことが原因となる事故を尋ねています。
- アは、誕生日をパスワードにするという弱いパスワードの問題です。何度も試せることを直接利用する選択肢はイです。
- ウやエは、人にパスワードを知られてしまう事故です。パスワードを繰り返し試せることとは、原因が異なります。
FAQ
Q: 利用者IDをロックするのは、どのような仕組みですか?
A: パスワードを一定回数間違えたときに、その利用者IDでのログインを一時的にできなくする仕組みです。パスワードを次々と試す攻撃を防ぎやすくなります。
A: パスワードを一定回数間違えたときに、その利用者IDでのログインを一時的にできなくする仕組みです。パスワードを次々と試す攻撃を防ぎやすくなります。
Q: 利用者IDがロックされなければ、必ずログインされてしまいますか?
A: いいえ。攻撃者が正しいパスワードを見つける必要があります。ただし、間違いが続いても試行を止められないため、パスワードを探される危険が高まります。
A: いいえ。攻撃者が正しいパスワードを見つける必要があります。ただし、間違いが続いても試行を止められないため、パスワードを探される危険が高まります。
Q: アはなぜ選ばないのですか?
A: 誕生日を知っている人がログインできる危険は、推測しやすいパスワードを使っていることが原因です。下線②のように、入力を何度でも試せることを直接利用する事故ではありません。
A: 誕生日を知っている人がログインできる危険は、推測しやすいパスワードを使っていることが原因です。下線②のように、入力を何度でも試せることを直接利用する事故ではありません。
関連キーワード: パスワード総当たり攻撃、アカウントロック、認証、パスワード管理





