静的解析 (SAST、静的アプリケーション・セキュリティ・テスト)

静的解析とは

静的解析(SAST、静的アプリケーション・セキュリティ・テスト)は、ソースコードを解析し、組織のアプリケーションが攻撃されやすくなるセキュリティ脆弱性を検出します。静的解析は、コードをコンパイルする前にアプリケーションをスキャンします。ホワイトボックステストとも呼ばれます。

静的解析で解決できる問題

静的解析は動作するアプリケーションやコードの実行が不要なため、ソフトウェア開発ライフサイクル(SDLC)の初期段階から実行されます。静的解析により、開発の初期段階で脆弱性を発見することで、開発を中断したり、アプリケーションの最終リリースまで脆弱性を持ち越したりすることなく問題を迅速に解決することができます。

静的解析ツールを利用することで、開発チームはコードの作成中にリアルタイムでフィードバックを受けることができるため、SDLCの次の工程にコードを引き継ぐ前に問題を修正することが可能になります。これによりセキュリティ関連の問題の考慮が後手に回らずに済みます。また、SASTツールでは、ソースコード内で発見した問題をグラフィカルに表示することもできます。これによりコードの修正が容易になります。脆弱性の具体的な個所を示し、リスクのあるコードをハイライトするツールもあります。ツールを用いることで問題の修正方法やコードの最適な修正箇所に関する詳細なガイダンスを得ることができるため、セキュリティ分野の高度な専門知識が不要です。

静的解析ツールはカスタマイズされたレポートを作成し、オフラインでエクスポートしたり、ダッシュボードを用いて追跡したりすることもできます。ツールによって報告されたセキュリティの問題のすべてを体系化された方法で追跡することにより、問題を速やかに修正し、リリース時のアプリケーションの問題を削減することが可能になります。このプロセスはセキュアSDLCの実現に有益です。

静的解析ツールはアプリケーション上で日次ビルド時、月次ビルド時、コードのチェックイン時、コードのリリース時などに定期的に実行するのが効果的です。

シノプシスの静的解析について

詳細はこちら

静的解析が重要なセキュリティ・アクティビティである理由

開発者の人数に比較してセキュリティ人材の確保は難しいケースがよくあります。アプリケーションのごく一部についてさえ、コードレビューを任せられる要員を見つけることが困難な場合もあります。静的解析ツールの最大の長所は、コードベースを100%解析できるという点です。しかも、人が手動で行うセキュア・コードレビューよりはるかに高速です。静的解析ツールは数百万行のソースコードをわずか数分でスキャンできます。また、バッファ・オーバーフローSQLインジェクションクロスサイト・スクリプティングなどの重大な脆弱性を高い精度で自動的に発見します。このように、静的解析をSDLCに統合することにより、開発したソースコードの全体的な品質に劇的な効果をもたらすことが可能です。

SASTを効果的に実行するための主なステップ

言語、フレームワーク、プラットフォームが異なる多数のアプリケーションに存在する場合、静的解析を効率的に実行するにはシンプルな6つのステップに従う必要があります。

  1. ツールを選定する。使用するプログラミング言語で開発されたアプリケーションのコードレビューを実行する機能を備えた静的解析ツールを選択します。ツールには、ソフトウェアが使用する基盤フレームワークを認識する機能も必要です。
  2. スキャン用インフラストラクチャを構築してツールをデプロイする。このステップには、ライセンス要件への対応、アクセスの制御と認証の設定、ツールのデプロイに必要なサーバーやデータベースなどのリソースの調達が含まれます。
  3. ツールをカスタマイズする。組織の要件に応じてツールを微調整します。たとえば、新しいルールの作成または既存ルールの更新により、誤検知を削減し、検出するセキュリティ脆弱性を追加するように設定することができます。ツールをビルド環境に統合して、スキャン結果を追跡するためのダッシュボードを作成したり、カスタム・レポートを作成することもできます。
  4. アプリケーションに優先順位を付けてオンボードする。ツールの準備ができたら、アプリケーションをオンボードします。アプリケーションが多い場合は、高リスクのアプリケーションを優先して最初にスキャンします。最終的にはすべてのアプリケーションをオンボードし、定期的にスキャンします。アプリケーションをスキャンするタイミングは、リリース時、日次や月次のビルド時、コードのチェックイン時などに合わせます。
  5. スキャン結果を解析する。このステップでは、スキャン結果をトリアージして誤検知を排除します。一連の課題の処理が完了したら、その問題を追跡し、デプロイ・チームに適切かつ迅速な対策を求めて引き渡します。
  6. ガバナンスとトレーニングを実施する。適切なガバナンスにより、開発チームはスキャン・ツールの適切な導入を確実に行うことができます。ソフトウェア・セキュリティのタッチポイントはSDLC内に存在する必要があり、静的解析はアプリケーションの開発およびデプロイのプロセスの一部として組み込む必要があります。

静的解析に役立つツール

シノプシスは、SDLCとサプライ・チェーンにセキュリティと品質を組み込む包括的なソリューションをご提供しています。

IDE用静的解析(Code Sight)は、リアルタイムの開発者向け静的解析ツールです。Code Sightを利用することにより、コーディング中に脆弱性をスキャンし、発見することができます。CodeSightを統合開発環境(IDE)に統合することで、セキュリティの脆弱性を発見し、その対策のためのガイダンスを得ることができます。

シノプシスの静的解析ツール(Coverity)もコーディング中に重大な不具合やセキュリティ上の弱点を検出する機能を備えています。Coverityはフルパス・カバレッジをサポートしており、すべてのコード行およびすべての潜在的な実行パスを確実にテストします。ソースコードおよび基盤のフレームワークを詳細に把握することで高精度な解析結果を提供します。このため、大量の誤検知で開発者の時間を無駄にしません。

Coverityは、千人規模の開発チームに対応し、ソースコードが1億行を超える様な大規模プロジェクトでも容易に解析することができます。Coverityは、バージョン管理システム、ビルドおよび継続的インテグレーション、バグ・トラッキング、アプリケーション・ライフサイクル・マネジメント(ALM)ソリューションや統合開発環境(IDE)など、開発プロセスをサポートする重要なツールやシステムと短時間で統合できます。

静的解析と動的解析(DAST)の違い

侵害件数の増大により、組織のアプリケーション・セキュリティへの関心が高まり、早期段階でのアプリケーション脆弱性の発見とリスクの緩和が求められるようになっています。アプリケーション・セキュリティ・テストには静的解析と動的解析(DAST、動的アプリケーション・セキュリティ・テスト)の2種類があります。どちらもセキュリティの欠陥を発見するテスト手法ですが、その方法には大きな違いがあります。

以下では、2つのテスト手法の主な違いを説明します。

SASTとDASTの比較 | Synopsys