戦国IT - 情報処理技術者試験の過去問対策サイト
お知らせお問い合わせ料金プラン

情報処理安全確保支援士 2009年 秋期 午後102


Javaアプレットに関する次の記述を読んで、設問1~4に答えよ。

   B社は、従業員数100名の電子部品の卸業者で、メーカから商品を仕入れ、小売業者へ販売している。 B社では、2年前にリリースされたC社のソフトウェアパッケージに独自機能をもつモジュール(以下、カスタムモジュールという)を追加した在庫管理システム(以下、Xシステムという)を3か月前に導入した。その運用と保守はC社に委託している。   〔Xシステムの概要〕  Xシステムは、ソフトウェアパッケージの本体モジュールとカスタムモジュールから構成され、それらは Java を用いて実現されている。 Xシステムの利用の操作は、普段 B社従業員らがインターネットの閲覧にも用いる社内標準仕様のプラウザを用いて、クライアントPC上で行っている。  B社では、在庫管理のために、以前から携帯型のバーコード読取り端末を利用していた。読取り端末で読み取ったデータのファイルを、B社従業員がクライアントPC上で Xシステム用に編集している。 Xシステムでは、そのファイルを用いて在庫管理情報を更新している。   〔Xシステムのカスタムモジュール〕  カスタムモジュールのうち、ファイルが決められた書式であることとサイズが規定値以下であることの適合性チェック(以下、入力チェックという) 機能、入力チェック結果を利用者に通知する機能と、適合したファイルをアップロードする機能は Javaアプレット(以下、入力チェックアプレットという)で実現されており、クライアント PC 上のブラウザで実行される。また、サーバマシン上では、Xシステムとして、本体モジュールに加え、クライアント PC上の入力チェックアプレットからのファイル受信と本体モジュールへのファイル引渡しを行うモジュール(以下、ファイル受信モジュールという) があり、Javaアプレットではない Javaアプリケーションで実現されている。したがって、Xシステム全体は、入力チェックアプレット、本体モジュールとファイル受信モジュールで構成されている。 図1にXシステムの構成を示す。
情報処理安全確保支援士試験(平成21年 午後1 問2 図1)
 図2は、入力チェックアプレットの Java のクラスのソースコードである。 Xシステムでは、入力チェックアプレットとして構成するクラス群をa形式で一つにまとめ、bによって署名したa形式ファイルをサーバマシン上の特定のディレクトリに置き、ブラウザにダウンロードさせる。ここで、bは、有限体上の離散対数問題に基づく署名方式である。
情報処理安全確保支援士試験(平成21年 午後1 問2 図2)
 入力チェックアプレットが、クライアントPC上のプラウザ上で実行されると、図2中の下線 (ア)の文の処理によってボタンが作成される。 利用者がそのボタンを押すと、クライアントPCのローカルファイルを選択するダイアログボックスが図3のように表示される。次に、利用者がファイルを選択すると入力チェックが行われ、適合している場合、その旨が利用者に通知され、ファイル受信モジュールを通してアップロードされ、サーバマシン上にファイルとして保存される。 適合していない場合、その旨が通知され、読み込んだデータは破棄されアップロードされない。
