基本情報技術者 2012年 秋期 午後 問04
セキュリティ事故の対応に関する次の記述を読んで、設問1〜4に答えよ。
自転車用品の中堅通信販売会社のD社では、顧客からの注文を郵便及び電話で受け付けていた。顧客へのサービスの拡大を目的として、インターネットを利用した会員制のサービスを開始することとした。
会社の紹介だけを掲載していた従来のWebサイトを改修し、Webサイトでの会員情報の登録及び修正、会員に対するWebサイトでの商品の販売並びに会員向けのメールマガジン送付の登録を行う。
なお、Webサイトでの商品の販売における決済手段はクレジットカードだけとする。
改修後のWebサイトは、D社のDMZ上に設置されたWebサーバと、社内LAN内に設置されたデータベースサーバで構成される。データベースサーバのデータは平文で保存しており、会員情報の登録及び修正、商品の販売並びに会員向けのメールマガジン送付の登録を行う際には、SSLによってネットワーク経路の暗号化を行う。
〔会員情報の登録〕
D社では、Webサイトで取得する個人情報の利用目的を、注文の受付、決済、商品の配送、及びメールマガジンの送付に限定し、会員登録の希望者に対し、登録時に利用目的を通知して同意を得ることとした。同意を得た会員に対しては、会員情報として次の情報を登録してもらうこととした。
【全員に登録してもらう情報】
利用者ID、パスワード、メールアドレス、メールマガジン送付の有無
【任意に登録してもらう情報】
性別、生年月日
【商品を購入する会員に登録してもらう情報】
氏名、配送先住所、電話番号、クレジットカードの発行会社名、
クレジットカード番号、クレジットカードの有効期限
〔セキュリティ事故の発生〕
複数の会員から、“D社のサービスに登録したメールアドレス宛てに迷惑メールが大量に送られてくるようになった”との連絡がお客様相談窓口に入った。さらに、連絡があった会員のうち数名については、迷惑メールの宛先メールアドレスはD社以外のサービスでは利用していないことが分かった。
この報告を受けてD社の情報システム部のY部長は、会員情報が漏えいしている可能性があると判断した。また、会員情報として登録されているクレジットカード情報が漏えいしていることも考えられると判断した。そこで、情報システム部のWebサイト担当者Z氏に対し、Webサイトを停止して調査するよう指示した。
Z氏の調査の結果、D社のWebサイトにおいて、会員が利用者IDとパスワードの入力を行うログインの処理に不備があり、外部からSQLインジェクション攻撃を受けていたことが判明した。
〔セキュリティ事故への対応〕
Z氏は、一般的なWebサイトにおけるセキュリティ事故に関して考えられる対策と対応を調査し、今回のセキュリティ事故において会員とWebサイトに対して必要と思われる対策と対応を表1にまとめて、Y部長に報告した。
Y部長は、表1の⑦は実施を見合わせ、Z氏に①〜⑥の実施を急がせるとともに、更なる情報セキュリティ対策の実施を指示した。
設問1:
問題文を見る 今回受けたSQLインジェクション攻撃に関する記述として適切な答えを、解答群の中から選べ。
解答群
ア:攻撃者がDNSに登録されたドメインの情報を改ざんすることによって、利用者をフィッシングサイトに誘導し、そこで入手した利用者IDとパスワードを用いて、データベースを不正に操作した。
イ:攻撃者が、D社のWebサイトの入力項目に対し、命令文を送り込むことによって、データベースを不正に操作した。
ウ:攻撃者がD社のデータベースの管理ツールを入手し、管理ツール経由で直接D社のデータベースを不正に操作した。
エ:攻撃者がネットワーク上で情報の盗聴を行い、D社のデータベースの管理者のIDとパスワードを入手し、データベースを不正に操作した。
模範解答
イ
解説
解答の導き方
この設問では、D社が受けた攻撃の方法を選びます。手掛かりは、ログイン処理に不備があり、「外部からSQLインジェクション攻撃を受けていた」という記述です。
SQL(Structured Query Language:データベースにデータの検索や変更などを指示する言語)インジェクションとは、Webサイトの入力欄に、データベースへの命令として働く内容を送り込む攻撃です。Webサイト側の処理に不備があると、入力された内容が単なる文字ではなく、データベースへの命令として実行されてしまいます。
本文では、利用者ID(Identification:利用者を識別するための情報)とパスワードを入力するログイン処理に不備があったとされています。これは、Webサイトの入力項目を通じてデータベースを不正に操作する攻撃と結び付きます。したがって、「D社のWebサイトの入力項目に対し、命令文を送り込む」と説明しているイが適切です。
ほかの選択肢は、攻撃の経路が異なります。
- アは、DNS(Domain Name System:ドメイン名とIPアドレスを対応付ける仕組み)の情報を改ざんし、利用者を偽のWebサイトへ誘導する攻撃です。入力欄に命令文を送り込むSQLインジェクションとは異なります。
- ウは、データベースの管理ツールを使って直接操作する方法です。D社のWebサイトの入力項目を悪用する攻撃ではありません。
- エは、通信を盗み見て管理者のIDとパスワードを入手する方法です。これも、入力欄からデータベースへの命令を送り込むSQLインジェクションとは異なります。
誤りやすいポイント
- 迷惑メールや情報漏えいが起きたことだけで、攻撃方法を決めないようにします。この設問では、ログイン処理の不備とSQLインジェクション攻撃が判明したという記述が、直接の手掛かりです。
- データベースを不正に操作する攻撃がすべてSQLインジェクションというわけではありません。攻撃者がどこから、どのように操作したかを見分けます。
- SSLで通信経路を暗号化していても、Webサイトの入力処理に不備があれば、SQLインジェクションを防げるとは限りません。通信の盗み見を防ぐ対策と、入力内容を安全に扱う対策は別です。
FAQ
Q: ログイン画面に文字を入力するだけで、SQLインジェクションになるのですか?
A: いいえ。入力内容を、Webサイト側が安全に扱っているかどうかが重要です。入力内容を命令として誤って実行させるように送るのが、SQLインジェクションです。
A: いいえ。入力内容を、Webサイト側が安全に扱っているかどうかが重要です。入力内容を命令として誤って実行させるように送るのが、SQLインジェクションです。
Q: SSLによる暗号化で、SQLインジェクションも防げますか?
A: 防げるとは限りません。SSL(Secure Sockets Layer:通信経路を暗号化する仕組み)は、通信中の情報を盗み見られにくくします。一方、SQLインジェクションへの対策では、Webサイトが入力内容を安全に処理する必要があります。
A: 防げるとは限りません。SSL(Secure Sockets Layer:通信経路を暗号化する仕組み)は、通信中の情報を盗み見られにくくします。一方、SQLインジェクションへの対策では、Webサイトが入力内容を安全に処理する必要があります。
関連キーワード: SQLインジェクション、SQL、データベース、入力値検証、SSL
設問2:
問題文を見る 表1中の③に関して、今回のセキュリティ事故の対応として適切な答えを、解答群の中から選べ。
解答群
ア:安易なパスワードの設定を防止するために、パスワードは英字、数字、記号が混在する8文字以上のものにするよう会員に依頼する。
イ:攻撃を受けた場合の被害を抑えるために、メールマガジン購読だけを利用する会員の会員情報を格納したデータベースと商品の購入を行う会員の会員情報を格納したデータベースとを分離し、商品の購入を行う会員だけには、利用者ID及びパスワードの変更を依頼する。
ウ:個人情報の目的外利用を避けるために、D社が取得する個人情報の利用目的に事故の対応を追加し、同意を会員に依頼する。
エ:クレジットカード情報が漏えいしている場合の不正利用を防止するために、登録されたクレジットカードの停止及び番号変更の手続を会員に依頼する。
模範解答
エ
解説
解答の導き方
この設問では、セキュリティ事故が起きたあと、会員にどのような対応を依頼するのが適切かを考えます。
まず、D社では会員情報として、商品を購入する会員のクレジットカード番号や有効期限も登録しています。さらに、データベースサーバのデータは平文、つまり暗号化されていない状態で保存されています。
本文には、会員が利用者IDとパスワードを入力するログインの処理に不備があり、SQLインジェクション攻撃を受けていたとあります。SQL(Structured Query Language:データベースを操作する言語)の命令に不正な入力を加え、データベースの情報を不正に読み取ったり操作したりする攻撃です。会員情報が外部に漏れている可能性があるため、クレジットカード情報も漏えいしていると考えて対応する必要があります。
SSL(Secure Sockets Layer:通信経路を暗号化する仕組み)を使っていても、守られるのはネットワークを通る情報です。データベースに保存された情報が暗号化されていなければ、攻撃による漏えいを防げるとは限りません。
選択肢を見ると、アのパスワードの設定条件を厳しくすることは、今後の安全性を高める対策です。しかし、すでに漏えいした可能性のあるクレジットカード情報の不正利用は防げません。
イのデータベースを分けることも、今後の被害を抑えるための対策です。しかし、事故が起きたあとの会員への依頼としては、すでに漏えいした可能性のある情報への対応になっていません。また、パスワードを変更するだけでは、クレジットカードの不正利用を防げません。
ウのように個人情報の利用目的に事故対応を追加して同意を得ても、漏えいしたカード情報が悪用される危険は減りません。
一方、エは、登録されたクレジットカードの停止と番号変更を会員に依頼する対応です。カード会社への手続を通じて、漏えいした可能性のある番号が不正に使われるのを防ぐことにつながります。したがって、表1中の③として最も適切です。
誤りやすいポイント
- パスワードを強くする対策と、漏えいした情報による被害を防ぐ対応を混同しないようにしましょう。パスワードの見直しだけでは、クレジットカードの不正利用は防げません。
- データベースを分離する対策は、今後の被害を抑えるためのものです。すでに起きた可能性がある情報漏えいへの対応とは分けて考えます。
- 通信経路を暗号化していても、データベースに保存された情報まで暗号化されているとは限りません。どこが保護されているのかを区別することが大切です。
- 個人情報の利用目的に関する手続を追加しても、漏えいしたカード情報の不正利用を防ぐ対策にはなりません。
FAQ
Q: クレジットカードの停止や番号変更は、D社が行うのですか?
A: カードの停止や番号変更は、通常、カード会社への連絡や手続が必要です。D社は、登録している会員にその手続を依頼します。
A: カードの停止や番号変更は、通常、カード会社への連絡や手続が必要です。D社は、登録している会員にその手続を依頼します。
Q: パスワードの変更も必要ではありませんか?
A: 漏えいした情報の範囲によっては、パスワードの変更を会員に案内することも考えられます。ただし、この設問では、漏えいの可能性があるクレジットカード情報の不正利用を防ぐ対応が問われています。
A: 漏えいした情報の範囲によっては、パスワードの変更を会員に案内することも考えられます。ただし、この設問では、漏えいの可能性があるクレジットカード情報の不正利用を防ぐ対応が問われています。
Q: SSLで通信を暗号化していれば、情報漏えいは防げませんか?
A: SSLが暗号化するのは通信経路です。データベース内の情報を暗号化するものではないため、保存された情報を不正に読み取られる可能性は残ります。
A: SSLが暗号化するのは通信経路です。データベース内の情報を暗号化するものではないため、保存された情報を不正に読み取られる可能性は残ります。
関連キーワード: SQLインジェクション、情報漏えい、個人情報、クレジットカード情報、通信の暗号化
設問3:
問題文を見る 表1中の⑦に関して、Y部長が実施を見合わせた理由として適切な答えを、解答群の中から選べ。
解答群
ア:Webサーバの増設が必要となる。
イ:稼働中のサービスの停止が必要であり、事業への影響が大きい。
ウ:今回のSQLインジェクション攻撃を防ぐ対策にならない。
エ:セキュリティ事故発生時に攻撃者の侵入経路の特定に時間が掛かる。
模範解答
ウ
解説
解答の導き方
まず、今回の事故の原因を確認します。本文では、Webサイトの「ログインの処理に不備」があり、「SQLインジェクション攻撃」を受けたと分かっています。
SQL(Structured Query Language:データベースにデータを問い合わせたり、操作したりするための言語)インジェクションとは、Webサイトへの入力に不正な内容を混ぜ、データベースに意図しない処理をさせる攻撃です。今回はログイン処理の不備が攻撃につながっています。
次に、表1の⑦が何のための対策なのかを見ます。⑦は「ネットワークを介した攻撃によるネットワークアクセス負荷上昇に対応するためのネットワーク回線の二重化」です。回線の二重化は、通信が集中したり、回線に問題が起きたりしたときに、通信を続けやすくするための対策です。
しかし、回線を二重にしても、ログイン処理の不備は修正されません。不正な入力によってデータベースに意図しない処理をさせる仕組みも防げません。今回のSQLインジェクション攻撃への直接の対策は、表1の⑤にあるように、Webサイトを改修することです。
つまり、⑦は通信の混雑などへの対策にはなりますが、今回のSQLインジェクション攻撃を防ぐ対策にはなりません。したがって、該当するのはウです。
誤りやすいポイント
- 「攻撃への対策」と書かれているため、⑦も今回の攻撃を防げると思い込むことがあります。対策の対象を確認しましょう。⑦はネットワークの負荷への対策であり、Webサイトのログイン処理の不備を直すものではありません。
- ネットワーク回線を二重にすることと、Webサーバを増設することは別の対策です。回線の二重化だけで、Webサーバの増設が必要になるとは限りません。
- 回線の二重化は、サービスを続けやすくするために役立つ場合があります。そのため、⑦がまったく役に立たないという意味ではありません。今回のSQLインジェクション攻撃を防ぐ対策ではない、という点が判断の決め手です。
FAQ
Q: 回線を二重にすると、どのような問題に対応できますか?
A: 通信の集中や回線の障害によって、Webサイトを利用しにくくなる問題への備えになります。ただし、Webサイトのプログラムにある不備を直す対策ではありません。
A: 通信の集中や回線の障害によって、Webサイトを利用しにくくなる問題への備えになります。ただし、Webサイトのプログラムにある不備を直す対策ではありません。
Q: SQLインジェクション攻撃を防ぐには、何を直せばよいですか?
A: Webサイトの入力処理を見直し、入力された内容がデータベースへの命令として誤って扱われないようにします。表1では、⑤の「SQLインジェクション攻撃を防ぐためのWebサイトの改修」がこれに当たります。
A: Webサイトの入力処理を見直し、入力された内容がデータベースへの命令として誤って扱われないようにします。表1では、⑤の「SQLインジェクション攻撃を防ぐためのWebサイトの改修」がこれに当たります。
Q: ⑦を見合わせると、ネットワークの負荷への対策は不要ということですか?
A: いいえ。ネットワークの負荷への備えとして回線の二重化が役立つ場合はあります。ただし、この設問では、今回判明したログイン処理の不備への対策ではないことが理由です。
A: いいえ。ネットワークの負荷への備えとして回線の二重化が役立つ場合はあります。ただし、この設問では、今回判明したログイン処理の不備への対策ではないことが理由です。
関連キーワード: SQLインジェクション、ネットワーク回線の二重化、入力値検証、可用性
設問4:
問題文を見る Y部長は、Z氏に事故の再発防止のために更なる情報セキュリティ対策の実施を指示した。次の記述中のに入れる適切な答えを、解答群の中から選べ。
〔SQLインジェクション攻撃への追加対策〕
SQLインジェクション攻撃は、システム開発の際にセキュリティを考慮した設計及び実装を行うことで回避できる。例えば、aことで、アプリケーション開発時に脆弱性が作り込まれる可能性を減らすこととする。
〔会員情報に対するその他のセキュリティ対策〕
会員情報を格納したデータベースサーバへの不正アクセス対策として、bこととする。また、情報漏えいが発生した場合の原因の分析や犯人の追跡を行うための証拠の確保には、cを行うこととする。
aに関する解答群
ア:開発担当者と運用担当者の職務を分離する
イ:開発用の端末と通常利用の端末を分離する
ウ:瑕疵の発生に備えた保険に加入する
エ:機密保持に関する誓約書を作成する
オ:セキュアプログラミングのルールを作成する
カ:負荷分散装置を設置する
bに関する解答群
ア:Webサーバとデータベースサーバの時刻を同期させる
イ:会員情報を暗号化する
ウ:社内からのインターネット利用時にフィルタリングを実施する
エ:共有IDを利用する
オ:データベースサーバをRAID構成にする
cに関する解答群
ア:アクセスログやエラーログの保管
イ:外部記憶媒体の利用禁止を明文化
ウ:業界団体との連携によるセキュリティ事故情報の共有
エ:担当する業務に応じた情報セキュリティ教育の実施
オ:内部不正に対する罰則の強化
模範解答
a:オ、b:イ、c:ア
解説
解答の導き方
この設問では、空欄ごとに目的が異なります。
aはSQLインジェクション攻撃を防ぐための開発時の対策、bはデータベースサーバへの不正アクセス対策、cは事故の原因や攻撃者を調べるための証拠の確保です。目的を一つずつ確認します。
aはSQLインジェクション攻撃を防ぐための開発時の対策、bはデータベースサーバへの不正アクセス対策、cは事故の原因や攻撃者を調べるための証拠の確保です。目的を一つずつ確認します。
a:開発時に脆弱性を作り込まないための対策
SQL(Structured Query Language:データベースに問い合わせたり、データを操作したりするための言語)インジェクションは、入力された文字列を悪用し、データベースへの命令を不正に変える攻撃です。本文では、ログイン処理に不備があり、この攻撃を受けたと分かっています。
設問は、システム開発の際に脆弱性が作り込まれる可能性を減らす方法を尋ねています。そのため、開発者が安全なプログラムの書き方を守れるようにする必要があります。「セキュアプログラミングのルールを作成する」ことで、開発時に守るべき方法を明確にできます。したがって、aはオです。
職務や端末を分けること、誓約書を作ること、保険に入ること、負荷分散装置を設置することは、それぞれ別の目的に関係する対策です。プログラムの作り方を定め、脆弱性を作り込まないようにする対策には当たりません。
b:データベースサーバに保存した会員情報を守る対策
本文には、データベースサーバのデータは「平文で保存」とあります。平文とは、暗号化されておらず、そのまま読める状態のデータです。一方、SSL(Secure Sockets Layer:ネットワーク上でやり取りするデータを暗号化する仕組み)によって暗号化するのは、データがネットワークを通る間です。データベースサーバに保存されたデータまで、自動的に暗号化されるわけではありません。
そこで、保存されている会員情報自体を暗号化すれば、データベースサーバから情報が持ち出された場合にも、内容を読み取られにくくできます。したがって、bはイです。
時刻の同期はログの時刻を照合しやすくする対策、インターネット利用時のフィルタリングは通信を制限する対策です。共有ID(Identifier:識別子)を使うと、誰が操作したかを特定しにくくなります。RAID(Redundant Array of Independent Disks:複数の記憶装置を組み合わせる方式)は、データの保存やシステムの稼働を支えるためのもので、不正アクセスを防ぐ対策ではありません。
c:原因分析や攻撃者の追跡に使う証拠
設問では、情報漏えいの原因を分析し、攻撃者を追跡するための証拠を確保したいとしています。アクセスログは、誰がいつシステムに接続したかなどの記録です。エラーログは、システムでどのようなエラーが起きたかを記録します。これらを保管しておけば、事故の前後に何が起きたかを調べる手掛かりになります。したがって、cはアです。
外部記憶媒体の利用禁止を明文化することや、教育、罰則の強化は、事故を防ぐためのルールや対策です。業界団体との情報共有も役立つ場合はありますが、今回の事故で起きた操作やエラーの記録を証拠として残す方法ではありません。
誤りやすいポイント
- 通信中の暗号化と、保存データの暗号化を混同すること
SSLはネットワーク上を移動するデータを保護します。データベースサーバに保存したデータを保護するには、別途、保存データの暗号化が必要です。 - 情報セキュリティ対策なら、どれでもSQLインジェクションを防げると考えること
この設問のaは、開発時に脆弱性を作り込まない対策を選びます。保険や端末の分離などは、脆弱なプログラムを作らないためのルールとは目的が異なります。 - ログを残すことと、アクセスを防ぐことを混同すること
ログは、起きたことを後から調べるための記録です。不正アクセスを直接防ぐものではありません。cでは、原因分析や追跡のための証拠としてログを保管する選択肢を選びます。 - RAIDをセキュリティ対策と考えること
RAIDは記憶装置を組み合わせる方式で、データの保存や稼働を支える目的があります。不正なアクセスを防ぐための仕組みではありません。
FAQ
Q: SSLを使っているのに、なぜ会員情報が漏れる可能性があるのですか?
A: SSLが暗号化するのは、ネットワーク上を移動している間のデータです。本文ではデータベースサーバのデータが平文で保存されているため、保存データを守る対策も必要です。また、SSLはSQLインジェクションのようなWebサイトの処理の不備を防ぐものではありません。
A: SSLが暗号化するのは、ネットワーク上を移動している間のデータです。本文ではデータベースサーバのデータが平文で保存されているため、保存データを守る対策も必要です。また、SSLはSQLインジェクションのようなWebサイトの処理の不備を防ぐものではありません。
Q: アクセスログやエラーログを保管すると、攻撃を防げますか?
A: ログの保管は、攻撃を直接防ぐ対策ではありません。事故が起きた後に、アクセスやエラーの記録から原因を調べ、攻撃者を追跡するために役立ちます。
A: ログの保管は、攻撃を直接防ぐ対策ではありません。事故が起きた後に、アクセスやエラーの記録から原因を調べ、攻撃者を追跡するために役立ちます。
Q: 会員情報を暗号化すれば、不正アクセス対策は十分ですか?
A: 暗号化は、保存された情報の内容を読み取られにくくする対策です。不正アクセスそのものをすべて防ぐものではないため、ほかの対策と組み合わせて考える必要があります。
A: 暗号化は、保存された情報の内容を読み取られにくくする対策です。不正アクセスそのものをすべて防ぐものではないため、ほかの対策と組み合わせて考える必要があります。
関連キーワード: SQLインジェクション、セキュアプログラミング、SSL、データ暗号化、アクセスログ




