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

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


ソフトウェア開発における脆弱性対策に関する次の記述を読んで、設問1~4に答えよ。

   V社は、ディジタル機器の開発及びソフトウェアの受託開発を行う、従業員数400名の企業である。昨今、ソフトウェアの重大な脆弱性が相次いで報告されているので、V社開発部のL氏は、セキュリティ専門業者S社の情報セキュリティスペシャリストのK氏から、ソフトウェア開発についてのアドバイスを受けることとした。   〔脆弱性及びその悪用〕  ソフトウェアの脆弱性の情報を組織間で一意に特定し共有できる仕組みが運用されている。例えば、脆弱性が報告されると、a識別子が付番され、日本国内ではJPCERT/CCなどが公表し注意喚起している。ただし、公表前に悪用されるものもあり、b脆弱性と呼ばれる。b脆弱性は、特定の組織を狙う攻撃、つまりc型攻撃でしばしば悪用される。  脆弱性の中でも、バッファオーバフロー脆弱性(以下、BOF脆弱性という)は、最近開発されたソフトウェアにおいても数多く報告されている。BOF脆弱性は、主に、スタックベースBOF脆弱性とヒープベースBOF脆弱性に分類される。ソフトウェアにBOF脆弱性がある場合、当該ソフトウェアへの入力によって、①開発者が想定しないメモリ領域に書き込まれ、開発者の意図しない命令が実行されることがある。  今、Linuxにおいて実行可能ファイルが四つあるとする。図1は、それらが存在するディレクトリでのlsコマンドの出力である。実行権限の属性に“s”が表示されているファイルは、ファイルの所有者権限で実行されることを示している。四つのファイルのうちは、一般利用者suzukiによって起動された場合でもroot権限で動作する。にBOF脆弱性があると、外部の攻撃者やマルウェアによって、開発者の意図しない命令がroot権限で実行されてしまう。
情報処理安全確保支援士試験(平成28年度 午後1 問02 図01)
〔ヒープベースBOF脆弱性〕  K氏によると、最近、ヒープベースBOF脆弱性を悪用する攻撃の報告が増えてきているという。L 氏は、出荷前の V社製品のソフトウェアについてヒープベースBOF脆弱性がないか、K 氏のレビューを受けることにした。  図2のプログラム Y は、起動時に、第1引数は利用者IDを、第2引数はパスワードを受け取る。このプログラム用にあらかじめ登録された“利用者IDとパスワード”の組と引数で与えられた組を比較し、利用者認証する。“利用者IDとパスワード”は、いずれも半角英数字、最小 6 文字最大 8 文字の文字列と仕様で定められている。
情報処理安全確保支援士試験(平成28年度 午後1 問02 図02)
 プログラムYにはヒープベースBOF脆弱性があり、②引数によっては、利用者認証を回避される可能性があると、L氏はK氏に指摘された。ただし、K氏によると、③このプログラムYは引数が同じでも、実行環境によっては利用者認証を回避されないとのことだった。L氏は、V社の開発した他のプログラムについても確認することとした。   〔V社の脆弱性対策〕  BOF脆弱性は、メモリを直接操作することが可能なプログラム言語CやC++などで発生する。その対策として、例えば、WindowsではハードウェアDEP(Data Execution Prevention)のようなデータ実行防止機能を適用することで、一部のBOF脆弱性を悪用する攻撃を抑制できる。しかし、④プログラムYでの利用者認証を回避する攻撃に対しては有効に機能しない。そこで、V社では、CやC++の利用が避けられない場合を除き、BOF脆弱性が起きにくい他のプログラム言語を利用することとした。一般的には、開発時に、静的解析ツールを利用したり、通常の利用では想定しないデータを入力し、その応答から脆弱性を探すd検査を行うツールを利用したりして、脆弱性を洗い出すことも効果的である。また、V社では、ソフトウェアのリリース後、脆弱性が発見された場合に備え、V社製品の利用者に更新プログラムを提供するサイトを準備することとした。

設問1

本文中のadに入れる最も適切な字句を解答群の中から選び、記号で答えよ。 解答群  ア:CVE  イ:ゼロデイ  ウ:標的  エ:ファジング

模範解答

a:ア b:イ c:ウ d:エ

解説

