サイトアイコン やさしいネットワークとセキュリティ

【情報処理安全確保支援士試験 令和6年度 春期 午後 問4 設問1】徹底解説!Webアプリの脆弱性を見抜く力を養う

今回は、令和6年度 春期 情報処理安全確保支援士 午後 問4 を取り上げ、設問ごとに詳しく、そして分かりやすく解説していきます。この問題は、Webアプリケーション開発におけるセキュリティ設計の勘所が詰まっており、実務にも直結する非常に良質な問題です。

特に、【出題趣旨】 にあるように、「JavaとRDBMSで実装されたWebアプリケーションプログラムを題材として、セキュアプログラミングに関する能力を問う」 ことが目的とされています。

この記事を通して、「なぜその解答になるのか?」という思考プロセスを一緒に追いながら、応用力の効く知識を身につけていきましょう! 今回はまず【設問1】からです。


情報処理安全確保支援士試験 令和6年度 春期 午後 問4

【出典:情報処理安全確保支援士試験 令和6年度 春期 午後 問4(一部、加工あり)】

問4 Webアプリケーションプログラムに関する次の記述を読んで、設問に答えよ。

 A社は、加工食品の製造・販売を行う従業員500名の会社である。問屋や直販店からの注文の受付に、商品の注文と在庫を管理するシステム(以下、業務システムという)を利用している。業務システムは、A社内に設置したサーバ上に構築されている。
 このたび、販売拡大を目指して、インターネットを使ったギフト販売を行うことになり、個人顧客から注文を受けるためのWebシステム(以下、Web受注システムという)を構築することになった。
 A社はITベンダーのB社との間で開発の委託契約を締結し、両社はWeb受注システムの開発に着手した。

[Web受注システムの要件]
 Web受注システムの要件を表1に示す。


[Web受注システムの設計]
 A社とB社はWeb受注システムを設計した。
 Web受注システムのサーバで定義されるQSアカウントの一覧を表2に、所属グループとその権限を表3に示す。


 業務システムとWeb受注システムは、CSV形式のデータ連携用ファイル(以下、CSVファイルという)でデータ連携を行う。1時間ごとに業務システムのバッチサーバとWeb受注システムのバッチサーバにおいてCSVファイルを作成し、HTTPSで他方のバッチサーバに送信し、他方のバッチサーバでは受信したCSVファイルを保存する。保存したCSVファイルを使用してWeb受注システム又は業務システムのDBに対して更新処理を実行する。更新処理後のCSVファイルは、障害発生に備えて1週間保存する。
 データ連携機能のプログラム一覧を表4に示す。


 表4のうち、No.3のプログラムの内容を図1に示す。


 Web受注システムの開発が進み、結合テスト前に、A社は、設計書とソースコードのセキュリティレビューを、セキュリティ専門会社のC社に委託した。C社の情報処理安全確保支援士(登録セキスペ)のE氏は、セキュリティレビューを実施した。

[データ連携機能のセキュリティレビュー]
 E氏は、表2〜4及び図1の内容では表1の要件を満たしておらず、(a)がCSVファイルを閲覧できてしまうという問題を発見した。また、CSVファイルには重要情報が記録されるので、本番バッチサーバにアクセスできる者が不正に閲覧するリスクを軽減するための保険的対策も併せて実施することを提案した。具体的には、次のように提案した。
⑴ 問題に対しては、表2のbatchappuserについて、所属グループを(b)に変更する。
⑵ 保険的対策としては、表4のNo.3のプログラムに暗号化を行う処理を追加し、表4のNo.(c)のプログラムに復号を行う処理を追加する。

 A社は、E氏の提案どおり修正することにした。

🎯 問題の舞台設定:まずは概要をサクッと把握しよう

まずは、問題のシナリオを整理しましょう。どんなシステムで、誰が、何をするのかを把握するのが、問題を理解する第一歩です!

この設定を頭に入れた上で、早速設問を見ていきましょう!

【設問1】データ連携機能に潜むセキュリティリスクを暴け!

設問1は、システム間でデータを連携する機能のセキュリティレビューに関する問題です。レビューの結果、セキュリティ専門家のEさんは「ある問題」と「リスク軽減のための保険的対策」を提案しました。


設問1 (1)

本文中の (a) に入れる適切な字句を、解答群の中から選び、記号で答えよ。

解答群
ア システム運用担当者
イ システム運用担当者とシステム開発者
ウ システム開発者
エ システム開発者と重要情報取扱運用者
オ 重要情報取扱運用者

【解説】

