@Michael648

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

情報処理安全確保支援士試験の捨て問について

情報処理安全確保支援士試験でセキュアプログラミングを捨て問にしたいと考えているので、その是非についてお伺いしたいです。

私は未経験新卒1年目で、今年の情報処理安全確保支援士試験の前期試験に受験予定なのですが、B問題でセキュアプログラミングの問があれば捨てたいと考えています。

理由として、研修で学ぶレベルのPythonの知識しか持っておらず、試験で問われるJavaやC/C++の知識を全く持っていないためです。

そのため、選択しない可能性が高いプログラミング知識に時間を割くよりも、他の分野の勉強に時間を当てたほうがいいと考えています。

そこで質問なのですが、ほぼ確実に出題されるであろうセキュアプログラミングを捨てるリスクとセキュアプログラミングに多くの時間を費やしてしまうリスク、どちらの方が重いと考えますか?

特に実際に受けたことある方のご意見、試験戦略をお伺いしたいです。

よろしくお願いいたします。

0 likes

2Answer

情報処理安全確保支援士(SC)試験におけるセキュアプログラミング(セキプロ)の「捨て問化」について、結論から申し上げます。「C/C++やJavaの言語仕様そのものを熱心に勉強する時間」は捨てるべきですが、「セキプロという大問自体を最初から全く選択肢に入れない(完全な捨て問にする)」のは非常にリスクが高いため、避けるべきです。新卒1年目(未経験)という現在の状況において、「セキプロに深入りするリスク」と「完全に捨てるリスク」のどちらが重いかと言えば、「完全に捨てるリスク」の方が圧倒的に重いと言えます。その理由と、最も効率的な試験戦略を解説します。「完全に捨てるリスク」の方が圧倒的に重い3つの理由支援士試験(特に午後、現在の科目「午後Ⅰ・午後Ⅱ」が統合された「午後試験」)において、セキプロを完全に捨てるのが危険な理由は以下の通りです。文脈理解(国語力)だけで解ける問題が半分以上を占めるセキプロの問題の多くは、「Javaの細かい文法」を問うものではありません。「仕様変更により、どこからどこへデータが流れるようになったか」「なぜこのバリデーションが必要か」など、ソースコードの前後にある「日本語の説明文」を読めば解ける問題が多発します。文法知識がなくても、Pythonの知識(変数、IF文、ループ、関数の概念)があれば、コードの処理の流れ(アルゴリズム)は十分に追えます。他の問題(インフラ・ネットワーク・クラウド)が難化した際の逃げ道がなくなる試験当日に「ネットワークや認証に関する問題(問1など)」が超難化することがよくあります。セキプロを完全に捨てていると、他の問題がどんなに難しくても、泣きながらその難問に心中せざるを得なくなります。セキュリティの根本的な脆弱性の知識は、どの問題でも問われるSQLインジェクション、XSS、ディレクトリトラバーサルなどの仕組みは、セキプロ以外の「Webサイトのセキュリティ問題」でも必ず記述式で問われます。セキプロの対策をすることは、他の大問の基礎体力をつけることと直結しています。実践的な「20%の努力で80%を取る」試験戦略「C/C++のポインタやメモリ管理、Javaの例外処理を1から学ぶ」必要はありません。以下の省エネ対策だけを行い、本番で「問題の見た目が簡単そうなら選ぶ」というスタンスを取るのが最強の戦略です。1. 過去問の「ソースコード以外の部分」だけを3年分見る過去問(特にJava問題)を数年分開いてみてください。コードの行数は多く見えますが、設問を見ると「下線部①の対策が必要な理由を、20文字以内で述べよ」といった、問題文の日本語から答えを抜き出すだけの問題が驚くほど多いことに気づくはずです。「これなら文法を知らなくても解けるな」という感覚を掴むだけで十分です。2. 「C/C++固有の脆弱性」のパターンだけ暗記するもしC/C++が出題された場合、問われるパターンはほぼ固定されています。strcpy などの関数による バッファオーバーフロー(BOF)配列の添字チェック漏れによる 境界値エラーfree() の重複による ダングリングポインタ / Double Freeこれらの単語と「原因(サイズチェックをしていないから)」というワンフレーズだけを暗記してください。これだけで、コードが読めなくても数点〜十数点をもぎ取れます。3. 本番の試験開始5分間のムーブ試験が始まったら、すべての問題に目を通します。セキプロの問題:ソースコードが短く、日本語の説明文が多い、または脆弱性の原因がすぐ見抜ける場合 → 迷わず選択する。インフラ・ネットワークの問題:設定ファイルやネットワーク構成図が複雑怪奇で、一見して意味がわからない場合 → セキプロへ逃げる。

1Like

Comments

  1. @Michael648

    Questioner

    非常に丁寧かつ具体的な試験戦略の回答ありがとうございます。

    javaなどの詳しい知識がなくても解けること、他の分野の問題でも知識を活用できることを聞き、非常に安心しました。

    問題文のソースコードを見て苦手意識が先行し飛ばしていましたが、教えてくださった戦略を参考にセキュアプログラミングに向き合って頑張っていきたいと思います。

    ご丁寧かつ詳しい回答をしていただきありがとうございました。

情報処理安全確保支援士試験では、プログラミング能力が問われる問題は出ません。
言語に特化したものは、DoSやバッファオーバーフローなどの知識と対策を理解するだけで試験対策はできます。

セキュアプログラミングというのがどの範囲を想定しているのかわかりませんが、
言語に特化しない知識は重要です。これを捨てたら合格ラインには届かないと思います。
SQLインジェクション、CSRF、XSSなど、代表的な脆弱性とその対策について理解してください。

問題の大半はネット上のサービスを行うことを想定しているので、
「安全なウェブサイトの作り方」
https://www.ipa.go.jp/security/vuln/websecurity/index.html
を理解するのは有効だと思います。

0Like

Your answer might help someone💌