解答の論理構成

  1. 【問題文】には「脆弱性が報告されると、a識別子が付番され、日本国内ではJPCERT/CCなどが公表し注意喚起している。」とあります。世界共通で脆弱性を一意に識別する仕組みは “CVE(Common Vulnerabilities and Exposures)” であり、識別子は “CVE-2023-xxxx” のように付番されます。したがって a=「ア:CVE」となります。
  2. 次に「ただし、公表前に悪用されるものもあり、b脆弱性と呼ばれる。」とあります。公表(パッチ公開)前に攻撃に利用される脆弱性は “ゼロデイ脆弱性” です。よって b=「イ:ゼロデイ」です。
  3. 続けて「b脆弱性は、特定の組織を狙う攻撃、つまりc型攻撃でしばしば悪用される。」とあるため、特定組織を狙う攻撃=“標的型攻撃” と分かります。ゆえに c=「ウ:標的」です。
  4. 「…静的解析ツールを利用したり、通常の利用では想定しないデータを入力し、その応答から脆弱性を探すd検査を行うツール…」とあり、想定外データを大量に与えてバグを探す手法は “ファジング(fuzzing)” です。従って d=「エ:ファジング」となります。
よって最終解答は
a:ア b:イ c:ウ d:エ

誤りやすいポイント

  • “CVE” を “CWE” と取り違えるケースが頻出します。CWE は脆弱性の種類分類、CVE は個別脆弱性の識別子です。
  • “ゼロデイ” と “公開前” に関する記述を読み落とし、“深刻度が高い脆弱性” と誤解する受験生がいます。高リスク=ゼロデイとは限りません。
  • “標的型攻撃” を「APT」と英語表記で思い出し、選択肢にないため混乱するパターンがあります。日本語の「標的」が正解。
  • “ファジング” 検査を「動的解析」とだけ覚え、選択肢に同義語がないため迷うことがあります。ファジングは動的解析の一種ですが、キーワードは“ファジング”です。

FAQ

Q: “ゼロデイ脆弱性” と “未知の脆弱性” は同じ意味ですか?
A: ほぼ同義ですが、ゼロデイは「パッチが提供されていない段階で攻撃に利用される」というニュアンスが強調されます。単に未知であっても攻撃実績がなければゼロデイと呼ばれない場合があります。
Q: ファジング検査はバッファオーバフロー以外の脆弱性も見つけられますか?
A: はい。異常系入力への耐性を見るため、メモリ破損以外にも入力検証不備・例外処理漏れ・サービス拒否(DoS)など幅広い欠陥の発見に有効です。
Q: CVE 番号を自社の脆弱性管理台帳に登録するメリットは?
A: 社外の公開情報と自動で突き合わせられるため、脆弱性情報の重複や漏れを防ぎ、パッチ適用やリスク評価を効率化できます。

関連キーワード: CVE, ゼロデイ脆弱性、標的型攻撃、ファジング、バッファオーバフロー

設問2脆弱性を悪用する攻撃について、(1)、(2)に答えよ。

(1)本文中の下線①について、スタックベースBOF脆弱性を悪用する攻撃の場合、関数呼出し時にスタックに必ず積まれるはずの、何の値を書き換えることによって攻撃が開始されるか。20字以内で答えよ。

模範解答

呼出し元関数への戻りアドレス

解説

解答の論理構成

  1. 【問題文】では、スタックベース BOF 脆弱性について「①開発者が想定しないメモリ領域に書き込まれ、開発者の意図しない命令が実行される」と説明されています。
  2. スタック領域には、関数呼出し時に「戻り先」を示す値が必ず積まれます。
  3. 攻撃者は入力データでバッファをあふれさせ、この「戻り先」を自分の用意したアドレスに書き換えます。
  4. 関数が ret 命令を実行すると、改ざんされた値を取り出してジャンプし、意図しない命令が実行される――すなわち攻撃が開始されます。
  5. 以上より、書き換えられる値は「呼出し元関数への戻りアドレス」です。

誤りやすいポイント

  • 「ローカル変数」や「スタックポインタ」を答えてしまう。実際に制御を奪う鍵は戻りアドレスです。
  • ヒープベース BOF と混同し、malloc で確保した領域のメタデータを書き換えると誤解する。設問はスタックベース BOF について問われています。
  • 「関数ポインタ」「システムコール番号」など、スタックに常に置かれるとは限らない情報を連想してしまう。

