オープンソースSASTツール上位9選

Wiz エキスパートチーム
更新済み 公開
キーテイクアウト
  • 早期検出と低コスト

オープンソースのSASTツールは、シフトレフト(開発初期からセキュリティ対策を組み込む考え方)を進めるうえで、有力な選択肢です。コードのコンパイルや実行前の段階で脆弱性を検出でき、IDE上で確認できるツールもあります。

  • ソースコード解析による検出

DASTのように外部入力から挙動を確認する手法とは異なり、SASTはソースコードを直接解析します。これにより、脆弱性の原因となるコード箇所を特定しやすくなります。ただし、利用する言語やフレームワークに対応している必要があります。

  • 文脈を踏まえた優先順位付け

WizのネイティブSASTスキャナは、クラウドコンテキストをもとに不要なアラートを絞り込みます。そのため、本番環境で実際に到達可能な脆弱性を優先的に把握しやすくなり、開発者は重要度の高いリスクへの対応に集中できます。

  • ツールの組み合わせが重要

オープンソースのSASTツールは、それぞれ得意分野が異なります(例:GolangCI-Lintはコード品質、Gosecはセキュリティチェック)。幅広いリスクをカバーするには、コード品質ツールとセキュリティ向けプラグインを組み合わせて利用する構成が有効です。

静的アプリケーションセキュリティテスト(SAST)は、DevSecOpsワークフローにおける代表的なセキュリティテスト手法です。ソースコードや設定ファイルを実行前に解析し、開発工程の早い段階で脆弱性を検出できます。

SASTツールはコードベースのセキュリティ向上に役立ちますが、対応言語やワークフローとの相性には違いがあります。オープンソースツールを活用することで、自社環境に適した構成を評価しやすくなります。併せて、セキュアコーディングのベストプラクティスも確認しておくとよいでしょう。

本記事では、SASTを活用したコードセキュリティ対策の考え方を整理し、主要なオープンソースSASTツールの特徴(言語サポート、統合機能、レポート機能など)を紹介します。

SASTとは

静的アプリケーションセキュリティテスト(SAST)は、ソースコードや設定ファイルを実行前に解析し、セキュリティ上の問題を検出するテスト手法です。SASTツールはIDEやCI/CDパイプラインへ組み込みやすく、開発工程の早い段階で脆弱性を検出できます。コードの文脈を把握している段階で対応しやすい点も特徴です。

SASTでは、コードの実行やコンパイルを行わずに解析できるツールも多く、IDE上で開発中のコードをそのままスキャンできる場合があります。実行前に脆弱性を検出できるため、開発初期からセキュリティ対策を進めやすくなります。

重要なのは、「問題の発見が遅れるほど、修正コストが高くなりやすい」という点です。SASTは、脆弱性を早期に把握するための有効な手段として広く利用されています。

Catch code risks before you deploy

Learn how Wiz Code scans IaC, containers, and pipelines to stop misconfigurations and vulnerabilities before they hit your cloud.

Wiz がお客様の個人データをどのように取り扱うかについては、当社のプライバシーポリシーをご確認下さい: プライバシーポリシー.

SASTとDASTの違い

SASTとDASTは、どちらもアプリケーションの脆弱性を検出するための手法ですが、検査対象や実施タイミングが異なります。

動的アプリケーションセキュリティテスト(DAST)は、実行中のアプリケーションに対して疑似的な攻撃リクエストを送信し、挙動を検査します。一方、SASTはソースコードを解析するため、一般的には開発工程の早い段階で実施できます。

また、DASTはブラックボックステストとして実施されることが多く、アプリケーションの内部構造を前提としません。そのため、特定のプログラミング言語への依存が比較的小さい点も特徴です。

一方、SASTはソースコードを直接解析するため、利用する言語やフレームワークへの対応状況が重要になります。ツールによっては、対応言語が限定される場合もあります。

SASTツールの主要機能とは

