pulpul 日本の試験

システムアーキテクト 概念書 · セキュリティ

脆弱性の検査と管理

脆弱性の検査と管理とは、ソフトウェアに潜む弱点を見つけ出し、それを把握して修正や利用者への周知につなげる一連の取組みである。検査には入力を与えて挙動を観察するファジングなどがあり、管理には製品の構成部品の把握、脆弱性の識別、社内の対応体制の整備が含まれる。

脆弱性と攻撃コードの関係

脆弱性は、ソフトウェアの設計や実装上の欠陥であり、悪用されると想定外の動作を引き起こす。エクスプロイトコードは、この脆弱性を悪用するコードであり、攻撃コードとも呼ばれる。 一方で、脆弱性の存在を再現して確かめる目的で使われることもあり、使い方によっては検証に役立つ点が特徴である。

これに対して、マルウェアの特徴を記録して検知に使う定義情報、メッセージ認証コード、ワンタイムパスワードは、いずれも脆弱性を悪用するコードとは性質が異なる。 攻撃コードと認証や検知の仕組みを混同しないことが大切である。

脆弱性の識別と情報の共有

脆弱性情報を公開サイトで扱うには、個々の脆弱性を一意に識別する番号が必要である。CVE識別子は、製品に含まれる脆弱性を識別するための識別子であり、JVNなどの脆弱性情報サイトでも用いられる。 セキュリティ設定項目やセキュリティ製品の種類を表すものではなく、脆弱性の識別に限定して理解することが大切である。

検査手法としてのファジング

ファジングは、問題を引き起こしそうな多様なデータを大量にソフトウェアへ与え、異常終了や例外、予期しない挙動を監視して脆弱性を見つけ出す検査手法である。 入力データの入出力に注目し、大量かつ多様なパターンで試すことが前提になる。

他の検査や監視手法との区別

ファジングと混同されやすいのは、通信相手のポートを調べる手法である。FINパケットを送って応答を調べ、稼働中のポートやサービスを探るのはポートスキャンの一種であり、ソフトウェアに多様な入力を与える手法ではない。

また、サーバのログやコマンド履歴を調べてファイルの改ざんを見つけるのは、ログ監査や変更監視の説明であり、ファジングとは別の手法である。 通信パケットを収集し、登録済みの攻撃パターンと照合して不正アクセスを検知するのは、シグネチャ型の侵入検知であり、対象ソフトウェアに試験入力を与えるファジングとは異なる。

この節の続き

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

アプリでこの節を読む