FAQ

Q: 戻りアドレス以外を改ざんしても攻撃はできませんか?
A: できます。例としてフレームポインタや例外ハンドラのポインタを書き換える手法がありますが、基本かつ代表的なのが戻りアドレスの改ざんです。
Q: 近年はスタック実行禁止機能があると聞きました。戻りアドレスを書き換える攻撃は防げますか?
A: 実行禁止は「スタック上のコード実行」を防ぐ仕組みです。戻りアドレスを書き換えて既存のコードへ飛ぶ攻撃(ROP など)は防げないため、別の対策が必要です。
Q: C 言語を使い続ける場合、根本対策はありますか?
A: strncpy や境界チェック付きライブラリ、スタックカナリア、ASLR などを組み合わせることでリスクを大きく下げられます。

関連キーワード: バッファオーバフロー、スタック、戻りアドレス、ASLR, DEP

設問2脆弱性を悪用する攻撃について、(1)、(2)に答えよ。

(2)本文中のに入れるファイル名を全て答えよ。

模範解答

ア:sample2

解説

解答の論理構成

  1. 前提確認
    • 問題文には「実行権限の属性に“s”が表示されているファイルは、ファイルの所有者権限で実行されることを示している。」とあります。これは Unix 系 OS における set-user-ID (setuid) の説明です。
  2. 判定条件
    • さらに「四つのファイルのうちは、一般利用者suzukiによって起動された場合でもroot権限で動作する。」という記載から、に入るのは
      (a) パーミッション欄に “s” がある
      (b) 所有者が root
      を同時に満たすファイルであると分かります。
  3. 図1の読み取り
    • 図1(ls コマンド結果)を確認すると、“s” を含むファイルは 2 つありますが、所有者が root なのは sample2 だけです。
  4. 結論
    • 以上より、 に入るファイル名は「sample2」となります。

誤りやすいポイント

  • “s” が付いていれば無条件に root で動作すると早合点し、所有者欄を見落とす。所有者が root でなければ setuid で実行しても root 権限にはなりません。
  • “s” が group 権限位置に付いている setgid と混同する。設問は「root 権限で動作する」ため setuid(ユーザ側)の有無が鍵です。
  • 図1の行を数えて上から順に選ぶなど、視覚的な並び順で判断してしまう。必ず属性と所有者を両方確認する必要があります。

FAQ

Q: “s” が付いているのに root 権限にならないケースはありますか?
A: 所有者が root でない場合や、マウントオプション nosuid が指定されている場合は root 権限になりません。設問では所有者が root であるかが重要でした。
Q: setuid ビットはセキュリティ上なぜ注意が必要ですか?
A: 脆弱性を含む setuid プログラムを悪用されると、通常権限の攻撃者でも所有者権限(多くは root)で任意コードを実行できるからです。BOF 脆弱性と組み合わされることで権限昇格が容易になります。
Q: setgid と setuid の見分け方は?
A: 権限文字列の 4 文字目が小文字/大文字の s/S なら setuid、7 文字目が s/S なら setgid です。大文字は実行ビットが立っていないことも表します。

関連キーワード: setuid, 権限昇格、ファイルパーミッション、攻撃ベクトル

設問3図2のプログラムの脆弱性について、(1)〜(3)に答えよ。

(1)本文中の下線②はどのような引数で利用者認証を回避されるか。引数の組を解答群の中から選び、記号で答えよ。
情報処理安全確保支援士試験(平成28年 午後1 問2 設問03-01)

模範解答

解説

