セキュリティ
SAST(静的アプリケーションセキュリティテスト)とは?

アプリケーションソフト(以下、アプリケーション)のセキュリティ対策として、SAST(Static Application Security Testing)という手法をご存じでしょうか。SASTは開発の早い段階から、セキュリティ脆弱性を検出できる有効な手段として注目されています。
この記事では、SASTの概要から仕組みや他のセキュリティテストとの比較、メリット・デメリットについて解説します。
SASTとは?
SAST(Static Application Security Testing:静的アプリケーションセキュリティテスト)とは、ソースコードやバイトコード、バイナリコードを分析し、セキュリティの脆弱性を検出するテスト方法です。アプリケーションを実行せず、静的にコードを解析することで、SQLインジェクションやバッファオーバーフローなどの脆弱性を自動的に発見します。
SASTは開発の早期段階から適用できるため、脆弱性を早期に検出・修正することで、開発コストの削減やセキュリティ品質の向上につなげられます。
SQLインジェクションについては、以下の記事で詳しく解説しています。
→「SQLインジェクションとは? 仕組みや企業に必要な対策など」
SASTの仕組み
SASTツールは、ソースコードのパターンや制御フロー、データフローを分析し、事前に定義されたルールに基づいてセキュリティの脆弱性を特定します。主な流れは次のとおりです。
- ソースコードやバイトコード、バイナリをスキャン
- アプリケーション、コード、データフローのモデルを作成
- 定義済みのルールを適用し、脆弱性のパターンを検出
- 検出された脆弱性の詳細(ファイル名、行番号など)をレポート
これらはコードを実行することなく行われます。そのため、開発の初期段階から継続的にテストを実施できるのです。
SASTと他のセキュリティテスト手法との比較
SASTと似た名前のテスト手法として「DAST」や「SCA」が挙げられます。これらとの違いを見ていきましょう。
SASTとDASTの違い
DAST(動的アプリケーションセキュリティテスト)とは、実行中のアプリケーションにさまざまな入力を与えて脆弱性を検出する手法です。SASTがコードを静的に解析するものであるのに対し、DASTは動的にアプリケーションの挙動をテストする点が異なります。
SASTとDASTの違いについては、以下の記事で詳しく解説しているため併せてご覧ください。
→「DASTとは? 必要性やSASTとの違いなど」
SASTとSCAの違い
SCA(ソフトウェア構成分析)とは、アプリケーションに含まれるオープンソースのパッケージを調べるためのツールです。利用されているオープンソースのパッケージが分かれば、関連する脆弱性のデータとひもづけてアプリケーションに内在する脆弱性を見つけられます。SASTとSCAはともにコードベースの脆弱性を見つけるために用いられますが、SASTは自社開発のコード、SCAはオープンソース(サードパーティ製のコード)を提唱とする点が異なります。SASTとSCAを組み合わせて利用することで、アプリケーション全体のリスクを統合的に管理できるようになるでしょう。
SASTのメリット・デメリット
SASTを利用する際には、メリットとデメリットの両方をしっかりと理解することが重要です。ここでは、メリット・デメリットについて簡単にまとめて解説します。
メリット
SASTの主なメリットとしては、次のようなものが挙げられます。
- 開発の早い段階からセキュリティテストを実施できる
- コーディングの品質向上とセキュアなプログラミングの学習に役立つ
- 脆弱性の正確な位置を特定できる
- 網羅的にコードの脆弱性をテストできる
最大のメリットは、開発の早い段階からセキュリティテストを実施できる点です。脆弱性を早期に検出・修正できるようになることで、開発コストの削減やセキュリティ品質の向上につながります。また、コーディングの品質向上・セキュアなプログラミング学習にも役立つでしょう。
次に、SASTはソースコード上で動作するため、脆弱性の正確な位置を特定できる点も大きなメリットの一つです。コードのどの部分が問題であるのかが分かりやすく、検索や修正を効率的に行えます。さらに、網羅的にコードの脆弱性をテストできるため、開発者が気づかなかった脆弱性も発見できる可能性があります。
デメリットや注意点
一方で、SASTには次に挙げるようなデメリットや注意点も存在します。
- 言語やフレームワークに依存するため、対応範囲が限られる
- 誤検知(偽陽性)が多く発生する可能性がある
- ビジネスロジックや設定ミスに起因する脆弱性は検出できない
- 動的な挙動をテストできないため、DASTなど他の手法と組み合わせる必要がある
SASTはソースコードなどを対象とすることから、プログラミング言語やフレームワークに依存するため、対応範囲が限られます。また、誤検知(偽陽性)が多く発生する可能性があり、開発者が警告を選別することに時間と労力がかかってしまう懸念がある点もデメリットの一つです。
さらに、SASTではビジネスロジックや設定ミスに起因する脆弱性は検出できません。動的な挙動をテストすることもできないため、DASTなど他の手法を組み合わせた全体的なテストも必要になります。
SASTのメリット・デメリットを理解した上で導入しましょう
SASTは開発初期からセキュリティ品質を高められる強力なテスト手法ですが、万能ではありません。あくまでも脆弱性を見つけるための手法の一つとして、メリット・デメリットをよく理解してDASTやSCAなどの他の手法とも組み合わせて活用していきましょう。
SASTツールの導入にあたっては、自社の開発環境に適したツール選定や、開発プロセスへの効果的な組み込みが求められます。セキュリティ診断のプロフェッショナルによるサポートを受けることで、SASTをより有効活用できるようになるでしょう。日立ソリューションズ・クリエイトでは、ホワイトハットハッカーによるセキュリティ診断サービスを提供しています。「自社サービスやシステムのセキュリティを第三者視点で診断したい」と考えられている場合には、ぜひ一度お問い合わせください。