SASTツールを選定する際は、検出精度だけでなく、開発ワークフローとの統合性や運用負荷も重要です。以下では、SASTツールを評価する際に確認しておきたい主な機能を紹介します。

言語・フレームワークのサポート

言語互換性は、SASTツール選定時の重要なポイントです。ツールが対象のプログラミング言語やフレームワークを解析できなければ、脆弱性を適切に検出できません。

特に、ニッチな言語や新しい言語は対応が限定される場合があります。一方、Java、C#、JavaScript、Pythonなどの主要言語には、多くの選択肢があります。

IDEおよびCI/CDパイプラインとの統合機能

SASTツールは、既存の開発ワークフローへ組み込みやすいことも重要です。多くのツールは、Visual Studio、VS Code、JetBrains製IDEなどの主要な開発環境に対応しています。

また、CLIを提供しているツールであれば、CI/CDパイプラインとの統合も比較的容易です。ただし、独自性の高い開発環境では、互換性の確認が必要になる場合があります。

精度と効率

SASTツールの検出精度や処理効率は、脆弱性データベースの品質や解析性能に左右されます。

脆弱性データベースのカバレッジが不十分な場合、既知の問題を検出できない可能性があります。また、解析処理に時間がかかるツールは、CI/CDパイプラインや開発効率へ影響を与えることがあります。

カスタマイズ性

長期間運用されているプロジェクトでは、独自ルールや既存ワークフローへの対応が求められることがあります。そのため、SASTツールが必要な設定変更やカスタマイズに対応できるかを確認しておくことが重要です。

レポートと分析

レポート機能は、脆弱性の傾向や改善状況を把握するうえで重要です。検出結果を継続的に追跡できるツールであれば、セキュリティ対策の効果を評価しやすくなります。

コンプライアンス対応

多くの企業では、業界標準や法規制への対応が求められます。SASTツールは、セキュア開発プロセスの維持や、コンプライアンス違反につながる可能性のある問題の検出を支援します。

スケーラビリティ

コードベースが拡大すると、解析対象も増加します。大規模なコードベースを扱う場合は、スキャン時間やパフォーマンスへの影響も考慮する必要があります。

オープン標準のサポート

オープン標準に対応したツールは、将来的な移行や他ツールとの連携を行いやすい点がメリットです。特定ベンダーへの依存を避けやすく、柔軟な運用につながります。

Get the Application Security Best Practices [Cheat Sheet]

This 6-page guide goes beyond basics — it’s a deep dive into advanced, practical AppSec strategies for developers, security engineers, and DevOps teams.

オープンソースSASTツールの代表例

オープンソースのSASTツールは、ライセンス費用を抑えながらコードセキュリティを強化できる選択肢として広く利用されています。

ここでは、代表的なオープンソースSASTツール9選を紹介します。

1. Mobile Security Framework

MobSFは、iOSおよびAndroid向けアプリケーションの解析に広く利用されているオープンソースツールです。モバイルプラットフォームに特化しており、Java、Kotlin、Objective-C、Swiftなどに対応しています。APK、IPA、APPXなどのバイナリやパッケージの解析にも対応しています。

また、MobSFにはDAST機能も含まれており、モバイルアプリケーションのセキュリティ評価ツールとして利用されています。

一方で、IDE連携には対応していません。

2. GolangCI-Lint

GolangCI-Lintは、複数のlinterを統合したGo向けのツールです。コード品質の問題や一部のセキュリティリスクを検出でき、GoツールチェーンやCI/CDパイプラインとの統合にも対応しています。設定項目も豊富で、大規模なコードベースでも利用しやすい点が特徴です。

図1:GolangCI-Lintの結果(出典:GolangCI-Lint)

より専門的なセキュリティチェックを行う場合は、gosecとの併用がよく利用されます。gosecでは、インジェクションリスク、脆弱な暗号利用、ハードコードされたシークレットなど、Goコードにおける代表的な脆弱性を検出できます。

