SASTとDASTをお探しですか?あるいは、SASTとDASTがどのようなツールなのかを理解しようとしています:主な違いは何か?どのように使い分けるのか?必要ですか?
その通りです。さっそく見ていきましょう。
その前にTL;DR:
- TL;DR: SASTはアプリの実行前にコードの脆弱性をチェックし、DASTは実行中にアプリをテストして、リアルタイムで現れる問題を見つけます。
- SASTは専門開発者があなたのコードをレビューするようなもので、DASTは侵入しようとするハッカーのようなものだ。
- この2つを同時に使用することで、セキュリティ問題を最初からデプロイまでキャッチし、アプリの安全性を確保することができる。
- 恥知らずなプラグ 😇 - SAST & DASTをお探しなら、ぜひチェックしてください。SASTとDASTをカバーすることで、ビルドに戻ることができます。
SASTとDAST:知っておくべきこと
静的アプリケーション・セキュリティ・テスト(SAST)と動的アプリケーション・セキュリティ・テスト(DAST)は、ソフトウェ アの脆弱性を特定するのに役立つ、アプリケーション・セキュリティにおける2つの重要な手法です。
SASTとは?
SAST(Static Application Security Testing:静的アプリケーション・セキュリティ・テスト)は、アプリケーションのソース コードを静的な状態、すなわち実行されていない状態で分析するテスト手法です。これは、「ホワイトボックス」テスト技法です。
SAST により、開発者はコード開発やコードレビューのような開発(SDLC)プロセスの早い段階で脆弱性を特定することができます。SAST ツールは CI/CD パイプラインや IDE に統合するのが簡単なので、コードを書いた段階でセキュアにし、リポジトリに変更をコミットする前にコードをスキャンすることができます。
SAST は、SQL インジェクション、クロスサイト・スクリプティング(XSS)、ハードコードされた認証情報などの脆弱性を検出することができます。 OWASP トップ 10 脆弱性.Aikido SASTのようなSASTツールは、あなたのコードをスキャンし、National Vulnerability Database (NVD)のような既知のセキュリティ脆弱性のデータベースと比較します。
このように考えると、SASTは専門家にあなたのコードを細かくチェックしてもらうようなもので、専門家が発見した問題点については即座にフィードバックしてくれる。
とはいえ、SASTには制限があり、設定エラーや実行時依存性のような、実行時や環境固有の脆弱性を検出するために使用することはできません。コードをスキャンするには、使用するプログラミング言語をサポートするSASTツールを選択する必要がある。
なぜSASTが重要なのか?
この早期発見は、開発者がアプリケーションをデプロイする前に問題に対処することを可能にし、問題を早期に修正することを容易にし、コストを削減するため、極めて重要である。SASTはプロアクティブなセキュリティであり、将来のために多くの時間と頭痛の種を節約することができる。

DASTとは?
DAST(Dynamic Application Security Testing)は、アプリケーションを実行中に評価するテスト手法である。
SASTはソースコードの内部を見ますが、DASTはソースコードにアクセスする必要はありません。その代わり、DASTはアウトサイダー的なアプローチでアプリケーションのセキュリティをテストします。
DAST は、ハッカーが行うようなアプリケーションへの攻撃をシミュレートします。これは「ブラックボックス」技術である。
DAST は、ウェブアプリの表面やフロントエンドをテストすることから、「サーフェスモニタリング」とも呼ばれます。DAST ツールは、ユーザインタフェースを通じてアプリケーションと対話し、様々な入力をテストし、出力を観察して、 認証の問題、サーバの設定ミス、その他の実行時の脆弱性などの脆弱性を特定します。DAST は実行時に動作するため、DAST のテストが意味を持つようになるには、動作するアプリケーションが必要です。
DASTは外部で動作し、HTTPのような標準化されたプロトコルを使用してアプリに接続するため、SASTとは異なり特定のプログラミング言語に縛られることはありません。
なぜDASTが重要なのか?
この方法は、デプロイ前に検出できない問題を検出するために重要です。DAST は、さまざまなカテゴリのエラーをカバーします。DAST は、サーバやデータベースの設定ミス、不正アクセスを許す認証や暗号化の問題、アプリケーションが接続するウェブサービスに起因するリスクなど、アプリケーションが稼働しているときに発生するリスクを特定します。
SASTとDASTの併用
SASTとDASTを併用することを推奨します。SASTとDASTを組み合わせることで、ソフトウェア開発ライフサイクル全体を幅広くカバーすることができます。早期に SAST でカバーし、後に DAST で現実的な回復力を確保する。この組み合わせにより、チームは複数の段階で脆弱性に対処することができ、最終的によりセキュアなアプリケーションにつながります。
チートシートSAST対DAST
テストのアプローチ:
- SAST:ホワイトボックス(インサイド・アウト)テスト。実行中のアプリケーションを必要とせず、"専門家の開発者のように "作業できる。
- DAST:ブラックボックス(アウトサイド・イン)テスト。実行中のアプリケーションを必要とし、"ハッカーのように "テストする。
コードへのアクセス
- SAST:ソースコードへのアクセスが必要です。
- DAST:ソースコードへのアクセスは必要ありません。
ソフトウェア開発ライフサイクル(SDLC)でいつ使うか:
- SAST:SDLC の早い段階で使用する。CI/CDとIDEに統合して、コードを書きながらセキュアにする。
- DAST:SDLC の後半、プリプロダクションとプロダクションのフェーズで使用される。
検出された脆弱性の種類
- SAST:SQL インジェクション、クロスサイト・スクリプティング(XSS)、ハードコードされた認証情報など、ソースコードのセキュリティ問題を検出します。
- DAST:設定ミスなど、実行時や環境に関連する脆弱性を検出する。
主な利点
- SAST:脆弱性を早期に発見し、修復を容易にすることで、時間とコストを削減します。
- DAST:実際の攻撃者と同じようにアプリケーションの動作をテストし、より広範な攻撃対象領域をカバーし、さまざまなカテゴリのエラー(設定の問題など)を検出し、偽陽性を低く抑えます。
主な制限事項
- SAST:言語やプラットフォームに依存し、誤検出をする可能性があり、実行時や環境に関連する問題を発見できない。
- DAST:脆弱性の原因を正確に突き止めることができない、実行中のアプリケーションが必要、脆弱性の修正にはこの段階でよりコストがかかる。
人気のオープンソースツール:
- SAST:セムグレップ、バンディット、ゴセック。
- DAST:ZAP、核。