【エスエーエスティー】

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

最終更新:
💡 動かす前のコードに「ここを確認」の付箋を貼る

プログラムを実行せずにコードを解析し、脆弱性につながる書き方やデータの流れを探すセキュリティ検査。開発中の早い段階で問題の候補を見つけられる。検出範囲はツールや設定によって異なり、報告の確認も必要。

📌 このページのポイント
SAST:動かさずにコードを点検コード利用者の入力↓SQL文へつなぐSAST入力の流れを解析問題の候補を報告人が、指摘と利用条件を確認本当に問題かを確かめ、修正する早く見つけて、確かめよう
入力からSQL文までの流れを調べる例。検出できる問題は、ツールや規則によって異なります。
ひよこ ひよこ
SASTと静的解析は、同じもの?
ペンギン先生 ペンギン先生
SASTは静的解析のうち、セキュリティに注目した検査だよ。実行しないコードを調べ、問題の候補を報告する。ツールによっては、ソースコード以外のバイナリーを解析するものもあるんだ。
ひよこ ひよこ
危ない書き方は、どう見つける?
ペンギン先生 ペンギン先生
たとえば利用者の入力をそのままSQL文につなげていたら、SQLインジェクションの原因になることがあるよ。テイント解析などで入力から処理までの流れを追い、確認すべき箇所を示すんだ。
ひよこ ひよこ
いつ使えばよいの?
ペンギン先生 ペンギン先生
コードを書くIDEや、変更を取り込む前の自動検査に組み込めるよ。問題の候補を早く見つけ、修正後にも繰り返し調べられる。ただし、対象の言語やビルド環境に対応したツールを選ぼう。
ひよこ ひよこ
報告されたら、必ず脆弱性?
ペンギン先生 ペンギン先生
実際には問題がない誤検知も、問題を報告できない見逃しもあるよ。入力の扱いや実際の利用条件を人が確認する。ツールが見ていない外部システムや設定は、コードの検査だけでは判断できないこともあるんだ。
ひよこ ひよこ
SASTだけで、安全を確認できる?
ペンギン先生 ペンギン先生
すべてを確認できるわけではないよ。設計やアクセス権のレビュー、動いているアプリを調べるDASTなども組み合わせる。得意な検査はツールや規則で違うので、SASTなら一律に何でも見つかるとは考えないでね。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「SAST」って出てきたら「コードを動かさず、危ない書き方を探す検査」と思えばだいたいOK!
📖 おまけ:英語の意味
「Static Application Security Testing」 = 静的アプリケーションセキュリティテスト
💬 Static(静的=動かさない)なApplication(アプリ)のSecurity Testing(安全性の検査)だよ。対になる言葉がDAST(動的=動かして検査)だね

参考資料

← 用語集にもどる