情報処理安全確保支援士試験(平成21年 午後1 問2 図3)
〔サンドボックスの概要とその脆弱性の公表〕  Xシステムの導入後、Xシステムの実行環境として想定するバージョンのJRE において、サンドボックスを回避する脆弱性 (以下、当該脆弱性という)が公表され、修正された JRE の新バージョンがリリースされた。 JRE のサンドボックスと当該脆弱性の概要は次のとおりである。  Java 2 以降の JRE では、サンドボックス機構におけるd又はSecurityManager を用いて、任意のセキュリティポリシを適用できる。JRE に用意されたデフォルトのポリシファイルを用いると、Javaアプレットではない Javaアプリケーションを実行する場合と、署名された Javaアプレットを実行する場合、ローカルのコンピュータリソースにアクセスが可能である。 他方、署名がない Javaアプレットを実行する場合、そのアクセスは制限される。 例えば、クライアントPCのブラウザ上で、入力チェックアプレットのようなローカルファイルヘアクセスする Javaアプレットを、署名なし Javaアプレットとして実行した場合、dクラスによって、eがスローされる。 ところが、当該脆弱性を悪用すると、署名なし Java アプレットであっても、この制限を回避して、ローカルのコンピュータリソースにアクセスできてしまう。   〔Xシステムでの対処〕  B社は、当該脆弱性への対策に関して C社と検討を行った。 まず、①Xシステムのサーバ側とクライアント側のIRE のバージョンアップに伴う確認作業の負荷を考慮した結果、現段階では、バージョンアップに伴う作業工数の確保は難しいと判断した。しかし、②XシステムのクライアントPC の JRE をバージョンアップしない場合、クライアント PC上のブラウザで当該脆弱性が悪用される可能性がある。 そこで、③Javaアプレットを利用しない代替方式を検討したが、予定する期間内に実現することは難しいと判断した。 よって、B社は、④当該脆弱性への暫定処置として、サーバ側のJRE はバージョンアップせず、JRE の利用が Javaアプレットに限定されているクライアント側のJRE だけバージョンアップすることとした。 サーバ側のJRE のバージョンアップは、次回のシステム更新時に行うこととし、Xシステムを再稼働した。

設問1

本文中のabdeに入れる適切な字句を解答群の中から選び、記号で答えよ。 解答群  ア:AccessController  イ:DH  ウ:DSA  エ:jar  オ:java.io.IOException  カ:java.security.AccessControlException  キ:policytool  ク:RSA  ケ:xml

模範解答

a:エ b:ウ d:ア e:カ

解説

解答の論理構成

  1. a に入る語
    • 原文: 「クラス群をa形式で一つにまとめ」
    • Java では複数クラスを単一ファイルにパッケージするときに用いるのは「jar 形式」(Java ARchive) です。
    • 解答: エ「jar」
  2. b に入る語
    • 原文: 「有限体上の離散対数問題に基づく署名方式」
    • 離散対数問題を利用する代表的な電子署名方式は「DSA (Digital Signature Algorithm)」です。
    • 解答群の中で該当するのはウ「DSA」。
    • 解答: ウ「DSA」
  3. d に入る語
    • 原文: 「Java 2 以降の JRE では、サンドボックス機構におけるd又はSecurityManager を用いて」
    • Java セキュリティアーキテクチャで SecurityManager と対になるクラスは AccessController であり、ポリシによるアクセス制御を司ります。
    • 解答群のアは「Access Controller」で一致します。
    • 解答: ア「Access Controller」
  4. e に入る語
    • 原文: 「署名なし Javaアプレットとして実行した場合、dクラスによって、eがスローされる」
    • AccessController がアクセスを拒否するときに投げる例外は java.security.AccessControlException です。
    • 解答群で該当するのはカ「java.security.AccessControlException」。
    • 解答: カ「java.security.AccessControlException」

誤りやすいポイント

  • 「有限体上の離散対数問題」というキーワードから「DH」を選んでしまう
    (Diffie-Hellmanは鍵共有であり署名方式ではありません)。
  • policytool(キ) はセキュリティポリシファイルを編集する GUI ですが、 サンドボックスを「適用」する主体ではない点に注意。
  • 例外名を java.io.IOException と誤解するケース
    (I/O 例外ではなく、セキュリティ違反を示す java.security.AccessControlException が正解)。
  • WAR 形式や ZIP 形式と混同して jar を外すミス。
    WAR は Web アプリケーション用、ZIP は汎用圧縮であり文脈が異なります。

FAQ

Q: JAR ファイルと ZIP ファイルはどう違うのですか?
A: 両者は技術的には同じ圧縮フォーマットを用いますが、JAR には META-INF/ ディレクトリにマニフェストや署名情報を格納できる点と、Java 実行時にクラスパスとして扱える点が加わります。
Q: 署名付きアプレットならローカルファイルへのアクセスは完全に許可されますか?
A: デフォルトポリシでは許可されますが、企業環境では policy ファイルを強化して追加制限を掛ける運用も一般的です。
Q: AccessController と SecurityManager の役割分担は?
A: SecurityManager が「チェック」を呼び出すフロントエンド、AccessController が「権限委譲・ドメイン判定」を実施するバックエンドという位置付けです。両者が協調してサンドボックスを実現します。

