本文へ移動

基本情報技術者試験 · 学習ガイド

2018年度 秋期 午後の問題・解答解説

旧制度の午前・午後と、2023年度以降の科目A・科目Bの公開問題を区別しています。現在の試験対策では現行シラバスと科目Bの形式を確認してください。公開問題は本試験の全出題を網羅する資料ではありません。

2018年度 秋期 午後の概要
30:00

問題番号から選ぶ

Webサイトにおける情報セキュリティ事故の原因分析と対策

情報セキュリティ · SQLインジェクション / プレースホルダ / 情報流出対策 / アクセスログ / WAF

自動車の販売代理店であるA社のWebサイトで、インターネット経由のSQLインジェクション攻撃によりデータベース内のカタログ請求者情報が流出する事故が発生した。事故原因の特定、データベースに対する防御策、情報流出リスク低減策、アクセスログの取得、およびWAF導入などの再発防止策について答える。

設問1 ア
DNS情報の改ざんにより偽サイトへ誘導してブラウザで不正スクリプトを実行させる。
設問1 イ
インターネット経由でDBサーバに直接不正ログインする。
設問1 ウ
インターネット経由でWebアプリにデータベース操作の命令文を入力し、DBを不正操作する。
設問1 エ
インターネット経由で送信されている情報を盗聴する。
設問2a ア
Webアプリへの入力パラメータには、Webサーバ内のファイル名を直接指定できないようにする。
設問2a イ
Webサーバのメモリを直接操作するような命令を記述できないプログラム言語を用いて作り直す。
設問2a ウ
Webページに出力する要素に対して、エスケープ処理を施す。
設問2a エ
データベース操作の命令文の組立てを文字列連結によって行う場合は、連結する文字列にエスケープ処理を施す。
設問2b ア
カタログ請求者の情報の適切な保管期間を定め、同意を得た上で、保管期間を過ぎた時点で消去する。
設問2b イ
カタログ請求者の情報を、カタログ送付後に直ちに、データベースから消去する。
設問2b ウ
カタログ請求者へ送付する電子メールにディジタル署名を付ける。
設問2b エ
データベースに登録されている情報を定期的にバックアップする。
設問2c ア
Webサイトの管理に使用する保守用PCは、必要なときだけ起動する。
設問2c イ
WebサーバとDBサーバにインストールするミドルウェアは、必要最低限にする。
設問2c ウ
WebサーバとDBサーバのハードディスクのデフラグメンテーションを、定期的に行う。
設問2c エ
データベースへのアクセスログを取得する。
設問3 ア
DBサーバを、Webサーバと同じく、DMZに設置する。
設問3 イ
不正な通信を遮断するために、WAF(Web Application Firewall)を導入する。
設問3 ウ
Webサーバを増設して冗長化した構成にする。
設問3 エ
保守用PCのログインパスワードには英数字及び記号を使用し、推測が難しい複雑なものを設定する。
解答・解説を表示

解答

設問1: ウ, 設問2 a: エ, 設問2 b: ア, 設問2 c: エ, 設問3: イ

解説

まず要点:SQLインジェクション攻撃は、入力欄にSQL文の一部を紛れ込ませてデータベース(DB、データの保管庫)を不正に操作する攻撃です。原因は、外部からの入力を使ってSQL文を組み立てる処理の不備にあります。対策は、入力した特殊文字を無害化するエスケープ処理や、個人情報を必要以上に長く持たないこと、アクセス記録の取得、WAF(Webアプリへの不正通信を防ぐ防火壁)の導入を組み合わせることです。

解き方

  1. 下線①の、入力されたSQL文でDBが不正操作された手口から、SQLインジェクションの定義を選ぶ。
  2. 表1の目的ごとに、SQL防御は文字列エスケープ、リスク低減は不要情報の削除、原因特定はアクセスログ取得を対応させる。
  3. 設問3では、Webアプリ全体の弱点を狙う外部からの不正アクセスを遮断する策としてWAFを選ぶ。

小問ごとの答え

小問 設問1:ウ
SQLインジェクションは、Webアプリケーションの入力値にSQL文の構成要素を混入させることで、意図しないSQL命令を実行させてデータベースを不正操作する攻撃です。
小問 設問2 a:エ
SQLインジェクションの根本対策はプレースホルダの実装ですが、文字列連結でSQL文を組み立てる場合は、特殊文字を安全にエスケープ処理することが適切な防御策となります。
小問 設問2 b:ア
情報流出リスクを低減するには、カタログ送付後の購入支援に必要な期間を定めた上で、利用規約等で同意を得て保管期間経過後に不要となった情報をデータベースから削除することが適切です。
小問 設問2 c:エ
情報流出の原因究明や流出範囲(閲覧されたレコード)を正確に特定するためには、誰がいつどのような問合せを実行したかを記録するデータベースのアクセスログ取得が不可欠です。
小問 設問3:イ
Webアプリケーション全体にクロスサイトスクリプティングなど他の脆弱性が疑われる場合、通信を監視して不正リクエストを遮断するWAF(Web Application Firewall)の導入が有効です。

覚えるポイント

  • SQLインジェクション対策の基本はプレースホルダの利用であり、文字列連結を行う場合はエスケープ処理が必要となる。
  • 不要になった個人データを消去して保持量を最小化し、アクセスログを取得・保全することが流出被害防止と事後調査の鉄則である。

間違えやすいところ

  • HTMLのエスケープ(XSS対策)と、SQL用のエスケープ(SQLインジェクション対策)を混同しないこと。
  • 購入支援にデータが必要なのに「カタログ送付後すぐ消去する」を選んでしまう間違いに注意すること。

出題の前提:平成30年度秋期 基本情報技術者試験 午後問題 問1

出典:IPA『2018年度 秋期 午後』
公式問題冊子 p.6 ↗(www.ipa.go.jp) / 公式問題冊子 p.7 ↗(www.ipa.go.jp) / 公式問題冊子 p.8 ↗(www.ipa.go.jp) / 公式問題冊子 p.9 ↗(www.ipa.go.jp)

2018年度 秋期 午後

参照した公式資料

IPAが公開した2018年度 秋期 午後の問題・解答資料です。