情報処理安全確保支援士午後I 事例記述令和5年 春期
午後I 問1

午後I 問1 Webアプリケーションプログラム開発

テーマ:Webアプリケーションプログラム開発
左右2分割表示:左側の問題文をスクロールしながら右側の設問に解答できます

長文事例本文

図表クリックで拡大
G社は,システム開発を行う従業員100名のSI企業である。このたび,オフィス用品を販売する従業員200名のY社から,システム開発を受託した。開発プロジェクトのリーダーには,G社の開発課のD主任が任命され,メンバーには,開発課から,Eさんと新人のFさんが任命された。G社では,セキュリティの品質を担保するために,プログラミング完了後にツールによるソースコードの静的解析を実施することにしている。 〔受託したシステムの概要〕 受託したシステムには,Y社の得意先がオフィス用品を注文する機能,Y社とY社の得意先が注文履歴を表示させる機能,Y社とY社の得意先が注文番号を基に注文情報を照会する機能(以下,注文情報照会機能という),Y社とY社の得意先が納品書のPDFファイルをダウンロードする機能などがある。 〔ツールによるソースコードの静的解析〕 プログラミングが完了し,ツールによるソースコードの静的解析を実施したところ,Fさんが作成した納品書PDFダウンロードクラスのソースコードに問題があることが分かった。納品書PDFダウンロードクラスのソースコードを図1に,静的解析の結果を表1に示す。
図1 納品書 PDF ダウンロードクラスのソースコード 拡大
図1 納品書 PDF ダウンロードクラスのソースコード
表1 静的解析の結果 拡大
表1 静的解析の結果
この解析結果を受けて,Fさんは,Eさんの指導の下,ソースコードを修正した。表1の項番1について図1の8行目から11行目を図2に示すソースコードに修正した。項番2と項番3についてもソースコードを修正した。
図2 納品書 PDF ダウンロードクラスの修正後のソースコード 拡大
図2 納品書 PDF ダウンロードクラスの修正後のソースコード
再度,ツールによるソースコードの静的解析が実施され,表1の指摘は解消していることが確認された。 〔システムテスト〕 システムテストを開始したところ,注文情報照会機能において不具合が見つかった。この不具合は,ある得意先の利用者IDでログインして画面から注文番号を入力すると,別の得意先の注文情報が出力されるというものであった。なお,ログイン処理時に,ログインした利用者IDと,利用者IDにひも付く得意先コード及び得意先名はセッションオブジェクトに保存されている。 注文情報照会機能には,業務処理を実行するクラス(以下,ビジネスロジッククラスという)及びリクエスト処理を実行するクラス(以下,サーブレットクラスという)が使用されている。注文情報照会機能が参照するデータベースのE-R図を図3に,Eさんが作成したビジネスロジッククラスのソースコードを図4に,サーブレットクラスのソースコードを図5に示す。
図3 注文情報照会機能が参照するデータベースの E-R 図 拡大
図3 注文情報照会機能が参照するデータベースの E-R 図
図4 ビジネスロジッククラスのソースコード 拡大
図4 ビジネスロジッククラスのソースコード
図5 サーブレットクラスのソースコード 拡大
図5 サーブレットクラスのソースコード
D主任,Eさん,Fさんは,不具合の原因が特定できず,セキュアプログラミングに詳しい技術課のHさんに協力を要請した。 Hさんはアプリケーションログ及びソースコードを解析し,不具合の原因を特定した。原因は,図4で変数eがfとして宣言されていることである。この不具合は,①並列動作する複数の処理が同一のリソースに同時にアクセスしたとき,想定外の処理結果が生じるものである。 原因を特定することができたので,Eさんは,Hさんの支援の下,次の4点を行った。 (1) 図4の2行目から5行目までのソースコードを削除する。 (2) 図4の6行目を,図6に示すソースコードに修正する。
図6 ビジネスロジッククラスの修正後のソースコード 拡大
図6 ビジネスロジッククラスの修正後のソースコード
(3) 図5の4行目と5行目を,図7に示すソースコードに修正する。
図7 サーブレットクラスの修正後のソースコード 拡大
図7 サーブレットクラスの修正後のソースコード
(4) 保険的な対策として,図4の10行目の抽出条件に,セッションオブジェクトに保存されたjと注文ヘッダーテーブルのjの完全一致の条件をAND条件として追加する。 ソースコードの修正後,改めてシステムテストを実施した。システムテストの結果は良好であり,システムがリリースされた。

