登録なしで、Spine の学習体験を試す
Spine は、IPA 情報処理技術者試験の記述式・論述式問題を本番同様の CBT 形式で解答し、採点基準(ルーブリック)に基づく AI 採点でフィードバックを受けられる学習サービスです。このページでは、令和6年度 秋期 応用情報技術者試験 午後問題の問1(情報セキュリティ・必須問題)を、登録なしでそのまま解けます。
- 下の問題文を読み、選択式・記述式の設問に答える
- 「答え合わせ」を押すと、選択式は自動採点、記述式は模範解答・解説・採点基準を表示
- 記述式が実際にどう AI 採点されるかはAI採点例(初回回答 → 改善 → 得点変化)で確認する
出典: 令和6年度 秋期 応用情報技術者試験 午後問題 問1(独立行政法人情報処理推進機構(IPA))。解説と採点基準は Spine が独自に作成したものです。
問1必須問題・配点20点
Webサイトのセキュリティに関する次の記述を読んで、設問に答えよ。
F社は、日用雑貨を製造・販売する中堅企業である。このたび、販路拡大を目的として自社製品を販売するWebサイト(以下、本システムという)を新規に開発した。本システムは、D社クラウドサービス上に構築しており、Webサーバとデータベース(以下、DBという)サーバから成り、D社クラウドサービスが提供するファイアウォール(以下、FWという)及びWebアプリケーションファイアウォール(以下、WAFという)を経由してインターネットからアクセスされる予定である。
本システムの開発環境のネットワーク構成(抜粋)を図1に示す。なお、本システムはリリース前であり、F社開発環境の特定のIPアドレスからだけアクセスできるようにFWで制限している。

本システムの主な仕様を次に示す。
- 会員登録時に自動で発行される会員番号と会員が設定したパスワードをログインフォームに入力してログインする。商品の購入はログイン後に行う。
- パスワードとして使用できる文字は、英数字に一部の記号を加えた70種類である。
- パスワードは、6字以上16字以下で設定する。
- 会員テーブルは、会員番号、メールアドレス、パスワードのハッシュ値、姓、名、住所、電話番号の7フィールドで構成されている。①パスワードのハッシュ値は、会員が設定したパスワードをハッシュ関数によってハッシュ化したものである。
F社情報セキュリティ部のG部長は、本システムのリリース前にペネトレーションテストを実施することを決定し、H主任をリーダーに任命した。H主任は、セキュリティベンダーであるU社に本システムのペネトレーションテストの実施を依頼した。
ペネトレーションテストは、U社内のPCからインターネット、FW及びWAFを経由して本システムにアクセスする経路で実施した。
ペネトレーションテスト期間中は、FW及びWAFに対して次の変更を行った。
- FWに対する変更
通信を許可するアクセス元IPアドレスとして、ペネトレーションテストに用いるU社のIPアドレスを追加する。 - WAFに対する変更
攻撃を検知した際には、通信の遮断は行わず、検知したことだけを記録する。
〔ペネトレーションテストの結果〕
ペネトレーションテストの結果、次の手順(以下、本シナリオという)で会員のパスワードが推測されて、不正にアクセスされてしまうことが確認された。
- ②SQLインジェクション攻撃によって会員テーブルのデータを取得する。このとき取得した会員テーブルのデータ(抜粋)を表1に示す。
- レインボーテーブル攻撃によって、手順1で取得した会員テーブル中のパスワードのハッシュ値から元のパスワードを推測する。
- 推測したパスワードを利用して、会員になりすまして本システムにログインする。

稼働中のシステムのログインフォームに対してパスワードを総当たりで試行するa攻撃では、システム側で試行回数に制限を設けて対策することができるが、レインボーテーブル攻撃ではそれができない。
H主任は、本システムの修正方針を整理するために、SQLインジェクション攻撃及びレインボーテーブル攻撃への対策を検討することにした。なお、ペネトレーションテスト期間中にWAFでSQLインジェクション攻撃が検知できていたが、③仮に対策の一つが破られても他の対策で攻撃を防ぐという考え方に基づき、攻撃への対策をWAFだけに頼らず本システム自体でも行うことにした。
〔SQLインジェクション攻撃への対策の検討〕
本システムのソースコードを調査したところ、一部の処理で外部からの入力値をそのままSQL文に埋め込んでいる箇所が存在していた。そこで、対策として、bを利用する方式を採用することにした。この方式では、外部からの入力値が埋め込まれる箇所を専用の記号に置き換えたSQL文の雛形をあらかじめ作成しておき、専用の記号で置き換えた箇所にDB管理システム側で外部からの入力値を割り当てる。
〔レインボーテーブル攻撃への対策の検討〕
本システムでは会員のパスワードをハッシュ化して保存しているが、パスワードそのものにハッシュ関数を1回適用しただけであったので、レインボーテーブル攻撃に対して脆弱であった。そこで、パスワードをハッシュ化する際に、次の三つの処理を組み合わせて実施することにした。
- ソルトを用いた処理
- パスワードをハッシュ化する際に、ソルトを付加した上でハッシュ化する。
- ソルトとして、会員ごとに異なるランダムな文字列を用意し、会員テーブルに格納する。
- ④ペッパーを用いた処理
- パスワードをハッシュ化する際に、ペッパーを付加した上でハッシュ化する。
- ペッパーとして、全ての会員に共通のランダムな文字列を用意し、Webサーバ内の外部からアクセスできない安全な領域に格納する。
- ストレッチング
- ハッシュ関数を複数回適用する。
さらに、ハッシュ化処理の変更に加えて、会員が設定可能なパスワード長を10字以上64字以下に変更した。本システムにおいて、パスワード長が10字の場合、6字の場合と比べてパスワードとして使用可能な文字列のパターン数がc倍になるのでレインボーテーブル攻撃がより困難になる。
H主任は、これらの対策を取りまとめてG部長に報告し、承認された。
設問1
設問2
設問4
設問5
本番同様のフル模擬試験と AI 採点は、登録して利用できます
登録すると、全問セットの模擬試験・試験タイマー・過去問ドリル・記述式の AI 採点とフィードバックが利用できます。
無料で始める