In this article
インタラクティブ アプリケーション セキュリティ テスト(IAST)
新しい種類のサービスやアプリケーションを構築する際は、セキュリティを念頭に置くことが不可欠です。セキュリティ侵害は、瞬く間にビジネスへ計り知れない損害をもたらす可能性があります。アプリケーションの安全性を確認する方法はさまざまです。どの方法でもセキュリティを100%保証することはできませんが、アプリを安全に保つために常に取り組み、アプリケーションセキュリティの向上を目指す必要があります。Snykのアプリケーションセキュリティソリューションは、開発者が安全に開発できるよう支援し、脆弱性への先手を打つのに役立ちます。
インタラクティブ アプリケーション セキュリティ テストとは?
インタラクティブ アプリケーション セキュリティ テスト(IAST)は、アプリケーションの実行中、つまり実際に使用されているとき(実ユーザーまたは自動テストランナーのいずれかによって)に脆弱性を検査するアプリケーションセキュリティテスト手法です。IDEとの連携機能を備えたIASTツールもあり、アプリケーションの開発中にセキュリティ分析を実行できます。
IASTツールの中核となるのはセンサーモジュールです。これは、アプリケーションのコードに組み込まれるソフトウェアライブラリです。センサーモジュールは、対話型テストの実行中にアプリケーションの動作を追跡します。脆弱性が検出されると、アラートが送信されます。
たとえば、APIキーを平文でハードコードする、ユーザー入力をサニタイズしない、SSL暗号化を使わずに接続する、といった脆弱性が挙げられます。
IASTと他のセキュリティテスト手法との違い
特定のセキュリティテスト手法が自社のアプリケーションテスト環境に適しているか判断するには、そのメリットだけでなく制約も考慮することが重要です。それぞれのテスト手法の違いを見ていきましょう。
静的アプリケーションセキュリティテスト(SAST)はコードに着目します。CIパイプラインの早い段階で実行され、ソースコード、バイトコード、またはバイナリコードをスキャンし、ベストプラクティスに反する問題のあるコーディングパターンを特定します。SASTはプログラミング言語に依存します。
動的アプリケーションセキュリティテスト(DAST)は、実行時のアプリケーションをスキャンするブラックボックステスト手法です。CIパイプラインの後半で適用されます。DASTはリグレッションの防止に有効で、特定のプログラミング言語に依存しません。
IASTは実行時のアプリケーションの動作に着目する点でDASTに似ています。ただし、IASTの分析は、ブラックボックステスト、スキャン、アプリケーション内部の処理フロー分析を組み合わせて行います。IASTの利点は、DASTのような検出結果をSASTのようにソースコードに紐づけられることです。一方、このアプローチには、IASTがプログラミング言語に依存し、CIパイプラインの後半でしか実行できないという欠点があります。
ソフトウェア構成分析(SCA)は、アプリケーションで使用されているサードパーティ製コードの依存関係に着目します。オープンソースライブラリを多数使用するアプリケーションで特に効果を発揮します。この手法もプログラミング言語に依存します。
IASTのメリットとデメリット
IASTは基本的にSASTとDASTを組み合わせたものです。DASTと同様に、IASTはテストで実行されたコードのみを分析しますが、SASTのように脆弱性が見つかったコード内の正確な場所も特定します。
IASTはDASTやSASTとは異なりますが、なぜ使うのでしょうか。IASTの主なメリットを見てみましょう。
本番環境でコードをスキャン:IASTの最大のメリットは、本番環境で実際に使用されているコードをスキャンできることです。SASTツールは誤検知が多く、開発者の負担になりがちです。コードのある行がセキュリティ上の問題に見えても、コードベースの別の箇所ですでに対処されている場合があります。IASTは本当に重要な問題に焦点を当てます。
開発中のコードをスキャン:本番コードのスキャンは大きなメリットですが、IASTは開発中にも利用できます。IDE連携機能を備えたIASTツールもあり、実装中の機能についてエンジニアがすぐにフィードバックを得られます。修正コストが低い開発ライフサイクルの早い段階へ、セキュリティチェックを前倒しできます。
迅速な修正:IASTは問題をコード内の場所に紐づけます。この点がDASTとの違いです。IASTではアプリケーション内をクリックして問題を見つけ、迅速な修正に役立つ推奨事項を確認できます。ただし、リスクがないわけではありません。コードをテストしたことがないからといって、本番環境にセキュリティ脆弱性が存在しないとは限りません。一方で、開発者の時間には限りがあるため、賢く使う必要があります。
IASTには次のようなデメリットもあります。
プログラミング言語に依存:IASTがプログラミング言語に依存することは、大きなデメリットです。センサーモジュールを組み込むためにコードの変更が不要なツールもありますが、対応するテクノロジーは限られています。ユースケースに最適なために、あまり一般的でないテクノロジーを使用している場合、IASTは適切な選択肢ではないかもしれません。
時間がかかる:IASTではアプリケーションをビルドして実行する必要があり(SASTでは不要)、長期的にはかなりの時間がかかります。IDEプラグインを使って開発中に検出する問題であれば、すぐにフィードバックが得られるため、問題にならない場合もあります。しかし、本番リリースのたびに実行する大規模なテストスイートを構築しようとすると、処理に時間がかかる可能性があります。
コードカバレッジが100%ではない:実際に実行されたコードだけをスキャンするため、IASTではすべてのコードをスキャンできません。誤検知を減らせる一方で、品質保証チームがテストで実行し忘れたコードも見逃します。テストで想定していなかったからといって、そのコードが本番環境で実行されないとは限りません。
IASTを選ぶ前に要件を把握する
どのアプリケーションセキュリティテスト手法を選ぶ場合も、事前にテクノロジースタックとプロセスを分析することが重要です。使用するプログラミング言語によっては、IASTを選択できない場合もあります。その場合はDASTに頼ることになりますが、DASTはアプリケーションの入力と出力のみをチェックし、コードはスキャンしません。
IASTは、SASTのアプローチでは得られないアプリケーションのセキュリティに関する重要な知見をもたらす一方で、CIパイプラインを大幅に遅延させる可能性もあります。そのため、日々の開発ではSASTベースのソリューションのほうが適している場合があります。
開発者が効率的に、実行可能な対策に取り組めるようにしましょう。開発者ファーストのSASTソリューションであるSnyk CodeはAIを活用し、Snyk独自の専門家が厳選した脆弱性データベースとリファレンスコミットをトレーニングセットとして使用することで、コーディング中に最適なセキュリティのヒントを提供します。