解答の論理構成

  1. バッファの上限
    【問題文 図2 line 4】には #define UID_SIZE 8、【同 line 5】には #define PASS_SIZE 8 とあります。
    さらに【同 line 20】uid = new char[UID_SIZE+1];、【同 line 21】pass = new char[PASS_SIZE+1]; とあり、uid と pass はそれぞれ9 byte(8文字+終端 \0)ずつヒープに確保されます。
  2. ヒープ上の配置とコピー処理
    通常の環境では new の呼出順にメモリが確保されるため、uid が先頭、直後に pass が並ぶ形になります。
    【同 line 23】では strcpy(uid, argv[1]); が実行されますが、strcpy には長さチェックがありません。
    ① argv[1] が9文字を超えると uid の境界を越えて書込みが続き、先頭から9 byte目以降が pass の領域を上書きします(ヒープベース BOF)。
  3. 認証処理に与える影響
    認証判定は【同 line 25】
    c if (strlen(pass) == 0 || strcmp(argv[2]、pass) != 0)
    で行われます。攻撃者が
    ・argv[1] の9~16文字目に好きな8文字を配置して pass を改ざん
    ・argv[2] に同じ8文字を与える
    ことで strlen(pass) != 0 かつ strcmp(argv[2]、pass) == 0 となり、認証を回避できます。
  4. 解答群の照合
    ・記号「ウ」の第1引数は「011(繰返し)1111111101」と示され、前半8文字を超えた位置に「11111101」が出現します。
    ・同じ「11111101」が第2引数に指定されています。
    よって「ウ」は上記②③を同時に満たし、②引数によっては、利用者認証を回避できる唯一の組合せです。

誤りやすいポイント

  • 「UID_SIZE 8」なので“8文字以内なら安全”と短絡し、\0 を含めた9 byte上限を見落とす。
  • new によるヒープ配置は実装依存とされる点(本文下線③)を忘れ、「常に pass が uid の直後」と決めつける。
  • strlen(pass)==0 だけを回避すれば良いと考え、strcmp の一致条件を意識せずに文字列長0の上書きだけを狙う。

FAQ

Q: 文字列長は9文字以上なら何でも良いのですか?
A: いいえ。9~16文字目に書き込まれる8文字が argv[2] と一致する必要があります。無関係な文字列では strcmp が不一致になり失敗します。
Q: 下線③「実行環境によっては利用者認証を回避されない」とは?
A: ヒープ確保アルゴリズムが異なる OS やライブラリでは uid と pass が離れた領域に配置される場合があります。その場合、uid を溢れさせても pass には到達せず改ざんに失敗します。
Q: DEP や ASLR を有効にすればこの攻撃も防げますか?
A: 本脆弱性はコード実行ではなくデータ改ざん型のヒープベース BOF です。本文が述べるように“ハードウェアDEP … は有効に機能しない”ため、別途入力長チェックや安全な API への置換が必要です。

関連キーワード: ヒープベースBOF, strcpy, 境界チェック、認証バイパス、NUL終端

設問3図2のプログラムの脆弱性について、(1)〜(3)に答えよ。

(2)利用者認証を回避される原因となるヒープベースBOF脆弱性の存在箇所を、実際にバッファがオーバフローするコードの行番号で答えよ。

模範解答

23

解説

解答の論理構成

  1. 図2のプログラムYでは、利用者ID用にnew char[UID_SIZE+1]で確保した領域に対し、 制限なくコピーを行うコードが存在します。
  2. そのコピーは 行番号「23」 のstrcpyで実施されます。strcpyは終端の '\0' までを無条件で転送する関数であり、長さチェックを行いません。
  3. 仕様上、IDは「最小 6 文字最大 8 文字」と定められていますが、攻撃者が 9 文字以上の値を 第1引数に渡せば、uid バッファが確保した 「UID_SIZE+1」(=9) 以上の長さとなりヒープ領域を越えて隣接メモリを書き潰します。
  4. この隣接メモリには、次行で参照されるpassポインタやメタデータが配置される可能性があり、 「②引数によっては、利用者認証を回避される可能性がある」状況が発生します。
  5. そのため、実際にバッファがオーバフローする箇所は 行番号「23」 であり、模範解答「23」と一致します。

誤りやすいポイント

  • getPass関数を疑い、行22を選んでしまう
    → あくまでコピーは行23で実施されるため、不正解になります。
  • 「最大 8 文字なので問題ない」と思い込む
    → 入力値検証は呼び出し側で一切行われておらず、仕様違反の長さでもそのままコピーされます。
  • スタックベースBOFと混同し、ヒープ領域であることを見落とす
    → newで確保しているためヒープベースBOFです。

FAQ

Q: strncpyに置き換えれば完全に安全ですか?
A: 長さを正しく指定すればBOFは防げますが、終端 '\0' 付与漏れや論理エラーが残る可能性があります。入力値検証との併用が推奨されます。
Q: 「③このプログラムYは引数が同じでも、実行環境によっては利用者認証を回避されない」とあるのはなぜですか?
A: ヒープの配置は実行環境やメモリアロケータの実装に依存します。uid と pass の物理的な並びが変われば、オーバフローが認証処理に影響しない場合もあります。

