SASTとは?
SAST - static application security testing - は、ソースコードを実行せずにセキュリティの脆弱性をスキャンします。
SASTはセキュリティに特化した静的解析です。信頼できないデータがコード内をどう流れるかを追跡し、脆弱性につながるパターン - SQL injection、cross-site scripting、ハードコードされたsecret - を、アプリがデプロイされる前に早期に指摘します。
SASTの仕組み
SASTツールはコードをparseし、データフローをsource(ユーザー入力)からsink(データベースクエリ、HTMLレスポンス)まで追跡します。汚染されたデータがサニタイズされずに機密のsinkに到達すると、その経路とともに潜在的な脆弱性を報告します。
小さな例
ユーザー入力が文字列連結されたSQLクエリに流れ込むと、SASTはSQL injectionの可能性を報告し、リクエストパラメータからクエリまでの経路を示します - パラメータ化すべき正確な行を指し示します。
強みと限界
- 強み: 問題を早期に、コード内で、行レベルの位置とともに見つけます。
- 強み: アプリを実行またはデプロイする必要がありません。
- 限界: 偽陽性がよくあります - 指摘されたすべての経路が悪用可能なわけではありません。
SAST、DAST、dependency scanningの違い
SASTは自分のソースを静的に解析します。DASTは実行中のアプリを外部からテストします。dependency scanningはサードパーティのライブラリを既知のCVEについてチェックします。成熟したパイプラインは3つすべてを使います。それぞれ異なるギャップをカバーします。
CIへの組み込み
pull requestでSASTを実行し、バックログ全体ではなく新しい高深刻度の指摘をゲートにします。diffだけをスキャンすることで高速に保ち、変更が実際に導入した問題にレビュアーの焦点を絞ります。
重要なポイント
- SASTはソースコードを実行せずにセキュリティ上の欠陥をスキャンします。
- 汚染されたデータを入力源から機密のsinkまで追跡します。
- 問題を早期に見つけますが、トリアージが必要な偽陽性を生じます。
関連ガイド
What Is Static Analysis?Static analysis inspects code without running it to find bugs, smells, and risky patterns. Learn how it diffe…
What Is Dependency Scanning?Dependency scanning checks your third-party libraries against databases of known vulnerabilities. Learn how i…
What Is a Vulnerability Scan?A vulnerability scan checks your code, dependencies, or images against databases of known security flaws. Lea…