ソフトウェアアプリケーションのセキュリティの確保は、機密データを保護し、顧客からの信頼を保ち、規制要件を遵守するのに必要不可欠です。しかし、代償の大きいサイバー攻撃や侵害が起こるまで、セキュリティの穴が特定されないケースは多々あります。これらの攻撃の発生を予防するためには、インタラクティブアプリケーションセキュリティテスト(IAST)のようなアプリケーションのセキュリティツールが必要です。

IASTは、静的および動的分析テクニックを組み合わせて、リアルタイムでの脆弱性の検出およびレスポンスを提供します。IASTでは、静的および動的な評価テクニックの両方を組み合わせて、セキュリティの問題を開発の早い段階で特定し、現実世界における攻撃シナリオのシミュレーションを行うことができます。

今回のブログでは、以下について説明します。

  • IASTとは(静的および動的なセキュリティ評価テクニックの違いなど)
  • IASTの利点
  • IASTの使用事例
  • IASTのベストプラクティス
  • New Relic脆弱性管理機能とIASTの利用開始方法

IASTとは?

IASTとは、インタラクティブアプリケーションセキュリティテストの略です。その名が示す通り、IASTはアプリケーションセキュリティテストの一形式です。では、この文脈において、「インタラクティブ」とは、具体的に何を意味するのでしょうか?

IASTは、静的および動的なセキュリティ評価テクニックを組み合わせるのでインタラクティブです。セキュリティテストをランタイム環境で実行しながら、コード、ウェブコンポーネント、構成データに関する完全な可視性が得られます。具体的に言うと、IASTは、手動および自動テストがアプリケーションで実行される場合はいつでも、センサーモジュールとエージェントを使用してセキュリティテストを実行します。これらのテストはオーバーヘッドがきわめて低く、IASTを効果的に処理するために追加的なテストを作成する必要はありません。その代わり、IASTは既存のテストスイートとともに実行されます。

IASTを使用して、ソフトウェア開発ライフサイクル(SDLC)全体を通じたアプリケーションの分析が可能で、またIASTはソースからランタイムの動作まであらゆるものを分析できます。これには使用しているライブラリやフレームワークの分析も含まれ、サードパーティツールの潜在的なセキュリティの問題へのインサイトを提供します。

IASTは、静的アプリケーションセキュリティテスト(SAST)とも動的アプリケーションセキュリティテスト(DAST)とも異なります。これらにはそれぞれ長所と短所があります。

  • SASTは、ランタイム環境ではないコードのみを検証するため、静的です。SASTテストはデプロイしやすく、コードに対する完全な可視性がありますが、ランタイム中に発生するセキュリティの問題を理解することはできません。SASTは、コードが本番環境にデプロイされる前の開発ステージでよく使用されます。
  • DASTは、ランタイム環境にあるコードを検証するため動的ですが、これによるデメリットもあります。DASTテストはランタイム環境で実行されるため、ソースコードにはアクセスできません。これらのテストは実行に時間がかかり、自動化が困難です。

IASTの利点

IASTは、静的および動的の両方の分析を使用するため、SASTやDASTに比べてより包括的な評価を提供できます。このセクションでは、アプリケーションスタックのテストにIASTを使用することのメリットについて説明します。

精度が高い

IASTはランタイムのアプリケーションを分析するため、正確で信頼性の高い結果を提供します。静的分析のみだと、ランタイム環境へのアクセスがないためにコンテキストを欠くことがあり、誤検知を招く可能性があります。例えば、静的分析は、ランタイム環境で使用している他のセキュリティツールの検知には使用できません。一方、動的分析ではランタイム環境しか見ることができないため、コードベースを確認できず、テストの対象範囲が非効率的になる可能性があります。

リアルタイムでの迅速なテスト

IASTは、手動でも自動でも、他のテストとともに自動的に実行されます。そのため、ソフトウェア開発ライフサイクルを通じて継続的なセキュリティテストが実施可能です。DASTテストは手動での実行が必要で、実行に多くの時間(または日数)がかかることがありますが、IASTテストは迅速かつテストスイートへのオーバーヘッドも最小限で済みます。

