上の表の「主な利用フェーズ」は検査対象となる機器のシステムライフサイクルの中でどのフェーズでこれらの検査が利用されるのかを示している。なお、一般的にシステムの開発フェーズは企画、要件定義、設計、実装、テスト、納入という工程からなるが、これらの工程のうち脆弱性診断関連の検査が行われるのは実装工程とテスト工程である。
ソースコードセキュリティ検査.
ソースコードセキュリティ検査は、開発中のソフトウェアのソースコードをチェックする事で、セキュリティ上の問題点を発見する検査であり、おもに実装工程で行われる。その目的は、脆弱性を引き起こしやすい関数をソースコードから抽出したり、構文解析により脆弱性であると思われる箇所を特定する事である。
検査は人間によるソースコードレビューにより行われることもあるし、何らかのツールやサービスを用いて自動的にソースコードを検査することもある。
なお、ソースコードセキュリティ検査は実装段階で混入する脆弱性を発見するものであるので、そもそもソフトウェアの設計そのものに脆弱性があってもそれを発見するのは難しい。
ソースコードセキュリティ検査と同様、ソフトウェアの設計そのものに含まれる脆弱性を発見するのは難しい。
システムセキュリティ検査.
システムセキュリティ検査は、システム上の機器に対してパッチのあたっていない脆弱性が存在しないか、不必要なポートが空いているなどの設定上の不備がないかを調べる検査である。何らかのツールやサービスを用いて主に開発時のテスト工程と運用時に行われる。なお性能の良いシステムセキュリティ検査ツールであれば、既知の脆弱性はもちろん、未知の脆弱性も発見できる。
パッシブスキャンよりもアクティブスキャンのほうがより多くの脆弱性を発見できる可能性が高いが、その分システムに負荷をあたえたり、障害の原因になったりする可能性がある。
また脆弱性スキャンはネットワークの外部から行う外部スキャンとネットワークの内部から行う内部スキャンに分類できる。外部スキャンの場合、スキャンのための通信がネットワーク境界にあるファイヤーウォールに阻まれるため、内部スキャンほど多くの情報がとれない。しかし外部スキャンは攻撃者が外部から侵入可能な入口を発見できるなど、内部スキャンとは異なった役割を果たす事ができる。