関連キーワード: JAR, DSA, AccessController, サンドボックス、Javaアプレット

設問2XシステムのJavaアプレットについて、(1)、(2)に答えよ。

(1)図2中のcに入れる適切な字句を解答群の中から選び、記号で答えよ。 解答群  ア:file <=  イ:file >=  ウ:size <=  エ:size >=

模範解答

c:ウ

解説

解答の論理構成

  1. 【問題文】には
    「ファイルが決められた書式であることとサイズが規定値以下であることの適合性チェック」
    と明記されています。
    ➔ “規定値以下” なので条件式は「サイズ ≤ 上限値」になる必要があります。
  2. 図2のコードでは
    private static final long MAX_FILE_SIZE = 1000000; //読み込むことを許すファイルの最大サイズ
    と上限値を定義し、直後に
    long size = file.length();
    で実際のファイルサイズを取得しています。
  3. if 文は「読み込みを許可するファイルだけ後続処理へ進む」ための判定です。
    したがって (size <= MAX_FILE_SIZE) が正しく、解答群では
    ウ:size <= が該当します。
  4. もし file <= を選ぶと file は java.io.File 型なので比較演算子が使えずコンパイルエラー、 size >= を選ぶと “上限を超えたものだけ読み込む” という逆の意味になり仕様に反します。

誤りやすいポイント

  • 変数名を見落とし file と比較してしまう。file はオブジェクトで数値比較できません。
  • “規定値以下” を “未満” と早合点し演算子を逆にする。
  • MAX_FILE_SIZE のコメントを読まず、ファイルサイズが「最小値」だと勘違いする。

FAQ

Q: size < MAX_FILE_SIZE でも良いのでは?
A: 仕様は「サイズが規定値以下」。等号を含まないと上限ぴったりのファイルを弾いてしまいます。
Q: 比較対象に file.length() を直接書く方が簡潔では?
A: 可読性と例外処理の容易さのため、一度 size に格納してから判定する実装は一般的です。
Q: MAX_FILE_SIZE を int にしても問題ない?
A: 1,000,000 バイト程度なら int でも表現できますが、大容量対応や可搬性を考慮し long が推奨です。

関連キーワード: Javaアプレット、ファイルサイズ、バリデーション、if文、例外処理

設問2XシステムのJavaアプレットについて、(1)、(2)に答えよ。

(2)当該脆弱性のないJREを用いたXシステムにおいて、仮に署名がない入カチエックアプレットを実行する場合、図2中の下線 (ア)〜(ウ) の中で実行される文をすべて選び、記号で答えよ。 ここで、実行の際、JRE に用意されたデフォルトのポリシファイルを用いていることとする。

模範解答

(ア)

解説

解答の論理構成

  1. デフォルトポリシでの権限
    【問題文】には
    「Java 2 以降の JRE では、サンドボックス機構におけるd又はSecurityManager を用いて、任意のセキュリティポリシを適用できる。…署名がない Javaアプレットを実行する場合、そのアクセスは制限される。」
    とあります。したがって署名なしアプレットはローカルファイルへの入出力が禁止です。
  2. アプレットがローカルファイルに触れた場合の挙動
    同じく
    「クライアントPCのブラウザ上で…署名なし Javaアプレットとして実行した場合、dクラスによって、eがスローされる。」
    とあり、ファイルアクセスの直前で例外が発生して処理が中断します。
  3. 図2で下線がある3文の権限要求
    (ア) JButton loader = new JButton("ファイル読込み");
    画面部品を生成するだけでローカル資源を要求しません。よって実行可能です。
    (イ) fileData = new byte[(int)size]; の前に FileInputStream in = new FileInputStream(filePath); があり、ここでローカルファイルを開くため権限が必要です。署名がないため前項の例外が発生し実行されません。
    (ウ) errNo = inputCheck(fileData); は (イ) が成功しないと到達しません。
  4. 以上より実際に動くのは (ア) だけです。
    解答: (ア)

