静的アプリケーション・セキュリティ・テスト(SAST)は、アプリケーションのソースコード、バイナリ、バイトコードのスキャンに利用されます。脆弱性の根本原因を特定するだけでなく、根底にあるセキュリティ上の欠陥の修正を支援し、コーディング上の問題について開発者にフィードバックを提供します。最大のメリットは、脆弱性を減らしながらより多くのコードを作成できることです。
続きを読む: キャリアアップに役立つサイバーセキュリティ資格トップ5
主要なSASTツール
ServerWatchでは多くのSASTツールを評価しました。ここでは、順不同でおすすめのツールを紹介します。
WhiteSource Software
WhiteSource Cureは、カスタムコード向けに設計されたセキュリティ自動修正アプリケーションです。開発者にセキュリティ脆弱性の修正案を提示し、脆弱なコードを修正済みの安全なコードに置き換えます。WhiteSource Cureは検出にとどまらない、修正を中心としたアプローチを採用し、開発者のセキュリティ専門家として機能することで、安全なソフトウェアのリリースを迅速化します。

主な差別化要因
- 公開プロジェクトで検出された脆弱性について、実行可能な修正案を含むカスタマイズレポートを提供
- 脆弱なコード自体に修正案を提示し、開発者のIDEでそのまま利用可能
- 開発者は提案された安全なコードを確認して承認し、ボタンをクリックするだけで修正を適用可能
- ケースに応じた修正案を提示
- 開発者のトレーニングの必要性を減らし、AppSec専門家によるセキュリティの拡張を支援
- 検出から修正までの隔たりを解消し、開発者の負担を軽減するシフトレフト型セキュリティソリューションを提供
Perforce
PerforceのSAST製品は、KlocworkとHelix QACという2つのツールで構成されています。これらのツールは、コーディング標準、セキュリティコンプライアンス、安全性コンプライアンスを開発者に網羅的に提供します。PerforceのSASTツールは、C、C++、C#、Java、JavaScript、Pythonなど、ほとんどの開発言語に対応しています。開発者は、Visual Studio CodeやIntelliJなどのIDE内でSASTツールを利用できます。

主な差別化要因
- 膨大なコードベース(数百万行のコード)をスキャン可能
- 異なる言語にまたがる分析を迅速かつ正確に実行
- 変更されたコード領域のみをスキャンする増分・差分分析により、フィードバックループを強化
- さまざまな業界向けに、MISRAやAUTOSARを含む監査用コンプライアンスレポートを生成可能
- JenkinsなどのCI/CDツールやIDEと統合でき、Dockerコンテナ内でも実行可能
- ダッシュボードでさまざまなセキュリティおよびコンプライアンス上の問題の詳細と、トレーニングや修正のためのリンクを提供
- 開発者向けトレーニングやコードセキュリティ標準の認知向上に向け、セキュリティトレーニングプラットフォームSecure Code Warriorと統合
CyberRes
CyberRes Fortifyは、静的・動的アプリケーション・セキュリティ・テスト技術に加え、ランタイムのアプリケーション監視・保護機能を備えています。開発者はSASTツールを使い、EclipseやVisual StudioなどのIDEと統合して、コーディング中にセキュリティ上の欠陥をリアルタイムで発見・修正できます。

主な差別化要因
- ゲーム感覚のトレーニングにより、安全なコードを作成する開発者の能力を支援
- オンプレミスまたはマネージドサービスとして導入でき、拡張可能なソフトウェア・セキュリティ保証プログラムを構築
- 27の主要言語とそのフレームワークに対応し、アジャイルなアップデートを提供
- SAST向けに810の脆弱性カテゴリーを備え、OWASP Top 10、CWE/SANS Top 25、DISA STIG、PCI DSSなどの標準への準拠を可能にする
- Fortify Static Code Analyzerは、ソースコード内の悪用可能なセキュリティ脆弱性を特定
- Fortify on Demandは、セキュリティテスト、脆弱性管理、専門知識、サポートを提供するサービスとしてのアプリケーション・セキュリティ
- Fortify Software Security Centerは、開発チームとのセキュリティテストを統合・自動化
SonarQube
SonarQubeは、よりクリーンで安全なコードの作成を開発者に促します。20万を超える開発チームからなるオープンソースコミュニティを擁し、数千の自動静的コード分析ルールでアプリケーションを保護します。

主な差別化要因
- バグを検出し、未定義動作がエンドユーザーに影響を及ぼすのを防止
- アプリケーションを危険にさらす脆弱性を修正し、Security Hotspotsを通じてAppSecについて学習
- Java、Python、Swift、COBOL、Apex、PHP、TS、JS、C++、C、C#などの言語に対応
- Jenkins、Azure DevOps Serverなどを含むCI/CD統合
- SonarQubeはブランチを分析し、対処すべき問題を通知可能
Spectral
SpectralOpsは、ハードコードされたシークレット、キー、設定ミスのあるコードを対象に、SDLC全体を継続的にスキャンします。複数言語に対応したAI駆動型SASTです。主な目的は、開発初期段階でハードコードされがちなシークレット(認証情報、APIキー、暗号化キーなど)の漏えいを防ぐことです。

