SAST(静的アプリケーションセキュリティテスト)とは?
SASTは、アプリケーションのソースコード(開発者によって書かれた元のコード)、依存関係(コードが依存する外部ライブラリやパッケージ)、またはバイナリ(実行準備が整ったコンパイル済みコード)を実行前にチェックするアプリケーションセキュリティテストの一種です。このアプローチは、コードの内部ロジックと構造を脆弱性や欠陥のために調査するため、ホワイトボックステストと呼ばれることがよくあります。これは、アプリケーションの外部からの動作だけをテストするのではなく、内部を詳しく調べることを意味します。
サイバーセキュリティにおけるSASTの重要性
コードのセキュリティ確保はDevSecOpsの重要な部分です。SASTは、SQLインジェクション、クロスサイトスクリプティング(XSS)、弱い暗号化、その他のセキュリティ問題をソフトウェア開発ライフサイクルの初期段階で発見するのに役立ちます。これにより、チームは問題をより迅速かつ低コストで修正することができます。
SASTの仕組み
- ソースコード、バイナリ、またはバイトコードを実行せずに分析します。
- コーディングプラクティスにおける脆弱性を特定します(例:バリデーションの欠如、公開されたAPIキー)。
- 開発者のワークフロー(CI/CD)に統合します。
- 発見された脆弱性に関するレポートを生成し、それらを解決するためのガイダンス(修正)を提供します。
SASTによって発見される一般的な脆弱性
- SQLインジェクション
- クロスサイトスクリプティング(XSS)
- 安全でない暗号アルゴリズムの使用(例:MD5、SHA-1)
- ハードコードされたAPIキーの資格情報の露出
- バッファオーバーフロー
- 検証エラー
SASTの利点
- コスト削減:脆弱性の問題を早期に修正することは、デプロイ後よりも費用が少ない
- 早期検出:開発中にセキュリティ問題を発見
- コンプライアンスサポート:OWASP、PCI DSS、ISO 27001などの標準に準拠
- シフトレフトセキュリティ:開発ワークフローの初期段階からセキュリティを統合
- 開発者に優しい:開発者にセキュリティ問題を修正するための実行可能なステップを提供
例
SASTテスト中に、ツールは開発者がパスワードのハッシュ化に安全でないMD5を使用しているセキュリティ問題を発見します。SASTツールはこれを脆弱性としてフラグし、MD5をbcryptまたはArgon2に置き換えることを提案します。これらはMD5よりも強力なアルゴリズムです。