誤りやすいポイント

  • 「byte 配列を確保するだけだから (イ) も動く」と思い込みがちですが、実際には直前の FileInputStream が権限制限に引っ掛かります。
  • 署名の有無と JRE バージョンの話を混同し、脆弱性が無い環境なら全て動くと早合点しやすいです。
  • inputCheck はアプレット側ロジックなので安全と思って (ウ) を選びがちですが、呼び出し前に例外で処理が停止します。

FAQ

Q: 署名なしでもユーザが「実行を許可」すればファイルアクセスできますか?
A: デフォルトポリシのままでは許可できません。追加のポリシ設定か署名付き JAR が必要です。
Q: (イ) の例外は具体的に何ですか?
A: 【問題文】の記述より e、すなわち AccessControlException です。
Q: サンドボックスを回避する脆弱性が残っている場合は (イ) も通りますか?
A: はい、当該脆弱性を悪用されると署名なしでも制限を突破できるため実行できてしまいます。

関連キーワード: サンドボックス、署名なしアプレット、セキュリティポリシ、AccessControlException, ローカルファイルアクセス

設問3当該脆弱性への対策について、(1)、(2)にに答えよ。

(1)クライアントPCのJREをバージョンアップしない場合、どのようなときに、本文中の下線②で示す可能性が高まるか。 B 社のクライアントPCの利用状況を考慮し、45字以内で述べよ。

模範解答

XシステムのクライアントPC上のブラウザでインターネットのWebブラウジングを行うとき

解説

解答の論理構成

  • 【問題文】には「当該脆弱性を悪用すると、署名なし Java アプレットであっても、この制限を回避して、ローカルのコンピュータリソースにアクセスできてしまう。」とあります。脆弱性を利用する主体は“署名なし Java アプレット”であり、これは外部サイトから配布される可能性が高いです。
  • さらに「普段 B社従業員らがインターネットの閲覧にも用いる社内標準仕様のプラウザを用いて、クライアントPC上で行っている。」とあるように、在庫管理と同じブラウザで一般の Web サイトも閲覧しています。
  • したがってクライアントPC の JRE を更新しないまま外部サイトを閲覧すると、悪意のある“署名なし Java アプレット”が読み込まれ、ローカル資源に不正アクセスされるおそれが顕在化します。
  • よって「XシステムのクライアントPC上のブラウザでインターネットのWebブラウジングを行うとき」が危険度の高まる場面となります。

誤りやすいポイント

  • 「Xシステム専用ブラウザなので安全」と思い込み、社員が同一ブラウザで外部サイトを閲覧している事実を見落とす。
  • 署名付きアプレットだけが危険と誤解し、【問題文】で指摘されている“署名なし”アプレットのサンドボックス回避を軽視する。
  • 脆弱性が「サーバ側 JRE」のみ関係すると勘違いし、クライアント側で読み込むアプレット経由のリスクを評価しない。

FAQ

Q: 社内ポータルだけを閲覧する場合も危険ですか?
A: 社内ポータルが信頼できることを前提とすればリスクは低下します。しかし一度でも外部サイトに遷移する運用なら危険は残ります。
Q: 署名付きであれば脆弱性は関係ありませんか?
A: 署名付きアプレットはもともとローカルアクセスが許可されるため、今回の「署名なしアプレットが制限を回避する」という脆弱性とは直接の関係は小さいです。ただし別の脆弱性の有無までは保証できません。
Q: ブラウザの Java プラグインを無効化する方法は有効ですか?
A: 有効ですが、それでは Xシステムの「入力チェックアプレット」が動作しなくなるため、B社では採用できませんでした。

関連キーワード: サンドボックス、Javaアプレット、JRE脆弱性、署名、ローカルリソース

設問3当該脆弱性への対策について、(1)、(2)に に答えよ。

