ビジネス環境の変化に伴い、システム開発(DevOps)にさらなるスピードが求められる一方で、アプリケーションの脆弱性の件数はここ20年で横ばいで、セキュリティ対策がさらに重要視されています。そこで、昨今のAppSecテストやエージェント型アプリケーションセキュリティテストツールのメリットや機能を説明します。
これまでのAppSecは時代遅れ
開発中のアプリケーションの動作を検証し、コーティングエラーや不具合などを検出するテストを「AppSec (アプリケーション・セキュリティ)」テストといいます。AppSecテストでは、アプリケーションをリリースした後に欠陥が見つかることのないよう、開発段階であらゆる脆弱性を除去します。
一方、十分にセキュリティテストを行い、アプリケーションの本稼働前に問題を除去しておきたい運用部門と、開発スケジュールに沿って、遅延なく開発を終えたい開発部門とでは、目標が相反するため、開発と運用の両部門が連携する「DevOps(デブオプス)」の考え方に基づく開発が浸透してきました。
本来、AppSecテストも「DevOps」のサイクル内に組み込むべきですが、昨今では、これまでのAppSecテストは時代遅れといわれています。理由として、AppSecテストはシステムへ高い負荷がかかることや、テストで脆弱性を検出しても、そのセキュリティ問題への対処には専門知識が求められることもあり、実際には「DevOps」サイクルに組み込めないことが挙げられます。
また、開発技術が進歩している一方、脆弱性への対処に関しては、進歩が見られないという事実も一因です。
HelpNet Securityは2020年2月、「Malware and ransomware attack volume down due to more targeted attacks」の中で、ショッピングやオンラインバンキングなどユーザーが日常的に利用するWebアプリケーションは、1アプリにつき平均26.7件の脆弱性を含んでいると発表しています。
この数字は20年近く変わっていません。その間、各アプリは多機能化に伴い、ファイルサイズが大きくなっているものの、アプリ開発の技術も格段に進歩してきたはずです。20年も脆弱性の問題を解決できていないことから、従来のAppSecテストの手法が問題視されるようになりました。
エージェント型テストツールの特徴
従来のAppSecテストに代わるテストツールとして定着しつつあるのが、「エージェント型アプリケーションセキュリティテストツール」です。開発者や他のシステムの代理として働く、エージェント(Agent)と呼ばれるソフトウェアを用いた、エージェント型テストツールの特徴を紹介します。
AppSecの自動化
従来のAppSecテストの問題点を解決するため、テストのプロセスを自動化し、「DevOps」のサイクルにAppSecテストを組み込む、エージェント型テストツールが注目を集めています。
このツールを活用したフローでは、開発工程内で行う機能テストを実施すると、自動的にセキュリティテストも行われます。テストを開発と並列で処理するため、「DevOps」のサイクルを遅延させることがない上、脆弱性の診断をリアルタイムに行える点が大きなメリットです。
脆弱性検知、可視化、検証
エージェント型テストツールには、プログラムの動作を常時監視するセンサーとしての役割もあります。アプリケーションを起動すると、ツールがアプリケーションコード内のポイントにエージェントを自動で配置します。エージェントとは、自律的に動作する特定の機能を持つソフトウェアです。
このセンサー機能は、本番環境・テスト環境・開発環境のすべての監視が可能です。環境内で脆弱性が悪用される兆候を検知すると、センサーが問題点を抽出。アプリケーション内で不審な挙動が確認された場合は、挙動のブロックも行います。
また、すべてのアプリケーション・API・ライブラリ・フレームワークがセンサーによる監視対象となり、24時間365日、追跡管理されます。
ポリシーベースのセキュリティ制御
プログラムの動作を監視するセンサー機能は、不審な挙動を検知してブロックするなどの処理を自動的に行いますが、その動作条件は個別に設定が可能です。不審な挙動を確認した場合の処理は、事前に企業の運用ポリシーとして設定しておくことができます。
例えば、「コンテキスト分析に基づいたアラートを発信する」・「攻撃の拡散を防ぐために即時性を優先した修復処理を行う」など、詳細なポリシー設定が可能です。
連携とレポートで迅速な解決
これまでは、セキュリティに関する問題を検出すると、PDFベースのレポートにまとめてメール等で管理者に通知するツールが多い傾向がありました。
一方、エージェント型テストツールを用いたAppSecでは、開発部門と運用部門で常用している既存のツールと連携し、速報性を重視しています。例えば、問題を検知した時点で、PDFのレポートの配信などではなく、既存ツールに対し速やかに通知・アラートやレポートを配信します。
エージェント型テストツールの機能
エージェント型テストツールは、次のような様々な機能・手法を組み合わせることで、開発のプロセスを妨げないAppSecテストを実現します。
IAST(インタラクティブ・アプリケーション・セキュリティ・テスト)
「IAST(インタラクティブ・アプリケーション・セキュリティ・テスト)」は、Webアプリケーションを実行し、脆弱性を検出するセキュリティテスト手法です。加えて、検出した脆弱性に関する、セキュリティリスクの特定と管理の支援を行います。
IASTは動的テストに分類される手法であり、アプリケーションを実際に動作させたときの振る舞いから問題点を見つけ出します。IASTのほかに、動的テストには「DAST(動的・アプリケーション・セキュリティ・テスト)」もありますが、IASTとは動的テストの方法が異なる点に注意が必要です。
DASTではアプリケーション全体をスキャンする必要がありますが、スキャンするためにテスト前に膨大な設定を行う必要があります。一方、IASTは、アプリケーションのスキャンを必要とせず、機能テストと同時に実行されるため、テストのための時間がかかりません。
SCA(ソフトウェア構造分析)
「SCA(ソフトウェア構造分析)」は、アプリケーションを機能的な要素(コンポーネント)に分解して、その要素ごとに分析し、脆弱なコンポーネントを見つけ出す分析手法です。異常があるコンポーネントを検出した場合、その異常がシステムへどれほどの悪影響を与えるかを評価して、スコアを付けます。
近年では、オープンソースのコードを多用してアプリケーションを開発する傾向がありますが、「SCA」は、潜在的に脆弱なオープンソースライブラリを発見するのに特に有効な手法です。
RASP(ランタイムアプリケーション自己保護)
「RASP(ランタイムアプリケーション自己保護)」は、脆弱性の悪用を防止して、アプリケーションを保護するための仕組みです。
「RASP(Runtime Application Self Protection)」の名の通り、サーバー上で実行され、アプリケーションへの攻撃をリアルタイムかつ自動的に検出して、保護します。
人間が介入することなく、アプリケーションが自身の動作を継続的に監視し、攻撃の特定と対処を行うのが特徴です。
まとめ
従来のAppSecテストは、「DevOps」のサイクルに組み込むことが困難です。スピードを求められているアプリケーション開発において、機能テストと同時にセキュリティテストを実行し、脆弱性を検出できるエージェント型セキュリティテストツールは、今後もますます注目が集まると見られています。