カテゴリー
情報処理安全確保支援士

平成30年(2018)秋 情報処理安全確保支援士 午後Ⅰ

※解答はIPAのサイトを引用しておりますが、解説は独自ですので参考程度にご覧ください

    問1 ソフトウエア開発
    設問1

    (1) [a]~[d]に入れる適切な字句を記号から選んで答えよ

     答: a) キ.リターンアドレスX b) カ.ライブラリ c) ウ.テキスト  d) ア.Return-to-libc

     [a]にはキ.”リターンアドレスX”が入ります。リターンアドレスとは,呼び出した関数(Vuln)から戻って呼び出し側の処理を再開する地点を示すアドレスのことです。

     [b]にはカ.”ライブラリ”が入ります。“ライブラリ”はOSの提供する機能を呼び出すために標準搭載している関数のことで、これらの関数をライブラリ関数と呼びます。

     [c]にはウ.”テキスト”が入ります。”テキスト”領域はコンパイル(コードを機械語に翻訳)したプログラムが格納される領域です。Vuln関数のプログラムはテキスト領域にマップされます。

     [d]にはア.”Return-to-libc”が入ります。Return-to-libc攻撃とはバッファオーバーフローの脆弱性を利用し、スタック領域のリターンアドレスを別のアドレスへ書き換え、攻撃者の意図する関数を呼び出させる攻撃手法です。



    (2) [あ]に入るアドレス値を答えよ

     答:  (う).bffff29d

     Return-to-libc攻撃とはバッファオーバーフローの脆弱性を利用し、スタック領域のリターンアドレスを別のアドレスへ書き換え、攻撃者の意図する関数を呼び出させる攻撃手法です。
     正常な場合であればVuln関数が終了し、main関数へ処理が戻るべきところを、リターンアドレスXを”bffff29d”に書き換えられると、main関数へ戻らずshellコードへ処理が移ってしまいます。



    (3) 攻撃が成功しない理由を答えよ

    答: DEPによりスタック領域での実行が失敗するため

     DEP(データ実行防止機能)は、スタック領域やヒープ領域でプログラムが実行されるとプログラムを異常終了させる機能ですが、図2よりshellコードはスタック領域にあるため実行に失敗します。



    設問2

    (1) [e]、[f]に入れる字句を答えよ

     答: e) canary f) ASLR

     表1より、SSPという技術はスタック領域で”canary”と呼ばれる値を利用してスタックバッファオーバーフローの有無を確認すると説明があります。[e]には”canary”が入ります。

     ”ASLR”はデータ領域、ヒープ領域、スタック領域及びライブラリをランダムにマップするOSの技術と表1で説明があります。”ASLR”を使えばライブラリ関数のアドレスを推定することを困難にできますので、[f]には”ASLR”が入ります。



    (2) [g]に入るライブラリ関数名を答えよ

     答:  g) strcpy

     ”strcpy”は、指定したアドレスに指定した文字列をコピーするC言語のライブラリ関数の一つです。strcpyの第1引数にはコピー先のアドレス、第2引数にはコピー元のアドレスを渡します。つまり図1の7行目 strcpy(d,b)では、配列dにポインタ変数bのアドレスをコピーしています。
    このstrcpy関数にはバッファオーバーフローの危険性があり、コピー先の配列のバッファサイズを超えた過剰な書き込みが発生してしまう恐れがあります。
     この問題の回避方法として、Automatic Fortificationがあります。
     Automatic Fortificationとは、strcpy関数のような脆弱性がある関数を、書き込み可能なバッファサイズとコピー元の文字列長を事前にチェックし、安全な場合にのみコピーを行うようにするような別の安全性の高い関数に置き換え回避する機能のことです。



    設問3

    (1) Automatic Fortificationでバッファオーバーフローの原因を排除できないケースに該当する行番号とその理由を答えよ

     答: 行番号: 16 行目
    排除できない理由:ポインタを使って直接メモリ操作しているから

     行番号16 行目 while((s1[i++] = *errmsg++ ) != ‘\0’)
     *errmsgはポインタ変数です。*errmsg++でポインタ変数に加算し、whileループで配列の次の要素の番地に順次アクセスし、メモリを直接操作しています。
    Automatic Fortificationは脆弱性の原因となるような関数をコンパイル時に,別の安全性の高い同じ機能を持つ関数へと置換しますので、メモリを直接操作するコードの場合には、原因を排除できません。



    (2) 別の環境でコンパイルするとどのような問題が発生するか。また、どのような開発環境の場合か。

     答: 問題:メモリ破壊攻撃を防げないこと
     環境:SSPを適用できないコンパイラを利用する開発環境

     SSPを適用する際はアプリケーションをそれぞれソースコードからコンパイルし直す必要がありますが、開発環境のコンパイラによってはコンパイルエラーになる可能性があります。この場合、SSPの適用ができず、メモリ破壊攻撃を防ぐことができません。



    問2 セキュリティインシデント対応
    設問1 [a]~[e]に入れる適切な字句を記号から選んで答えよ

     答: a) ウ.2G b) ス.VLANタグ
      c) セ.タップ  d) エ.ARP  e) コ.STIX

     a) 全二重(Full Duplex)とは、受信と送信を同時に行なうことで、既存のケーブル上で実質2倍の伝送速度を実現する通信方式ですので、全二重で1Gbpsの1ポートの送受信を行った場合、最大”2G”bpsとなります。

     b) VLANを設定する場合は、イーサネットフレームに”ス.VLAN”タグを付与します。VLANタグを使用することで、スイッチをまたいで転送されたフレームがどのVLANに属するか識別することが可能です。

     c) “ネットワークタップ”とは、ネットワークを流れるパケットを安全、確実に取り出すための専用装置です。

     d) ARPとは、MACアドレスを宛先のIPアドレスから求めるためのプロトコルです。 宛先MACアドレスが分からない場合、送信元はIPアドレスのMACアドレスを問い合わせる”ARPリクエスト”をブロードキャストで送信します。

     e) “STIX”形式とは、サイバー攻撃によって引き起こされる問題、サイバー攻撃に対処するために取るべき措置などを防護側の側面から状況をまとめ標準化された記述形式です。



    設問2

    (1) 正常な応答がある場合とはどのようなTCPフラグの組合せか

     答:  SYN+ACK

     TCPにおいて使用されるコネクションの確立のことを3ウェイハンドシェイクといいます。

      ①送信元から宛先へコネクション確立の要求をする。
      (SYNあり/ACKなしでパケットを送信)
      ②宛先は送信元のコネクション要求を確認し応答。コネクション確立を要求。
      (SYNあり/ACKありでパケットを受信)
      ③送信元は宛先からのコネクション要求に応答。
      (SYNなし/ACKありでパケットを受信)
      *SYN・・・コネクション確立要求フラグ
      *ACK・・・確認応答フラグ

    ②で宛先からの応答がSYN+ACKの状態であれば正常な応答であると判断できます。



    (2) (a)及び(b)のスキャンが宛先IPアドレス別の件数の上位に登場しない理由をそれぞれ答えよ

     答: (a)パケットが NSM センサの監視対象外であるため
       (b)同一IPアドレスへのスキャン回数は少ないから

     L2SWに接続されているPCの感染の可能性がありますが、L2SWのネットワークはNSWと接続していませんので、パケットは監視対象外になりますので1件も登場しません。
    図3で(b)のスキャンはIPアドレスの範囲の最後までスキャンが完了したら終了しますと書いてあります。同一IPアドレスへのスキャン回数は少ないため上位には登場しません。



    設問3

    (1) ワームVに感染したと判断すべきPCを答えよ

     答: PC101,PC133,PC277,PC301,PC321,PC340

     

    表1の①~⑧のIPアドレスがG社の利用していない宛先IPアドレスへ通信を行っていました。この通信の[NAPT変換前IPアドレス]と[日時]に着目します。

     

     次に表2を確認します。先ほどの表1の①~⑧と同じIPアドレスを探し、[日時]から遡って直前の時間に使っていたPCがワームVに感染したと判断できます。
     よって解答はPC101,PC133,PC277,PC301,PC321,PC340の6つのPCになります。



    (2) 感染した複数のPCによって使われたIPアドレスを答えよ

     答: イ.192.168.0.8  オ.192.168.0.32   カ.192.168.0.44

     ワームVに感染したPCであるPC101,PC133,PC277,PC301,PC321,PC340が複数回使用しているIPアドレス(図の色つきの行のIPアドレス)が答えになります。
     よって解答は”イ.192.168.0.8″、”オ.192.168.0.32″、”カ.192.168.0.44″になります。



    設問4

    (1) チェックすべき内容を2つ挙げを答えよ

     答: ①セキュリティ修正プログラムが適用されていること
     ②マルウェア定義ファイルが更新されていること
     又は、PC がマルウェアに感染していないこと

     PCはセキュリティ修正プログラムが未適用で、かつマルウエア対策ソフトのマルウエア定義ファイルが更新されていない状態であったので感染した。と書かれています。
    よって、解答は「セキュリティ修正プログラムが適用されていること」、「マルウェア定義ファイルが更新されていること」をチェックすることの2点となります。



    (2) 同じL2SWに接続したPCへのワーム感染を防ぐ設定を述べよ

     答:  VLANを使い、PC間の通信を禁止する

     イーサネットフレームにVLANタグを付与することで、異なるVLANに属する物理ポートには、パケットが伝送されないようにすることができます。VLANを使うことにより、同一ネットワーク内にあるPC同士の感染を防ぐことができます。



    問3 ソフトウエアの脆弱性対策
    設問1 下線①を実現させるための手段を答えよ

     答:  NTP による時刻同期

     B社システムで使用している全ての機器の時刻を揃えなければ、機器によって時刻がバラバラになり、ログのイベントを時刻で並べ替えても正しく追跡することができなくなってしまいます。そこで「NTP」を使用します。「NTP」 (Network Time Protocol)とは、 ネットワークに接続されたコンピュータや機器の時刻同期に用いられるプロトコルです。時刻同期、時刻を整合させる、ときたら「NTP」サーバを使うと覚えておきましょう。



    設問2 [a]に入る字句を答えよ

     答:   CVSS

     

     CVSSとは次の3つの値で脆弱性の深刻度を評価する仕組みのことです。

     「CVSS基本値」とは、脆弱性そのものの特性を評価した値のことです。機密性、完全性、可用性に対する影響から評価するため、時間経過や環境の違いによって変化しません。ベンダや脆弱性を公表する組織などが、脆弱性の固有の深刻度を表すために評価する基準になります。


     「CVSS現状値」とは、脆弱性の現状を表すために評価した値のことです。CVSS基本値に攻撃コードの出現有無や対策情報が利用可能であるかなどを数値化した値を乗算した値のことです。この値は脆弱性への対応状況により変化します。


     「CVSS環境値」とは、ユーザの利用環境も含め、最終的な脆弱性の対処状況から深刻度を評価した値のことです。この値は、脆弱性に対して想定される脅威に応じ、ユーザ毎に変化します。また、ユーザが脆弱性への対応を決めるために評価する基準になります。


    設問3 被害拡大を防ぐためにKリーダがS君に指示した措置を答えよ

     答: Eサーバをネットワークから切り離して、待機サーバを公開する

     

     PCがウイルスに感染している可能性がある場合、同じネットワーク内の他のPCへの感染拡大を防ぐため、そのPCをネットワークから切り離します。
    その後は業務サービスが停止しないように待機サーバを公開します。



    設問4 コマンド履歴にあるSSHコマンドの接続先IPアドレスの中に外部メールサーバが含まれていた場合、何の機器でどのような調査を行う必要があるか

     答: 機器: 外部メールサーバ又はログ管理サーバ
      調査する内容:外部メールサーバからサイトZへの接続の有無を確認する

     SSHコマンドは、暗号化された通信を使ってリモート接続をするコマンドです。 外部メールサーバに接続したSSHコマンド履歴がある場合、攻撃者はEサーバから外部メールサーバに接続し、外部メールサーバ経由でサイトZへ接続した可能性があります。この場合は「外部メールサーバ又はログ管理サーバ」で、「外部メールサーバからサイトZへの接続の有無を確認する」必要があります。



    設問5

    (1) [b]に入る字句を答えよ

     答:  攻撃

     モニタリングを行い通信が攻撃であるかを判断する必要があります。もし攻撃と判断できればEサーバの停止などの措置が必要になります。



    (2) ハード型WAFを導入する場合、通販システム利用者の通信プロトコルを考慮すると必要となる機能は何か述べよ

     答: インターネットからのHTTPS通信を復号する機能

     通販システム利用者の通信プロトコルはHTTPS通信を使用していると書かれています。HTTPS通信とはSSL/TLSプロトコルにより暗号化されたHTTP通信のことです。
     WAFでは、インターネットからの通信内容を監視、検査して攻撃を遮断する機能がありますが、通信内容が暗号化されていると検査することができません。そのため、HTTPS通信を復号する機能が必要になります。



    (3) [c]に入るサーバ名、[d]に入るレコードの名称を答えよ

     答: c) 外部DNSサーバ d) CNAME

     

     「CNAME」レコードは、別名ドメインに対する正式名のドメインを指定するためのレコードです。
    クラウド型WAFを経由するように変更したため、ドメイン名がEサーバからクラウド型WAFのドメインへ変わりますが、Eサーバの別名としてクラウド型WAFのドメインを「外部DNSサーバ」の「CNAME」レコードへ定義することにより、実際の接続はクラウド型WAFでも、Eサーバのドメインと見なして運用できるようになります。