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と比較してより強力なアルゴリズムです。
関連用語
- DAST (動的アプリケーションセキュリティテスト)
- IAST (インタラクティブアプリケーションセキュリティテスト)
- SCA (ソフトウェア構成分析)
- SSDLC
- DevSecOps