両者を組み合わせることで、コード品質の確認とセキュリティ検査を補完的に実施できます。

3. PHPStan

PHPStanは、広く利用されているオープンソースのPHPコード解析ツールです。CLIツールとしてCI/CDパイプラインへ組み込みやすく、GitHub Actionsとの連携にも対応しています。

図2:PHPStanの調査結果(出典:PHPStan)

ルールの厳格度を段階的に設定できるため、既存コードベースへ段階的に導入しやすい点が特徴です。

また、PHPStan自体はPHP 7で動作しますが、古いPHPバージョン向けに書かれたコードの解析にも対応しています。

4. Semgrep

Semgrepは、複数のプログラミング言語やフレームワークに対応したオープンソースのコード解析ツールです。コミュニティルールやカスタムルールを利用することで、セキュリティ上の問題や危険なコードパターン、ポリシー違反などを検出できます。

CI/CDパイプラインや開発ワークフローとの統合にも対応しており、コードベースに合わせたルール調整も可能です。不要なアラートを抑えながら、プルリクエスト段階でコードチェックを実施できます。

5. Brakeman

Brakemanは、Ruby on Rails向けの静的解析ツールです。SQLインジェクションやクロスサイトスクリプティング(XSS)など、代表的な脆弱性を検出できます。設定ファイルの解析にも対応しており、脆弱性につながる可能性のある設定を検出できます。

CLIでは、JSON、XML、HTML形式のレポートを生成できます。CI/CDツールとの連携やブラウザでの確認にも対応しています。また、Docker環境で利用できるため、比較的導入しやすい点も特徴です。

PHPStanと同様に、警告レベルを段階的に設定できます。

6. Pyre

Pyreは、Meta(旧Facebook)が開発したPython向けの静的型チェッカーです。Pythonコードへ型情報を追加することで、大規模なコードベースにおける保守性や可読性の向上を支援します。

また、インクリメンタル解析に対応しており、プロジェクト規模が大きくなっても運用しやすい点が特徴です。

セキュリティ分析には、Pyre上に構築されたPysaとの併用が利用されます。Pysaではテイント解析を通じて、インジェクションや安全でないデシリアライゼーションなど、データフロー由来の脆弱性を検出できます。

両者を組み合わせることで、型チェックとセキュリティ分析を併用できます。

7. Bandit

Banditは、Python向けのコード解析ツールです。ハードコードされたパスワード、SQLインジェクション、安全でない関数利用など、代表的なセキュリティ上の問題を検出できます。

CLIでは詳細なレポートを生成でき、修正対応の確認にも利用できます。また、不要な検出結果を除外する設定にも対応しており、アラート疲労の軽減に役立ちます。

図3:犯行中のバンディット(出典:Medium)

レポート形式はHTMLに加え、JSON、XML、CSVなどにも対応しています。そのため、CI/CDツールとの連携や自動処理にも利用しやすい点が特徴です。

8. Psalm

Psalmは、PHP向けの静的解析ツールです。IDEと連携することで、コーディング中にリアルタイムでフィードバックを提供できます。型エラー、到達不能コード、ロジック上の問題などを検出できる点が特徴です。

また、Psalmには、検出した問題の一部を自動修正できるPsalterも含まれています。同種の問題が繰り返し発生しやすい大規模コードベースで活用されています。

9. PMD

PMDは、多言語に対応した静的解析ツールです。コード品質やパフォーマンスに関する問題に加え、一部のセキュリティリスクを検出するルールも提供しています。Maven、Gradle、CI/CDパイプラインとの統合にも対応しています。

Java向けのセキュリティ分析を強化する場合は、SpotBugsとFindSecBugsプラグインとの併用がよく利用されます。これにより、インジェクション、安全でないデシリアライゼーション、脆弱な暗号利用など、OWASP関連のリスクを検出できます。