関連キーワード: ヒープオーバーフロー、strcpy, 入力値検証、メモリ確保、境界チェック

設問3図2のプログラムの脆弱性について、(1)〜(3)に答えよ。

(3)(2)で示した行番号の行を差し替えて行う改修案として適切なものを解答群の中から全て選び、記号で答えよ。
解答群  ア:memcpy(uid, argv[1], strlen(argv[1])+1);  イ:memcpy(uid, argv[1], UID_SIZE+1);  ウ:pass=newchar[PASS_SIZE+8];  エ:strncpy(uid, argv[1], strlen(argv[1])+1);  オ:strncpy(uid, argv[1], UID_SIZE+1);

模範解答

イ、オ

解説

解答の論理構成

  • 【問題文】では、利用者 ID の仕様を「“利用者 ID とパスワード”は、いずれも半角英数字、最小 6 文字最大 8 文字の文字列」と定め、ソースコード中で「#define UID_SIZE 8」と宣言しています。
  • ところが行 23 で「strcpy(uid, argv[1]);」を実行しており、argv[1] が 9 文字以上のとき「uid = new char[UID_SIZE+1];」で確保した 9 バイトを超えて書き込み、【問題文】にある②引数によっては、利用者認証を回避される可能性を生むヒープベース BOF が発生します。
  • 改修方針は「UID_SIZE+1 バイトを上限としてコピーを打ち切る」ことです。
    1. イ「memcpy(uid、argv[1]、UID_SIZE+1);」
      • コピー長を「UID_SIZE+1」で固定しているため確保領域を超えません。
    2. オ「strncpy(uid、argv[1]、UID_SIZE+1);」
      • strncpy も第 3 引数で上限を指定でき、ヒープ領域を超えない点で適切です。
  • 他の選択肢を確認します。
    ・ア、エは「strlen(argv[1])+1」で計算した長さをそのままコピーするため、9 文字以上入力すると再び BOF が起きます。
    ・ウは確保領域を「PASS_SIZE+8」に変えても uid とは無関係で、根本的な対策になりません。
  • 以上より、適切なのは「イ、オ」です。

誤りやすいポイント

  • 「memcpy にすれば安全」という思い込み。コピー長に入力文字列長を使えば strcpy と同じ危険性があります。
  • 「バッファを少し大きく取れば十分」と考え、データ仕様(最大 8 文字)を無視してしまう。
  • strncpy を使えば必ずヌル終端されると誤解し、コピー後の終端確認を怠る。

FAQ

Q: なぜ strncpy でヌル終端が保証されないのですか?
A: 第 3 引数で指定したバイト数すべてをコピーし終えてもヌル文字が到達しなかった場合、strncpy は終端文字を自動で付加しません。コピー後に uid[UID_SIZE] = '\0'; などで明示的に終端するのが安全です。
Q: memcpy と strncpy のどちらを選ぶべきですか?
A: いずれでも上限を正しく指定すれば BOF を防げます。可搬性と読みやすさを考慮し、文字列であることを明示できる strncpy を推奨する組織が多いです。
Q: これだけでヒープベース BOF は完全に防げますか?
A: いいえ。入力長の検証や終端処理、例外経路の確認など総合的な防御が必要です。静的解析やファジングも併用してください。

関連キーワード: バッファオーバフロー、strcpy, strncpy, ヒープメモリ、入力検証

設問4利用者認証の回避について、(1)、(2)に答えよ。

(1)本文中の下線③について、利用者認証が回避されない理由を、攻撃のタイミングではなく実行環境の観点で、40字以内で述べよ。

模範解答

ヒープメモリの確保方法が、メモリ確保のライブラリによって違うから

解説