継続的なセキュリティ監視

IASTでは、DAST(ランタイム環境でのテスト)とSAST(ソースコードへの可視性)の両方の良い部分が組み合わされています。静的および動的分析の両方のテクニックを備えているため、DASTやSASTのどちらか一方のみよりも高い可視性が得られます。他の自動および手動のテストと併せて実行されるため、IASTでは継続的なセキュリティ監視を行うことができます。

オーバーヘッドの削減

IASTは、センサーとエージェントを使用して既存のテストが実行されるタイミングを検出するため、現在のプロセスへの統合が容易です。追加のテストを設定したり、IASTテストを手動で実行する必要はありません。

IASTの使用事例

IASTのメリットが分かったところで、IASTをアプリケーションのセキュリティ態勢に活用できる一般的な使用事例を見ていきましょう。

アプリケーション内のセキュリティの脆弱性の検出

IASTは、SQLやコード取り込み、クロスサイトスクリプティング(XSS)攻撃、また認証関連の問題などの一般的なセキュリティの脆弱性を検出できます。IASTはアプリケーションのランタイムを分析するため、セキュリティ態勢に関する現実世界のインサイトを提供し、脆弱性が代償の大きな侵害に発展する前に発見、修正できるようになります。

現実世界のセキュリティシミュレーションの支援

IASTテストは、既存の手動および自動のテストに基づいてトリガーされるため、それを簡単に活用して、レッドチーム演習(現実世界のセキュリティシナリオ検知のために設計されている)や、その他のペネトレーションテストなどのシミュレーション中に実行できます。

既存のセキュリティ管理の微調整

攻撃シミュレーションの際、IASTはセキュリティ管理と対策の対応状況を観察し、それらが適切に作動しているかどうかの検証と潜在的な脆弱性の特定を助けます。これにより、セキュリティ態勢を微調整して改善し、実際の攻撃に十分に備えることができるようになります。

セキュリティ遵守の徹底

IASTを使用して、既存の規格や規制、ベストプラクティスの遵守を確実に行えます。例えば、IASTをコンプライアンス監査の重要な構成要素として組み込み、HIPAAやGDPRなどのコンプライアンス要件を満たすための組織の取り組みを示すことができます。

リスク管理戦略の支援と構築

リスク管理とは、リスクの特定と評価から、その低減、管理、報告まであらゆる要素が関わる、途切れることのないプロセスです。IASTは、特にアプリケーションスタックのリスクの特定、評価、分析、低減、監視において、このプロセスをサポートできます。

CI/CDのパイプラインの強化

IASTは、継続的インテグレーションおよび継続的デプロイメント(CI/CD)パイプラインと統合され、SDLC全体を通じて自動化されたセキュリティテストを提供できます。コード変更の際に発生しうる、あらゆる脆弱性に関する継続的なフィードバックを得て、すばやく修復ができます。

DevSecOpsの実践の強化

DevSecOpは、DevOpsにセキュリティの実践を組み込んでいく取り組みです。IASTの自動化を開発ワークフローに追加することで、組織のDevSecOpsの実践を強化できます。また、IASTは継続的で、迅速な解決を提供するため、アジャイルな開発環境に適しています。

サードパーティとオープンソースソフトウェアのリスク特定

外部のライブラリやソフトウェアをシステムに導入するとき、それは同時に脅威の原因、すなわち侵害や攻撃がアプリケーションに侵入しうるエリアの追加も意味します。アプリケーションが潜在的に何百、何千ものライブラリに依存している場合、潜在的なセキュリティリスクを評価することが特に重要です。IASTはランタイム環境を分析するため、これらのツールの脆弱性を特定、低減するために使用できます。

IASTのベストプラクティス

IASTは、適切に使用された場合にのみ効果を発揮し、これらのベストプラクティスに従うことでIASTを最大限に活用できます。