主な差別化要因
- 露出したAPIキー、トークン、認証情報、高リスクのセキュリティ設定ミスを対象に、コード、資産、インフラを監視・分類・保護
- SpectralOpsはAIを利用して誤検知を回避
- 複数のデータソースにまたがる、公開環境の盲点、サプライチェーンのギャップ、独自コード資産を継続的に発見・監視
- 2000を超える検出機能により、データサイロを発見・分類し、発生前にデータ侵害を明らかにする
- データ侵害が発生した際、リアルタイムのSlackアラート、JIRAチケット、または任意の通知を受信
Checkmarx
Checkmarxは設定不要で、すぐに多くの言語に対応します。セキュリティ上の問題を特定し、解決策を提示します。Checkmarx SASTでは、必要に応じて高速な増分スキャンまたはフルスキャンを実行できます。

主な差別化要因
- 開発パイプラインにセキュリティ自動化を組み込む
- 最も複雑なコーディング環境にも対応
- 25以上の言語とフレームワークで柔軟なスキャンを実行し、セキュリティを拡張
- 誤検知や緊急対応を抑えながら、問題を迅速に修正
- CI/CDパイプラインの早期段階で重大な脆弱性を発見
- 未コンパイルのソースコードを自動スキャンして脆弱性を検出
- 主要なIDE、CIサーバー、ソースコード管理プラットフォームなどと統合
- カスタマイズ可能なクエリとインサイト
Veracode
SAST向けのVeracode Static Analysisは誤検知が少なく、検出した問題に対する解決策を開発者に提示します。Software-as-a-Service型のソリューションであるため、セットアップの負担が少なく、アクセス権を取得してから結果を得るまでの時間も短くて済みます。

主な差別化要因
- 5種類のアプリケーション・セキュリティ分析を、開発パイプラインに統合された1つのソリューションにまとめ、AppSecプログラムを簡素化
- 自動化されたガイダンス、ピアガイダンス、専門家によるガイダンスを通じて、開発者がAppSecプログラムを軌道に乗せるためのツールとスキルを提供
- 開発者のワークフローを中断することなく、リスクを管理し、レポート作成とコンプライアンスの要件を満たす
- 修正にかかる時間を2.5時間から15分に短縮
- ベンダー管理とレポート作成を簡素化
Reshift
Reshiftは、NodeJS専用に構築された、より専門性の高いSAST製品です。できる限り早い段階でエラーを修正することを重視しています。IDEやCI/CDパイプラインに統合することで、コードが入力された直後にテストを行います。

主な差別化要因
- Reshiftには、1ユーザー向けの無料版がある
- 10ユーザー単位の固定料金制
- 開発者のIDEと統合されるため、セキュリティ上の問題をリアルタイムで発見し、コードがマージされる前に修正
- Reshiftは中小企業向けに設計されており、セキュリティの専門知識がなくても簡単にセットアップ可能
- 安全なコードについて学びながら、コードのセキュリティを向上
続きを読む: サーバーセキュリティサービスのベスト製品
静的アプリケーション・セキュリティ・テストとは?
SASTは成熟したアプリケーション・セキュリティ・テスト手法であり、コンポーネントが停止している状態で、ソースコードを内側から分析します。自社コードと設計をスキャンし、セキュリティ脆弱性につながる可能性のある弱点を示す欠陥を検出します。
SASTは動的コードをスキャンしません。静的コードに焦点を当て、コードを実行せずに停止状態でテストします。そのため、開発のコーディング・テスト段階で利用しやすく、継続的インテグレーション(CI)サーバー、そして近年では統合開発環境(IDE)にも組み込めます。
SASTツールによるスキャンは、評価・対処すべきコーディングエラーを定義する、あらかじめ定められたルールに基づきます。こうしたスキャンは、SQLインジェクション、入力値検証、スタックバッファオーバーフローなど、一般的なセキュリティ脆弱性の特定に非常に有効です。
ただし、SASTには限界もあります。コード内の問題を見つけることには優れていますが、APIなど、コード外の領域にある脆弱性は検出できません。そのためには、動的アプリケーション・セキュリティ・テスト(DAST)と呼ばれる別のアプローチが必要です。また、その他の関連ツールとして、モバイルアプリケーション・セキュリティ・テスト(MAST)やインタラクティブ・アプリケーション・セキュリティ・テスト(IAST)もあります。
SASTとDASTの違いとは?
SAST手法は通常、開発サイクルの早期段階で、アプリケーションを内側から(ホワイトボックステストとも呼ばれます)テストするために使われます。稼働中のシステムでコード分析を実行する必要はなく、これらのツールはコードを1行ずつテストします。
一方、DASTはアプリケーションの実行中に行うブラックボックステストのアプローチで、外側から内側へと分析します。DASTはアプリケーションへの侵入を試み、脆弱性を特定します。そのテスト対象には、コード外のバグやサードパーティーインターフェース、ソースコード、バイトコード、バイナリが含まれます。通常、これによりSASTよりも分析が容易で、コストも低くなります。
ただし、DASTツールでは、コード内の弱点が存在する正確な箇所を切り分けられない場合があります。そのため、SASTとDASTの両方を組み合わせたハイブリッド分析テスト手法を採用するのが最善でしょう。