pulpul 日本の試験

応用情報技術者 概念書 · セキュリティ

機器とソフトウェアの安全対策

機器とソフトウェアの安全対策は、ソフトウェアの弱点や構成要素を管理し、機器の物理的な改ざんや解析から秘密情報を守ることを目的とする。大きくは、構成の把握と脆弱性管理、脆弱性を見つける検査手法、機器内部の情報を守る耐タンパ性の三つに分けると整理しやすい。それぞれ目的と仕組みが異なるため、用語の意味を取り違えないことが大切である。

構成の把握と脆弱性管理

SBOM(Software Bill of Materials)は、ソフトウェアを構成するコンポーネントとその依存関係を一覧にした記録である。どの部品がどのバージョンで使われているかが分かれば、その部品に既知の脆弱性がないかを照合でき、修正や回避策の判断を速められる。ソフトウェアのセキュリティ管理でSBOMが用いられるのは、この一覧によって構成を把握し、脆弱性を管理するためである。 SBOM管理ツールも同じ目的で使われ、構成要素の既知の脆弱性を特定して脆弱性管理に役立てる。

ソフトウェアのセキュリティ管理には、ほかの仕組みも関係するが、用途は分かれている。利用者アカウントを一元管理するのはID管理や認証管理の機能であり、SBOM管理ツールの用途ではない。ソースコードのバージョン管理、アクセス制御、改ざん防止はソースコード管理システムの役割である。ソースコードのバックアップやマルウェア混入の防止は、バックアップや開発環境のセキュリティ対策として扱われる。目的ごとに道具が分かれている点は、試験でも問われやすい。

脆弱性検査でのポート判定

脆弱性検査では、ホストに対してポートスキャンを行い、各ポートが開いているか閉じているかを判定する。TCP接続を試みる場合、SYNに対してRST/ACKが返ってきたときは、通常は接続が拒否されたと判断し、ポートは閉じていると扱う。反対に、SYN/ACKが返ってきたときは接続要求が受け入れられているため、ポートは開いていると判断する。判定の根拠になる応答の種類を正しく読むことが、スキャン結果を解釈する基本である。

UDPのポートを調べる場合は、UDPパケットを送信し、ICMP port unreachableというメッセージが返ってきたときに、対象ポートは閉じていると判定する。一方で、ICMP port unreachableは対象ポートが利用できないことを示す応答であるため、これを受けて開いていると判定することはできない。応答が何を意味するかを取り違えると、閉じているポートを開いていると誤認するおそれがある。

ファジングの仕組み

ファジングは、ソフトウェアのデータの入出力に注目し、問題を引き起こしそうなデータを大量に多様なパターンで入力して挙動を観察する、脆弱性検査の手法である。想定外の入力に対して異常終了などが起きれば、そこが脆弱性の候補になる。入力の種類を工夫して網羅的に与えることが、この手法の特徴である。

ファジングはソースコードを読んで解析する手法とは異なる。ソースコードを機械的に解析して脆弱性を見つけるのは静的解析などのホワイトボックス検査であり、ファジングは実際に入力を与えて実行時の挙動を見る点で区別される。また、セキュリティアドバイザリなどの既知の脆弱性情報に照らして調べる検査も、ファジングとは別の方法である。

この節の続き

ここまでが冒頭部分です。ログインすると、無料でも1日2節まで全文をお読みいただけます。

アプリでこの節を読む