Skip to content
Latchkey

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まで追跡します。
  • 問題を早期に見つけますが、トリアージが必要な偽陽性を生じます。

関連ガイド