インタラクティブ・アプリケーション・セキュリティ・テスト(IAST)は、動的テスト(ランタイム・テストと呼ばれることも多い)手法を用いて、実行中のWebアプリケーションで発見された脆弱性に関連するセキュリティ・リスクの特定および管理を支援します。IASTは、インスツルメンテーションによりアプリケーションを動作させ、その機能や振る舞いの情報を収集することでアプリケーションを監視します。IASTソリューションは、実行中のアプリケーションにエージェントとセンサーをデプロイし、手動テスト、自動テスト、またはその両方の組み合わせによって実行されるすべてのアプリケーションの挙動を解析して脆弱性をリアルタイムに発見します。中には、ソフトウェア・コンポジション解析(SCA)ツールを統合してオープンソースのコンポーネントおよびフレームワークの既知の脆弱性に対処するソリューションもあります。
SDLC内でテストをシフトレフトする。一般に、IASTはソフトウェア開発ライフサイクル(SDLC)のテスト/QA工程で行われます。IASTはテストを事実上シフトレフトして問題を開発サイクルの早期段階で捕捉し、修正に伴うコストと遅延を削減します。多くのツールは継続的インテグレーション/継続的デリバリー(CI/CD)ツールに統合できます。最新の生成ツールは変更したソースコードを再コンパイルして、実行中のアプリケーションを再テストした時点ですぐに結果を返し、開発プロセスのさらに早期段階での脆弱性の発見を支援します。
迅速なトリアージを可能にする高精度な結果を提供する。Webアプリケーションの迅速な開発の必要性への対応に後れを取らないためには、数十万件単位のHTTPリクエストを処理するスケーラビリティを備え、誤検知率の低い結果を得ることができる高精度な自動セキュリティ・テスト・ツールが必要です。動的解析(DAST)ツールは誤検知が多くなりがちで、発見された脆弱性のコード行を示さないため、結果のトリアージが難しく、誤検知を簡単に排除できません。IASTおよび静的解析(SAST)では、開発チームとセキュリティ・チームがテスト結果をトリアージするために役立つ詳細な情報(コード行など)を得ることができます。
脆弱性の原因を突き止めることができる。アプリケーション内部から解析を行うIASTでは、アプリケーション・コード、実行時の制御およびデータフロー情報、メモリーおよびスタック・トレース情報、HTTPリクエスト/レスポンス、ライブラリ、フレームワークなどのコンポーネントにSCAツールを介してアクセスできます。この解析により、開発チームは発見された脆弱性の原因を突き止め、迅速に修正することができます。
CI/CDとの統合が容易。Webアプリケーション開発チームとDevOpsチームには、誤検知を削減するための面倒なコンフィグレーションやチューニングが不要で、標準的なビルド、テスト、QAツールとシームレスに統合するアプリケーション・セキュリティ・ツールが必要です。これらのツールは大規模エンタープライズの要件に対応するためにデプロイ、更新、スケーリングが容易であることが求められます。IASTはCI/CDパイプラインにシームレスに統合する唯一のタイプの動的テスト手法です。
代償が比較的小さい早期のうちに修正が可能。セキュリティおよび開発チームには、リソースおよびセキュリティ・リスク体制の観点から、開発チームがソースコードとエラーを熟知している時点で、しかも脆弱性の修正コストが最小限で済むSDLCの早期段階で脆弱性を発見し、修正することができるアプリケーション・セキュリティ・ツールが必要です。静的解析およびSCAツールは一般に開発工程で利用され、IASTはテスト/QA工程で用いられます。結果は開発チームにフィードバックされ、開発チームは発見された脆弱性を開発工程で修正します。
Verizonの2017年度データ漏洩/侵害調査報告書(DBIR)によると、データ漏洩の29.5%はWebアプリケーションへの攻撃によるものでした。Webアプリケーションは、ハッカーがユーザー名とパスワード、クレジット番号、患者情報などの重要IP/データや個人情報にアクセスするための侵入を試みる際に好んで選ぶアタックサーフェスです。組織は、セキュリティ攻撃と代償の大きいデータ漏洩のリスクがある本番環境にデプロイする前にWebアプリケーションのセキュリティを確保することが望まれます。さらに、開発チームには、重大な脆弱性が発見された場合に迅速に修正できる機能が必要です。
開発チームとセキュリティ・チームは、多くの場合に、Webアプリケーションのプロプライエタリ・コードとオープンソース・コードのセキュリティの弱点と脆弱性の発見に静的解析およびSCAソリューションを使用しますが、実行中のアプリケーションを動的にテストしなければ検出されない脆弱性も多く存在します。
IASTは実行中のアプリケーションのセキュリティ脆弱性を発見し、該当するコード行と検出結果に応じた修正アドバイスを提示します。このような方法で、開発チームはWebアプリケーションを本番環境にデプロイする前にセキュリティ脆弱性を迅速に発見して修正し、セキュリティ攻撃によるデータ侵害のリスクを低減できます。
1. DevOpsをデプロイする。IASTをCI/CD環境に統合する必要があります。
2. ツールを選択する。使用するプログラミング言語で作成したアプリケーションのコードレビューを実行可能で、ソフトウェアで使用されている基盤フレームワークと互換性があるツールを選択します。
3. スキャン用インフラストラクチャを構築してツールをデプロイする。アクセス制御、認証、必要に応じてバグ・トラッキング機能を備えたJiraなどとの統合をセットアップしてツールをデプロイします。
4. ツールをカスタマイズする。組織の要件に応じてツールを微調整します。ツールをビルド環境に統合して、スキャン結果を追跡するためのダッシュボードを作成したり、カスタム・レポートを作成することもできます。
5. 優先順位を付けてアプリケーションを追加する。ツールの準備ができたら、アプリケーションを追加します。アプリケーションが多い場合は、高リスクのWebアプリケーションを優先して最初にスキャンします。
6. スキャン結果を解析する。スキャン結果をトリアージして誤検知を排除します。脆弱性の問題をSDLCのなるべく早期の段階で追跡し、修正します。
7. トレーニングを行う。IASTツールで得られた結果の効果的な活用方法、および結果をアプリケーションの開発およびデプロイ・プロセスに取り入れる方法について、開発およびセキュリティ・チームをトレーニングします。
効果的な DevSecOps プログラムを構成する戦略、プラクティス、ツールを発見する
動的解析(DAST)では脆弱なコード行を特定できないため、テスト/QAの工程、または本番環境へのアプリケーションのリリース時に動的解析ツールを用いてセキュリティ脆弱性を検出しようとすると、非効率で高コストにつく可能性があります。動的解析はやがてIASTに取って代わられる可能性が大いにありますが、その理由は2つあります。動的解析と異なり、IASTは脆弱性情報と対策ガイダンスをSDLCの早期段階で迅速に提供できるほか、CI/CDおよびDevOpsワークフローに統合できるからです。Gartner社は「2019年までにはエンタープライズクラスのIAST導入は30%を超える」と試算しています(Dionisio Zumerle、Ayal Tirosh著、「Magic Quadrant for Application Security Testing」、Gartner、2017年2月)。