SAST(静的アプリケーションセキュリティテスト)
SAST(静的アプリケーションセキュリティテスト) とは何ですか?
SAST(静的アプリケーションセキュリティテスト)ソースコード・バイトコード・バイナリを実行せずに自動解析し、インジェクションや安全でない API、弱い暗号などのセキュリティ欠陥を検出する手法。
SAST はコードを中間表現(抽象構文木、制御フローグラフ、データフローグラフ)に解析したうえで、パターンルールや汚染解析(taint analysis)を適用し、CWE 識別子に対応付けられた安全でない構造を検出します。汚染解析はその中核エンジンです。信頼できないソース(HTTP パラメーターやファイルの読み取り)を印付けし、そのデータが変数や関数呼び出しを通じてどのように伝播するかを追跡し、認識されたサニタイザーを経由せずに危険なシンク(SQL クエリ、exec、HTML レスポンス)に到達したときに検出を報告します。何も実行しないため、SAST は IDE、pre-commit フック、CI で動作し、コードがリリースされるはるか前に解析できます。
その盲点はよく知られています。SAST は決定論的なバグ(SQL インジェクション、XSS のシンク、ハードコードされた秘密情報、弱い暗号)に強い一方で、実行時には到達不能なパスに対して誤検知を生み、設定・認証ロジック・ランタイム限定の欠陥を見逃します。そのため成熟したプログラムでは SCA や DAST と併用します。ルールセットのチューニングとノイズのトリアージが、実際の運用コストです。OWASP ASVS や NIST SSDF といった標準は、静的解析を検証コントロールとして参照しています。代表的なエンジンには Semgrep、GitHub CodeQL(コードをデータベースとしてクエリする)、SonarQube、Checkmarx、Fortify、Snyk Code があります。
flowchart LR
SRC[ソースコード / バイトコード] --> P[AST + CFG + DFG に解析]
P --> T[汚染解析 + ルール]
SO[信頼できないソース] -. 追跡されるフロー .-> T
T --> SK{"サニタイザーを経ずに<br/>シンクへ到達?"}
SK -->|Yes| F[CWE に対応付けた検出]
SK -->|No| OK[アラートなし]
F --> TR[トリアージ: 修正 または 誤検知として印付け]● 例
- 01
OWASP Top 10 ルールセットを使い、プルリクエストごとに Semgrep を実行する。
- 02
GitHub CodeQL を用いて、Java サービスのパストラバーサルをマージ前に検出する。
● よくある質問
SAST(静的アプリケーションセキュリティテスト) とは何ですか?
ソースコード・バイトコード・バイナリを実行せずに自動解析し、インジェクションや安全でない API、弱い暗号などのセキュリティ欠陥を検出する手法。 サイバーセキュリティの アプリケーションセキュリティ カテゴリに属します。
SAST(静的アプリケーションセキュリティテスト) とはどういう意味ですか?
ソースコード・バイトコード・バイナリを実行せずに自動解析し、インジェクションや安全でない API、弱い暗号などのセキュリティ欠陥を検出する手法。
SAST(静的アプリケーションセキュリティテスト) からどのように防御しますか?
SAST(静的アプリケーションセキュリティテスト) に対する防御は通常、上記の定義で述べたとおり、技術的統制と運用上の実践を組み合わせます。
SAST(静的アプリケーションセキュリティテスト) の別名は何ですか?
一般的な別名: 静的解析, ホワイトボックステスト。