動的コード分析とは何ですか?
組織は、ソフトウェア内の悪用可能な脆弱性を特定するために、いくつかの方法論を適用しています。 たとえば、静的コード分析は、ソースコードのセキュリティ問題を特定するのに役立つホワイトボックステストの一種です。 一方、動的コード分析は、ソフトウェアチームが実行中のアプリケーションをスキャンして脆弱性を特定できるようにするブラックボックス 脆弱性スキャン の一種です。
動的コード分析を適切に実装すると、本番インシデントの平均識別時間(MTTI)を短縮し、アプリケーションの問題の可視性を向上させ、プロジェクト全体のセキュリティ体制を向上させることができます。 ここでは、動的コード分析について詳しく見ていきます。
動的コード分析とは何ですか?
動的コード分析は、動的アプリケーション・セキュリティ・テスト(DAST)とも呼ばれ、実行中のアプリケーションに悪用される可能性のある脆弱性がないかテストするように設計されています。 DASTツールは、コンパイル時と実行時の両方の脆弱性(現実的な実行環境内でのみ発生する構成エラーなど)を特定します。
DASTツールは、既知の脆弱性と悪意のある入力の辞書を使用して、アプリケーションを「ファジング」します。 これらの潜在的に悪意のある入力の例には、次のものがあります。
- SQL クエリ (SQL インジェクションの脆弱性を特定するため)
- 長い入力文字列 (バッファオーバーフローの脆弱性を悪用するため)
- 負の数と大きな正の数 (整数のオーバーフローとアンダーフローの脆弱性を検出するため)
- 予期しない入力データ (開発者による無効な仮定を悪用するため)
アプリケーションが実行されると、これらの潜在的に悪意のある入力が攻撃され、DASTツールがアプリケーションからの応答を分析します。 アプリケーションが入力に対して否定的な応答 (クラッシュ、無効な応答を返すなど) をした場合、DAST ツールは特定された脆弱性を記録します。
DASTツールは実行中のアプリケーション上で実行されるため、さまざまな潜在的な脆弱性を検出できます。 これには、メモリ割り当ての問題など、ソースコードで検出することが困難または不可能な脆弱性が含まれます。
DASTとセキュアなソフトウェア開発ライフサイクル
ソフトウェア開発ライフサイクル (SDLC) は、ソフトウェア開発プロセスの段階をマッピングします。 これには、アプリケーションの初期計画と要件の特定から、長期保守とその最終的な寿命の終了まで、すべてが含まれます。
DASTは通常、SDLCのテストフェーズで機能します。 これは、DASTがアプリケーションを実行し、シミュレートされた悪意のある入力を使用してテストする機能を必要とするためです。 その結果、アプリケーションのコードをビルドしてテスト環境またはステージング環境にデプロイできるようになったら、DAST を使用できます。 継続的インテグレーション/継続的デリバリー (CI/CD) ワークフローでは、反復的なビルドが発生すると、DAST スキャンが 1 日に複数回実行される可能性があります。
多くのエンタープライズ・ソフトウェア・セキュリティ・プログラムでは、DASTは、内部セキュリティの専門知識を必要としないペネトレーション・テストの後に行われます。 たとえば、PCI DSS(Payment Card Industry Data Security Standard)要件を満たすためのペネトレーションテストの後、セキュリティチームはDASTツールを使用して自動セキュリティスキャンを実行できます。
静的コード分析と動的コード分析の違い
静的コード分析と動的コード分析は、アプリケーション・セキュリティ・テストの最も一般的な形式の2つです。 脆弱性を特定するために異なるアプローチを取り、多くの場合、補完的です。
動的コード分析とは異なり、静的コード分析は静的アプリケーション・セキュリティ・テスト(SAST)とも呼ばれ、完全な実行可能ファイルにアクセスする必要はありません。 代わりに、ホワイトボックスアプローチを採用し、アプリケーションのソースコードに脆弱性がないか検査します。 SASTは、アプリケーションの実行フローのモデルを構築し、このモデルにルールを適用することで、インジェクション、バッファオーバーフロー、および同様の脆弱性を検出できます。
DASTとSASTは異なるテスト方法を適用し、異なるタイプのファイル(コンパイルされた実行可能ファイルとソースコード)に適用されるため、異なるタイプの脆弱性を検出し、開発プロセスのさまざまな段階で適用されます。 SASTは、脆弱性を特定するためにアプリケーションを完了する必要がないため、DASTよりも早い段階で(開発フェーズ中に)適用できます。
動的コード分析が重要な理由
動的コード分析は、アプリケーションがほぼ完成し、実行可能になった後に適用されます。 悪意のある入力を使用して、アプリケーションに対する現実的な攻撃をシミュレートし、その応答を観察します。
DAST テストの主な利点の 1 つは、現実的なデプロイメント環境でアプリケーションの動作をシミュレートできることです。 これにより、テスト担当者は、コードがアクティブなときにのみ表示される可能性のある構成の問題やその他の脆弱性を特定できます。 さらに、シミュレートされた実際の攻撃を使用することで、潜在的なエクスプロイトがアプリケーションの状態に与える影響を確認できます。 DASTツールは、アプリケーションのセキュリティに影響を与えるサードパーティの依存関係やライブラリ内の脆弱性を検出することもできますが、SASTや同様のソースコードに重点を置いたツールでは見逃される可能性があります。
Check Point offers vulnerability scanning for cloud-based serverless and containerized applications. This includes support for both DAST and SAST vulnerability scanning to help with identification and remediation of vulnerabilities during the development process. To see the capabilities of Check Point Solutions for Serverless Applications in action, schedule a demo. You’re also welcome to request a free trial to see how it can integrate into your organization’s development workflow.