解答の論理構成

  • 【問題文】では、下線部③として「このプログラムYは引数が同じでも、実行環境によっては利用者認証を回避されない」と述べています。
  • ヒープベース BOF では、攻撃者は「先に確保したバッファをあふれさせて、後から確保した重要変数を書き換える」ことを狙います。
  • ところがヒープ領域は、動的メモリ確保ライブラリ(malloc/new など)の実装や OS のバージョンによって「確保単位」「チャンクの並び順」「番兵領域の有無」が変わります。
  • そのため、同じ順序で new を呼び出しても
    ・ある環境では「uid バッファ」の直後に「pass バッファ」が並び、あふれた文字列が pass を上書きし認証回避が成立
    ・別の環境では2つのバッファの間に隙間やガード領域が入り、上書きが届かず回避が失敗
    という差が生じます。
  • よって、下線③の理由は「ヒープメモリの確保方法が、メモリ確保のライブラリによって違うから」となります。

誤りやすいポイント

  • 「攻撃タイミングの違い」と誤解し、ヒープ配置の非決定性を見落とす。
  • DEP や ASLR と混同し、「OS 保護機構が有効だから回避できない」と答えてしまう。
  • スタック BOF と同じ感覚で「関数の戻り番地が書き換えられるか否か」が決め手だと勘違いする。
  • 文字列長チェック不足ばかりに注目し、ヒープ上の物理的な配置が環境依存である事実をスルーする。

FAQ

Q: どのライブラリなら安全なのですか?
A: 多くの最新ライブラリは「番兵領域」や「ヒープカナリア」で破壊検知を行いますが、完全ではありません。設計段階で安全な API を使うことが根本対策です。
Q: DEP が効かないのはなぜ?
A: 今回の攻撃は「コード実行」ではなく「データ改竄」で条件分岐をすり抜けるタイプです。データ実行防止は無関係のため効果がありません。
Q: strncpy に置き換えれば十分?
A: 長さ制限付きコピーに替えることで今回のオーバーフローは防げますが、入力検証・バッファサイズ管理など包括的な対策が必要です。

関連キーワード: ヒープオーバーフロー、動的メモリ確保、メモリアロケータ、バッファ上書き、認証バイパス

設問4利用者認証の回避について、(1)、(2)に答えよ。

(2)本文中の下線④について、有効に機能しない理由を、30字以内で述べよ。

模範解答

ヒープ領域を書き換える行為を防止できないから

解説

解答の論理構成

  1. 本文には「WindowsではハードウェアDEP(Data Execution Prevention)のようなデータ実行防止機能を適用することで、一部のBOF脆弱性を悪用する攻撃を抑制できる。しかし、④プログラムYでの利用者認証を回避する攻撃に対しては有効に機能しない」と明記されています。
  2. DEPが防げるのは「メモリ上のデータ領域を実行不可にする」タイプの攻撃、すなわち“注入したシェルコードを実行させる”ケースです。
  3. ところがプログラムYの攻撃は、図2のuid = new char[UID_SIZE+1];で確保したヒープ領域にstrcpy(uid, argv[1]);で境界を超えて書き込み、uidやpassなどの変数内容を改変しstrcmpの結果を偽装する“認証バイパス”であり、悪用の核心は「ヒープ領域の書き換え」です。
  4. DEPは「実行」を防ぎますが「書き換え」そのものは防げません。従って本文④が示す通り、利用者認証を回避するヒープベースBOF攻撃には効果がありません。
  5. 以上より、「ヒープ領域を書き換える行為を防止できないから」という解答が導かれます。

誤りやすいポイント

  • 「DEP=BOF全般に有効」と思い込み、データ改ざん型の攻撃にも効くと勘違いする。
  • ヒープとスタックを混同し、スタック上でのコード実行阻止を理由にしてしまう。
  • ④の文脈を読まず、「OS設定が無効」など方向違いの説明を書く。

FAQ

Q: なぜヒープベースBOFではコードを実行しなくても認証を回避できるのですか?
A: 変数配置が近接しているため、長い入力で隣接ポインタやフラグを書き換え、認証結果を操作できるからです。
Q: DEP以外に有効な防御策はありますか?
A: 境界チェックの徹底、strncpy等の安全API使用、ASLRやヒープカナリア、そして静的解析・d検査(ファジング)などが挙げられます。
Q: スタックカナリアは今回の脆弱性に有効ですか?
A: スタック領域専用の保護機構なので、ヒープ領域を対象とした今回の攻撃には直接効果を期待できません。

関連キーワード: ヒープオーバフロー、Data Execution Prevention, 認証バイパス、メモリ保護、境界値チェック
戦国ITクイズ機能

\ せっかくなら /

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

クイズ画面へ遷移する

すぐに利用可能!

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

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