この問題を解く鍵は、Linuxのファイルパーミッションにあります。E氏は「(a) がCSVファイルを閲覧できてしまう」 という問題を発見しました。これが誰なのかを特定していきましょう。

  1. CSVファイルの権限設定を確認
    本文の図1の説明には、CSVファイルに関する以下の設定が記載されています。
    • 保存場所: /var/data ディレクトリディレクトリのオーナーは batchappuser で、パーミッションは 770 。CSVファイルのオーナーは batchappuser で、パーミッションは660。
    パーミッション 770 は「オーナー(rwx)」「グループ(rwx)」「その他(—)」、660は「オーナー(rw-)」「グループ(rw-)」「その他(—)」を意味しますね。 つまり、batchappuser ユーザーと、batchappuser が所属するグループのメンバーが、このCSVファイルを読み書きできてしまいます。
  2. batchappuser の所属グループを確認
    次に、表2「OS アカウントの一覧」を見ると、batchappuser の所属グループが分かります。
    • ユーザーID: batchappuser
    • 所属グループ: operation
  3. operation グループのメンバーを特定
    では、operation グループには他に誰が所属しているのでしょうか?表2と表3を見ると、operator ユーザー(システム運用担当者が利用)が operation グループに所属していることが分かります 。

以上のことから、batchappuser と同じ operation グループに所属するシステム運用担当者は、/var/data ディレクトリにアクセスし、CSVファイルを閲覧できることが判明します。

しかし、要件では「システム運用担当者は、重要情報にアクセスしてはならない」 と定められています。注文データを含むCSVファイル は重要情報 に該当するため、これは明確な要件違反です。

したがって、(a)に当てはまるのはシステム運用担当者となります。

【解答】


設問1 (2)

本文中の(b) に入れる適切な所属グループを、表3中から選び答えよ。

【解説】

(1)の問題を解決するために、E氏は「batchappuser について、所属グループを (b) に変更する」 と提案しました。システム運用担当者がアクセスできないようにしつつ、バッチ処理は正しく実行されるようにするには、どのグループが適切でしょうか?

ここで重要になるのが 「最小権限の原則」 です。プログラムには、その役割を果たすのに必要な最小限の権限のみを与えるべきです。

表3にあるグループの役割を再確認しましょう 。

batchappuser が実行するプログラムは、重要情報を含む注文データ を扱います。そのため、重要情報へのアクセスが許可されているグループに所属させるのが最も自然で安全です。personal グループは、まさにそのためのグループです。batchappuser の所属グループを personal に変更すれば、operation グループのシステム運用担当者はアクセスできなくなり、問題が解決します。

【解答】

personal


設問1 (3)

本文中の(c) に入れる適切なプログラムを、表4中から選び、No.列の番号で答えよ。

【解説】

E氏は、保険的対策として「No.3のプログラムに暗号化を行う処理を追加し、表4のNo. (c) のプログラムに復号を行う処理を追加する」 ことを提案しました。 暗号化したデータは、利用する前に必ず復号しなければなりません。データの流れを追いかけて、どこで復号が必要になるか考えましょう。

データ連携のフロー(注文データ)

  1. 【Web受注システム側】
    • No.3 注文データCSV出力バッチ処理が、DBから注文データを取得し、CSVファイルに出力します。
      ⇒ ここでCSVファイルを暗号化します。
    • No.7 データ送信バッチ処理が、暗号化されたCSVファイルを業務システムへ送信します。
  2. 【業務システム側】
    • No.10 データ受信2バッチ処理が、暗号化されたCSVファイルを受信し、保存します。
    • No.4 注文データCSV取込みバッチ処理が、保存されたCSVファイルを読み込んで、業務システムのDBを更新します。

業務システムのDBを更新するためには、暗号化されたままのデータでは意味がありません。元の読める形式(平文)に戻す必要があります。 つまり、No.4 のプログラムがCSVファイルを読み込んだ後、DBにデータを取り込む直前のタイミングで 復号処理 を行う必要があります。

【解答】

4

まとめと、この設問から学ぶべきこと

今回の設問1は、採点講評でも「Linuxの権限設定及びセキュアコーディングについて出題した」 と述べられているように、情報セキュリティの非常に基本的ながら、極めて重要なテーマを扱っていました。

システムの設計・構築時には、今回のような「誰が」「どの情報に」「どんな権限で」アクセスできるのかを常に意識することが、堅牢なシステムを作る上で不可欠ですね!

次回は、設問2のユーザー登録機能に関するセキュアプログラミングの問題を解説していきます。Javaのコードが出てきますが、ポイントを押さえれば怖くありません!ぜひ続けてご覧ください。

モバイルバージョンを終了