(2)本文中の下線③で示す代替方式として、HTML フォームによってファイルを選択する機能と、アップロード後にサーバへファイルを保存する機能を追加したとする。 このとき、Xシステムのサーバ側で、更にどのような機能を追加すれば代替方式となるか。 追加すべき機能を二つ挙げ、それぞれ20字以内で述べよ。

模範解答

①・入力チェック機能 ②・チェック結果を利用者へ通知する機能  ・アップロードされたファイルを消去する機能

解説

解答の論理構成

  • 【問題文】には、Javaアプレットで実現していた三つの機能として
    「ファイルが決められた書式であることとサイズが規定値以下であることの適合性チェック(以下、入力チェックという) 機能、入力チェック結果を利用者に通知する機能 と、適合したファイルをアップロードする機能」が明示されています。
  • 代替方式では「HTML フォームによってファイルを選択する機能」と「アップロード後にサーバへファイルを保存する機能」を既に追加するとあるため、アプレットが担っていた残りの機能はまだサーバ側にありません。
  • したがってサーバ側で新たに補完すべきなのは、
    1. 「入力チェック機能」そのもの
    2. 入力チェックの結果に応じた処理 ― 具体的には
      ・結果をクライアントに返して利用者へ通知すること
      ・不適合ファイルであればサーバに残さず削除すること
  • 設問は「二つ挙げよ」としているため、「チェック結果を利用者へ通知する機能」「アップロードされたファイルを消去する機能」を答とします。

誤りやすいポイント

  • 「入力チェック機能」を回答に含めてしまう
    → 問題設定では既に「アップロード後にサーバへファイルを保存する機能」を持つと述べており、チェック自体は当然行う前提と見なされやすい。設問が求めているのはチェック後の追加動作です。
  • 「保存機能」や「アップロード機能」を重複して記述する
    → 両者は題意で追加済み。回答字数を浪費して減点になります。
  • 「エラーログ出力」など副次的機能を書く
    → 必須要件ではないためポイントから外れます。

FAQ

Q: チェックが通った場合の通知は不要ですか?
A: 不要ではありません。「入力チェック結果を利用者に通知する機能」には合否の両方を含める意図があります。
Q: 不適合ファイルを残したままでもよいのでは?
A: サーバに不要データを残すとディスク枯渇や情報漏えいの温床になります。設問は安全確保の観点から「アップロードされたファイルを消去する機能」を求めています。
Q: クライアント側での JavaScript チェックではだめですか?
A: 信頼できない環境で実行されるクライアント側処理は改ざんされる恐れがあるため、最終的な整合性確認はサーバ側で行う必要があります。

関連キーワード: サーバサイド検証、ファイルアップロード、ユーザ通知、エラーハンドリング

設問4JRE のバージョンアップについて、(1)、(2)にに答えよ。

(1)本文中の下線①にある、JRE のバージョンアップに伴う確認作業とは何か。Xシステムでの作業対象を図1中の用語を用いて示し、確認作業の内容を55字以内で述べよ。

模範解答

新しいバージョンのJREで、本体モジュール、ファイル受信モジュールと入力チェックアプレットの動作確認

解説

解答の論理構成

  • 【問題文】には「Xシステム全体は、入力チェックアプレット、本体モジュールとファイル受信モジュールで構成されている。」とあります。
    → JRE を更新すれば、これら3要素が新環境でも正しく動くかを確かめる必要が生じます。
  • また ①Xシステムのサーバ側とクライアント側のIRE のバージョンアップに伴う確認作業 と明記され、バージョンアップ後の“確認”が論点であると示されています。
  • JRE は Java プログラムの実行基盤なので、アップデートにより API 仕様や内部挙動が変わるとアプリケーションが動作しなくなる恐れがあります。
    → 従って「新しいバージョンのJREで、図1の3モジュールが正常動作するか」を確かめることが確認作業の核心になります。
  • 以上を踏まえ「新しいバージョンのJREで、本体モジュール、ファイル受信モジュールと入力チェックアプレットの動作確認」という解答に導かれます。

誤りやすいポイント

  • 「JRE 自体のインストール確認」と答えてしまい、実際に動かすアプリケーション側の検証を欠いてしまう。
  • 図1にない用語(例:データベース、ブラウザ)を対象に挙げて減点される。
  • クライアントとサーバの両方で行う点を強調し過ぎ、モジュール名が抜け落ちる。