IAST実施の対象範囲を決定する

アプリケーション内のどのコンポーネントとシステムがテストの対象か、また、どの環境でIASTを使用するのか。IASTをスタック全体とソフトウェア開発ライフサイクル全体にわたり使用するのが理想的ですが、アプリケーションが大規模な場合、これには時間がかかります。アプリケーションの重要エリアを優先し、テストにおいてギャップが生じるのはどこかを特定しましょう。

IASTをソフトウェア開発ライフサイクル全体に組み込む

IASTは、開発からステージング、本番環境まで、ソフトウェア開発のライフサイクル全体に組み込まれるべきです。そのためには、CI/CDプロセスに追加するのが良い方法です。IASTテストは事前に自動化できるため、IASTをCI/CDパイプラインに追加すれば、ライフサイクルの早い段階で潜在的な脆弱性に関する重要なインサイトを得られ、組織にはそれを修正する十分な時間が生まれます。

セキュリティはセキュリティチームだけでなく全エンジニアが担う

往々にして、チームが担当する特定分野ごとに断絶され、そのためにエンジニアとその他の技術担当者はプロセス全体を通じたセキュリティに考えが及ばないことがあります。このある種のサイロ化により、セキュリティの問題が本番環境まで解決されずに残り、顧客に影響するという事態は珍しくありません。これには、ただ単にIASTをCI/CDパイプラインに追加するだけでは不十分です。セキュリティに関して責任を担う文化を構築し、すべてのチームが脅威の原因とセキュリティの脆弱性を減らすために協働していく必要があります。これに必要なのは、IASTと安全なコード設計の実践についてのエンジニアのトレーニングです。

セキュリティについて積極的に検討することに加え、エンジニアリングチームとセキュリティチームは互いに協力して作業にあたる必要があります。協働することで、組織のセキュリティ態勢を向上させ、より効果的に脆弱性を解消していくことができます。

New RelicのIASTで、潜在的なセキュリティの脆弱性に関する可視性をすべてのチームに容易に提供できます。

セキュリティの発見事項を分析し、優先づける

テストのプロセスにおいて露呈されるあらゆるセキュリティ問題に対応し緩和させたい場合に、IASTは組織に利益のみをもたらします。発見事項を分析し、深刻度や潜在的な影響度、また脆弱性の悪用の可能性といった要因に基づき優先づけていく必要があります。New Relic IASTは、脆弱性を自動的にラベル付けするため、リスクが高く重大な脆弱性を優先させることができます。さらに、New Relic IASTはエクスプロイトの実証を提供し、その脆弱性が悪用されうるかどうかを検証します。

脆弱性を迅速に、できれば本番環境より前の段階で修正する

脆弱性を特定し、優先づけたら、次のステップはそれらの修正です。そのために、また、修正を本番環境に到達する前に行うために、先述したベストプラクティスに従うことが必須です。ソフトウェア開発のライフサイクル全体にわたるIAST、チーム間の協働体制の構築、そしてエンジニアがセキュリティと安全なコード設計を考慮し、実践できるようにすることです。New Relic IASTはガイド付き修正機能を提供しており、開発者は即座に対応してセキュリティリスクを排除できるようになります。

New RelicでのIASTと脆弱性管理

IASTは、脆弱性管理というパズルの1つのピースにすぎません。New RelicのVulnerability Management(脆弱性管理)では、共通脆弱性識別子(CVE)をすばやく特定し、修正することができます。Vulnerability Management(脆弱性管理)ダッシュボードは、リスクが高く重大な脆弱性の合計数、システム内の脆弱性が含まれるライブラリ、影響を受けるエンティティなどの重要なメトリクスを提供します。

New Relic IASTは、現在Java、Node、Goでパブリックプレビューが行われています。New Relic IASTは、悪用される可能性があるコードパスを特定するプロセスを自動化し、またNew Relicエージェントがアプリケーションをインストゥルメントするため、必要な設定は最小限です。