脆弱性評価とは

脆弱性評価は、特定の期間内にできるだけ多くのセキュリティ上の欠陥を特定し、重大度を割り当てるプロセスです。このプロセスには一般に、厳格度が様々に異なり、包括的なカバレッジを重視した自動および手動の技術が含まれています。リスクベースのアプローチでは、脆弱性評価の対象はさまざまなテクノロジーの層に及び、最も一般的な場合には、ホスト層、ネットワーク層、アプリケーション層が評価対象になります。

脆弱性テストは、組織がソフトウェアおよびそれを支えるインフラストラクチャの脆弱性を、セキュリティ侵害が発生する前に特定するために役立ちます。では、ソフトウェア脆弱性とは何でしょうか。

脆弱性は、以下の2通りに定義できます。

  1. 悪用されることで害をもたらす可能性がある、コードのバグやソフトウェア設計の欠陥。悪用は、認証された攻撃者または認証されていない攻撃者によって生じる可能性があります。
  2. 悪用された場合にセキュリティ違反を引き起す、セキュリティ手順のギャップや内部統制の弱点。

脆弱性評価のしくみ

脆弱性評価には、主に3つの目的があります。

  1. 重大な設計上の欠陥から単純な構成ミスに至るまでの脆弱性を特定する。
  2. 開発チームが調査結果を特定し再現しやすいように、脆弱性を文書化する。
  3. 見つかった脆弱性の修正に関して開発者を支援するためのガイダンスを作成する。

脆弱性テストはさまざまな形式を取ります。1つの方法は、動的アプリケーション・セキュリティ・テスト(DAST)です。アプリケーション(一般にはWebアプリケーション)の実行に関する動的解析テスト手法であるDASTは、入力などの故障条件をリアルタイムに検出することでセキュリティの欠陥を特定することを特に目的としています。一方、静的アプリケーション・セキュリティ・テスト(SAST)は、プログラムを実行せずに脆弱性を特定するために、アプリケーションのソースコードまたはオブジェクトコードを解析します。

2つの手法はアプリケーションに対するアプローチが全く異なります。最適な手法はソフトウェア開発ライフサイクル(SDLC)の段階によって異なり、検出する脆弱性の種類も異なります。たとえば、SASTは、SDLCの早期段階でクロスサイト・スクリプティング(XSS)やSQLインジェクションなどの重大な脆弱性を検出します。一方、DASTは、アウトサイドイン・ペネトレーション・テスト・アプローチを用いて、Webアプリケーションの実行中にセキュリティ脆弱性を特定します。

脆弱性評価のもう一つの手法として、ペネトレーション・テストにゴール指向型セキュリティ・テストを含める方法があります。敵対的アプローチ(攻撃者の方法をシミュレーションする)に重点を置いて、ペネトレーション・テストで1つ以上の特定の目標(Capture The Flag/CTFなど)を追究します。


組織で脆弱性評価が必要かどうかを確認する方法

脆弱性評価を実施し、SDLCで以前に実施したセキュリティ対策が有効であることを確認します。たとえば、開発者に対してセキュア・コーディングの適切なトレーニングを実施し、セキュリティ・アーキテクチャとソースコードのレビューを行っている組織は、こうした活動を行っていない組織よりも脆弱性数が少なくなる可能性あります。

組織がアプリケーションを開発するにしても、サードパーティ製アプリケーションを使用するにしても、脆弱性テストを毎年、あるいはアプリケーションまたはアプリケーション環境に大幅な変更を実装した後に実施することは、堅牢なセキュリティ対策を確保するために重要です。