PMDと組み合わせることで、コード品質の確認とセキュリティ分析を補完的に実施できます。

CI/CD Pipeline Security Best Practices [Cheat Sheet]

In this 13 page cheat sheet we'll cover best practices in the following areas of the CI/CD pipeline: Infrastructure security, code security, secrets management, access and authentication, monitoring and response

Wiz Native SAST:重要なリスクの優先順位付け

Wiz Codeには、開発工程の早い段階でコード上の問題を検出できるネイティブSASTスキャナが含まれています。特徴の1つは、クラウド環境のコンテキストを考慮してリスクを評価できる点です。

一般的なSASTツールは、ソースコードを解析してSQLインジェクションやクロスサイトスクリプティング(XSS)などの脆弱性を検出します。一方、Wizではcode-to-cloudコンテキストを活用し、実行環境やアクセス権限、インターネット公開状況なども踏まえてリスクを評価します。

そのため、脆弱性の有無だけでなく、実際の悪用可能性も考慮した優先順位付けを行いやすくなります。

CI/CDへのSAST統合は、チームに合わせて導入方法を選べる

Wizは、既存の開発環境や運用体制に合わせてSASTを導入できるよう設計されています。チームの技術スタックや成熟度に応じて、導入方法を選択できます。

  • クラウド環境を踏まえたリスク分析やAIによるトリアージ、修正支援を行う場合は、WizのネイティブSASTスキャナを利用できます。

  • 既存のSASTやSCAツールを継続利用したい場合は、それらの検出結果を取り込んで活用できます。

どちらの方法もCI/CDパイプラインへ統合でき、開発ライフサイクル全体を通じたセキュリティチェックに対応しています。

Wizは、インジェクション脆弱性、安全でないAPI利用、コーディング上の問題などを検出し、クラウド環境のコンテキストを踏まえてリスクを評価します。開発者はIDEやプルリクエスト上で修正ガイダンスを確認できるため、問題への対応を進めやすくなります。

また、Wiz Codeは、設定ミス、ハードコードされたシークレット、IaC、Kubernetes、クラウド環境全体に関連するリスクの検出にも対応しています。

Wiz CodeのASPMプラットフォームとSAST機能を組み合わせることで、コード上の脆弱性だけでなく、実行環境を踏まえたリスク分析や修正支援も実施できます。そのため、開発から運用までを含めた継続的なセキュリティ対策につなげやすくなります。

Wiz Security Graphで動作するネイティブSAST+AIエージェント

Wizには、ネイティブSASTスキャナとAIエージェントが組み込まれており、両者を組み合わせることで、不要なアラートを抑えながらリスク分析や修正支援を行えます。

SASTスキャナがコード解析を実施し、AIエージェントは以下の処理を支援します。

  • 根本原因にもとづいて検出結果を分類・整理する

  • サービス、言語、スキャナ間で重複する結果を統合する

  • リスク内容をわかりやすく説明する

  • 公開状況や実行環境を踏まえ、コード側とクラウド側の両面から修正案を提示する

これらの情報はWiz Security Graphによって統合的に管理されます。Wiz Security Graphは、SAST、SCA、IaC、クラウド設定、アイデンティティ情報、実行環境シグナルなどを関連付け、統一されたコンテキストを提供します。

SAST AI Agent for triaging and explaining findings in code.

単一のコンテキストで検出結果を一元管理する

Wizでは、自社ツールと外部ツールのどちらから取得した検出結果も、一元的に分析できます。プラットフォームでは、以下のような処理を行います。

  • 問題を自動的に分類・統合する

  • 脆弱性を関連するクラウドリソースやアイデンティティ情報と関連付ける

  • 攻撃経路やビジネス影響につながるリスクを優先的に可視化する

その結果、不要なアラートを減らしながら、重要なリスクへの対応を進めやすくなります。

Wiz SASTの動作を確認したい場合は、デモを通じて自社環境への適用イメージを確認できます。


関連ツールまとめ