Skip to the content.

まず結論

  • セキュリティテストとは、システムやアプリケーションに脆弱性や設定不備がないかを確認する活動です。
  • SG試験では、個々の手法名を丸暗記するより、「何を対象に、どのタイミングで、何を確認するのか」で切り分けることが重要です。

直感的な説明

セキュリティテストは、ソフトウェアやシステムの安全点検です。

ただし、安全点検といっても、確認方法はいろいろあります。

たとえば、建物の安全確認にたとえると、次のように分けられます。

  • 設計図を見て危ない作りがないか確認する
  • 完成した建物に入って動きを確認する
  • ドアや窓から侵入できないか試す
  • いろいろな異常操作をして壊れないか確認する
  • 点検表に沿って弱点を洗い出す

ソフトウェアでも同じです。

セキュリティテストには、ソースコードを見るもの、実行中のアプリを外から見るもの、攻撃者視点で確認するものなどがあります。

SG試験では、名前よりも、検査の目的と方法を見て判断します。

定義・仕組み

セキュリティテストは、システムやアプリケーションに脆弱性、設定不備、設計上の問題、運用上の弱点がないかを確認する活動です。

代表的な種類を整理すると、次のようになります。

種類 何をするか 判断ポイント
ソースコードレビュー 人がコードを読み、安全性や保守性を確認する 人が確認する
SAST ソースコードを実行せず、ツールで危険な実装を検出する 静的・コード・ツール
DAST 実行中のアプリを外部から検査する 動的・外部アクセス・応答確認
ファジング 問題を起こしそうなデータを大量に入力する 入力データ・異常動作
脆弱性診断 既知の脆弱性や設定不備を広く洗い出す 一覧化・危険度・修正案
ペネトレーションテスト 攻撃者視点で侵入や被害拡大を検証する 攻撃シナリオ・侵入可能性

IPAでは、Webアプリケーションの脆弱性対策や安全な実装に関する資料が公開されています。セキュリティテストの前提となる脆弱性対策を確認する場合は、IPAの安全なウェブサイトの作り方セキュア・プログラミング講座が参考になります。

大切なのは、これらの手法は競合するものではなく、目的に応じて組み合わせるものだという点です。

たとえば、開発中はSASTやソースコードレビューで早めに問題を見つけ、リリース前にはDASTや脆弱性診断で実行時の問題を確認します。

重要システムでは、さらにペネトレーションテストで攻撃シナリオとして成立するかを確認することもあります。

どんな場面で使う?

セキュリティテストは、開発中、リリース前、運用中など、さまざまな場面で使われます。

開発中に使うもの

開発中は、問題を早く見つけて修正することが重要です。

この段階では、次のような手法が向いています。

  • ソースコードレビュー
  • SAST
  • セキュアコーディングの確認

開発中に見つけた問題は、リリース直前に見つけるより修正しやすいです。

テスト・リリース前に使うもの

アプリケーションが動く状態になったら、実際の挙動を確認します。

この段階では、次のような手法が向いています。

  • DAST
  • ファジング
  • 脆弱性診断

実行中のアプリケーションに外部からアクセスし、入力に対する応答やエラー処理を確認します。

重要システムで使うもの

重要情報を扱うシステムや、攻撃されたときの影響が大きいシステムでは、より実践的な確認が必要です。

この場合は、ペネトレーションテストが使われることがあります。

ペネトレーションテストでは、攻撃者視点で侵入経路や権限昇格の可能性を確認します。

ただし、攻撃に近い操作を行うため、実施範囲や手順を事前に合意して行うことが重要です。

よくある誤解・混同

セキュリティテストでは、名前が似ている手法が多いため、SG試験でも混同しやすいです。

迷いやすい組合せ 切り分けポイント
SAST と DAST 実行しないならSAST、実行中のアプリを見るならDAST
ソースコードレビュー と SAST 人が読むならレビュー、ツールで解析するならSAST
DAST と ファジング 外部から応答を見るのがDAST、大量の入力で異常動作を見るのがファジング
脆弱性診断 と ペネトレーションテスト 広く洗い出すなら診断、攻撃成立性を見るならペネトレーションテスト
セキュアコーディング と セキュリティテスト 作る段階で防ぐのがセキュアコーディング、作ったものを確認するのがテスト

SG試験では、次の表現に注意します。

  • 「ソースコードを実行せずに解析する」
    → SASTを疑います。

  • 「実行中のWebアプリケーションに外部からアクセスする」
    → DASTを疑います。

  • 「問題を起こしそうなデータを大量に入力する」
    → ファジングです。

  • 「既知の脆弱性や設定不備を広く洗い出す」
    → 脆弱性診断です。

  • 「攻撃者の視点で侵入できるか確認する」
    → ペネトレーションテストです。

よくあるひっかけは、全部をまとめて“脆弱性を調べるもの”として覚えてしまうことです。

たしかに大きく見ると、どれも弱点を見つける活動です。

しかし、SG試験では、次の3点で切り分けると選択肢を判断しやすくなります。

  1. 実行するか、実行しないか
  2. 人が見るか、ツールで見るか
  3. 弱点を洗い出すか、攻撃として成立するかを見るか

まとめ(試験直前用)

  • セキュリティテストは、脆弱性や設定不備を見つける確認活動です。
  • SASTは、実行せずにソースコードを解析する手法です。
  • DASTは、実行中のアプリを外部から検査する手法です。
  • ファジングは、大量の入力データで異常動作を探す手法です。
  • 脆弱性診断は、弱点を広く洗い出す活動です。
  • ペネトレーションテストは、攻撃者視点で侵入可能性を検証する活動です。

確認問題

セキュリティテストの種類と説明の組合せとして、最も適切なものはどれか。

ア. SASTは、実行中のWebアプリケーションに外部からアクセスし、応答や挙動を確認する手法である。
イ. DASTは、ソースコードを実行せずに解析し、危険な実装を検出する手法である。
ウ. 脆弱性診断は、既知の脆弱性や設定不備を広く洗い出し、危険度や修正案を整理する活動である。
エ. ペネトレーションテストは、端末のセキュリティ状態を確認し、社内ネットワークへの接続可否を判定する仕組みである。

回答と解説を表示 正解は **ウ** です。 脆弱性診断は、システムやアプリケーションに存在する既知の脆弱性や設定不備を広く洗い出し、危険度や修正案を整理する活動です。 アはDASTの説明、イはSASTの説明で、両者が逆になっています。 エは検疫ネットワークに近い説明であり、ペネトレーションテストではありません。

🔗 関連記事


🏠 情報セキュリティマネジメントトップに戻る