FAQ

Q: 動作確認とはテストフェーズ全体を指しますか、それとも簡易テストですか?
A: 本設問では「新しいバージョンのJREで当該3モジュールが問題なく稼働するか」を確かめる行為全般を指します。単体・結合・システムなどテスト粒度の細分は求められていません。
Q: クライアント側とサーバ側で確認内容は異なりますか?
A: 基本的には同じく“新 JRE での正常動作”を確認しますが、クライアント側は「入力チェックアプレット」、サーバ側は「本体モジュール」と「ファイル受信モジュール」が対象となる点が異なります。
Q: JRE のバージョンアップ時、その他に留意すべきセキュリティ設定はありますか?
A: サンドボックスのポリシファイルや署名の検証方式が変わる可能性があります。動作確認と併せて、アクセス権限が意図どおりかを再チェックすると安全です。

関連キーワード: Java, JRE, サンドボックス、アプレット、動作確認

設問4JRE のバージョンアップについて、(1)、(2)にに答えよ。

(2)本文中の下線④に関して、Xシステムのサーバ側のJRE をバージョンアップしなくても問題ないと判断するためには何を確認すべきか。 60 字以内で述べよ。

模範解答

解答の要点を満たしていれば正解 (解答の要点:Xシステムのサーバで利用するJREでは、当該脆弱性を要因したJavaのクラスを実行する可能性がないことについて、適切に記述していること)

解説

解答の論理構成

  • 【問題文】では「Xシステム全体は、入力チェックアプレット、本体モジュールとファイル受信モジュールで構成されている。」とあり、サーバ上で動くのは後者 2 つの Javaアプリケーションだけです。
  • 当該脆弱性は「署名なし Java アプレットであっても、この制限を回避して、ローカルのコンピュータリソースにアクセスできてしまう。」というサンドボックス回避に関するものです。
  • サーバ側ではアプレット(ブラウザ経由で読み込まれるコード)を一切実行せず、運用上ロードするのは自社が配置した「本体モジュール」「ファイル受信モジュール」だけであるなら、脆弱性を悪用できる Java クラスが入り込む余地がありません。
  • したがって「サーバ側のJREを更新しなくても問題ないか」を判断する鍵は、当該 JRE が外部から提供される未署名アプレット/クラスを実行する可能性が存在しないことを確認する点にあります。

誤りやすいポイント

  • 「アプレットではないから安全」と短絡し、将来追加される plug-in や運用スクリプトが外部クラスを動的ロードし得ることを見落とす。
  • 脆弱性がサンドボックス機構に起因するため、サーバプロセスなら無関係と思い込み、管理系 GUI などでアプレットを使用していないかを確認しない。
  • クライアントだけ更新したので十分と判断し、サーバ JRE が Web コンソールなど別用途に共有されていないかを調査し忘れる。

FAQ

Q: サーバ側 Java アプリケーションでも、サンドボックスは関係ないのでは?
A: 通常の Java アプリケーションは SecurityManager を入れない限りフル権限で動くためサンドボックス依存はありません。ただし動的に未署名コードをロードする仕組みがあれば話は別なので、そこを確認する必要があります。
Q: 署名付きアプレットなら脆弱性は問題ないのですか?
A: デフォルトポリシでは署名付きアプレットはローカルリソースにアクセスできます。したがって当該脆弱性(署名なしでも回避可能になる)が悪用できなくても、本来からしてフル権限です。
Q: サーバ JRE を後日まとめて更新する計画は妥当?
A: 外部コードを一切実行しない運用と監査で担保できるなら、暫定対応としては現実的です。ただし OS/ミドルウェアとの互換性テストを含めた更新計画は早期に立てるべきです。

関連キーワード: サンドボックス、署名なしアプレット、SecurityManager, 動的クラスロード、権限管理
戦国ITクイズ機能

\ せっかくなら /

情報処理安全確保支援士
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてプライバシーポリシー利用規約特商法表記開発者について