設問一覧 & 解答・演習

まずは解答を作成してみましょう。「解答例を見る」をクリックするとIPA公式解答例と採点基準が開きます。

設問1 (1)記号・選択式
〔ツールによるソースコードの静的解析〕について,表1中の a に入れる適切な行番号を,図1中から選び,答えよ。
※直接入力してください
設問1 (2)記号・選択式
〔ツールによるソースコードの静的解析〕について,表1中の b に入れる適切な変数名を,図1中から選び,答えよ。
※直接入力してください
設問1 (3)記号・選択式
〔ツールによるソースコードの静的解析〕について,図2中の c,d に入れる適切な字句を答えよ。
※直接入力してください
設問2 (1)記号・選択式
〔システムテスト〕について,本文中の e に入れる適切な変数名を,図5中から選び,答えよ。
※直接入力してください
設問2 (2)記述問題
制限字数:10 字以内
〔システムテスト〕について,本文中の f に入れる適切な字句を,英字10字以内で答えよ。
0 / 10 文字
設問2 (3)記述問題
制限字数:15 字以内
〔システムテスト〕について,本文中の下線①「並列動作する複数の処理が同一のリソースに同時にアクセスしたとき,想定外の処理結果が生じるもの」の不具合は何と呼ばれるか。15字以内で答えよ。
0 / 15 文字
設問2 (4)記号・選択式
〔システムテスト〕について,図6中の g,図7中の h,i に入れる適切な字句を答えよ。
※直接入力してください
設問2 (5)記号・選択式
〔システムテスト〕について,本文中の j に入れる適切な属性名を,図3中から選び,答えよ。
※直接入力してください
午後長文記述の得点力を引き上げる定番対策書Amazon・楽天 公式提携
PR
うかる! 情報処理安全確保支援士 午後問題集 [第2版]
IPA 厳選対策書うかる! 情報処理安全確保支援士 午後問題集 [第2版]村山 直紀 著 / 日本経済新聞出版
午後記述バイブル
村山 直紀 著 / 日本経済新聞出版

うかる! 情報処理安全確保支援士 午後問題集 [第2版]

💡 推薦ポイント:午後試験の長文事例でどこに着目して脆弱性と対策を抜き出すか、合格答案の記述テンプレートを効率よく習得できます。
※本リンク先はプロモーション(アフィリエイト広告)が含まれています
【出題趣旨】IPA公式発表
Javaで実装されたWebアプリケーションプログラムに対して,ツールによるソースコードの静的解析やセキュリティ観点からのシステムテストの実施はセキュリティの不備を発見するのに有効である。 本問では,Webアプリケーションプログラム開発を題材として,静的解析やシステムテストで発見されたセキュリティ上の不具合への対処を踏まえたセキュアプログラミングに関する能力を問う。
【採点講評】IPA公式発表
問1では,Webアプリケーションプログラム開発を題材に,セキュアプログラミングについて出題した。全体として正答率は平均的であった。 設問1(3)は,正答率が低かった。“PreparedStatement”とすべきところを“Statement”と解答した受験者が多かった。“PreparedStatement”を使う方法は,セキュアプログラミングの基本であり,理解してほしい。 設問2(3)は,正答率が低かった。“レースコンディション”は個人情報漏えいなどにつながる可能性があるので,設計,実装,テストでの対策を確認しておいてほしい。 設問2(5)は,正答率がやや高かったが,“注文番号”と解答した受験者が見受けられた。注文番号は既に抽出条件に入っているので,E-R図とJavaソースコードから,保険的対策として適切な抽出条件を導き出す方法を理解してほしい。
本番形式・制限時間付きで演習する
令和5年 春期 午後(2問選択・150分)を実戦演習モードで通し解答し、総合採点を受けられます。
実戦演習を始める