Webセキュリティ・テストが重要な理由
Webアプリケーション・セキュリティ(Web AppSecとも呼ばれる)は、攻撃を受けても想定どおりに機能するようにWebサイトを構築するという考え方です。この概念には、悪意のある可能性があるエージェントから資産を保護するためにWebアプリケーションに組み込まれた一連のセキュリティ管理策が関連します。
Webアプリケーションには、あらゆるソフトウェアと同様、必然的に欠陥が存在します。その欠陥の一部は、悪用される可能性がある実際の脆弱性となり、組織にリスクをもたらしますが、Webアプリケーション・セキュリティは、このような欠陥を防御します。セキュア開発のプラクティスを活用し、ソフトウェア開発ライフサイクル(SDLC)全体を通じてセキュリティ対策を実施し、設計レベルの欠陥や実装レベルのバグに対処します。
Webセキュリティ・テストが重要な理由
- Webセキュリティ・テストは、Webアプリケーションとその構成に関するセキュリティ脆弱性を発見することを目的としています。主なターゲットはアプリケーション層(HTTPプロトコルで実行されているプログラム)です。Webアプリケーション・セキュリティのテストでは、多くの場合、さまざまな種類の入力を送信してエラーを引き起こし、システムに想定外の動作をさせます。これらのいわゆる「異常系テスト」により、システムが設計に反する動作をしているかどうかを調べます。
- また、Webセキュリティ・テストは単にアプリケーションに実装される可能性のあるセキュリティ機能(認証・認可など)をテストするだけではないという理解が重要です。他の機能がセキュアに実装されていることをテストする(ビジネス ロジック、適切な入力検証と出力エンコーディングの使用など)ことも同様に重要です。目的は、Webアプリケーションで公開される機能をセキュリティで保護することです。
さまざまなタイプのセキュリティ・テスト
- 動的アプリケーション・セキュリティ・テスト(DAST) この自動アプリケーション・セキュリティ・テストは、社内向けの低リスク・アプリケーションで、法令遵守のセキュリティ評価に準拠する必要があるものに最適です。リスクが中程度のアプリケーションや重要なアプリケーションに小規模な変更を加える場合、DASTと一般的な脆弱性に対する手動のWebセキュリティ・テストを組み合わせるソリューションが最適です。
- 静的アプリケーション・セキュリティ・テスト(SAST) このアプリケーション・セキュリティ・アプローチの手法には、自動テストと手動テストがあります。これは、アプリケーションを本番環境で実行することなくバグを特定する場合に最適です。また、開発者はソースコードをスキャンし、ソフトウェアの脆弱性を体系的に特定して排除します。
- ペネトレーション・テスト この手動アプリケーション・セキュリティ・テストは、重要なアプリケーション、特に大きな変更を行っているアプリケーションに最適です。この評価には、高度な攻撃シナリオを検出するためのビジネス・ロジックと敵対的テストが含まれます。
- ランタイム・アプリケーション自己保護(RASP) この進化型のアプリケーション・セキュリティ・アプローチには、実行中に攻撃を監視し、理想的にはリアルタイムで阻止することを目指して、アプリケーションを監視するさまざまな技術的手法が含まれます。
アプリケーション・セキュリティ・テストで組織のリスクを軽減する方法
主なWebアプリケーション攻撃
- SQLインジェクション
- XSS(クロスサイト・スクリプティング)
- リモート コマンドの実行
- パス・トラバーサル
攻撃結果
- 制限されたコンテンツへのアクセス
- ユーザー・アカウントの侵害
- 悪意のあるコードのインストール
- 収益の損失
- 顧客の信頼の喪失
- ブランドの評判を毀損
- その他
最近の環境では、Webアプリケーションが影響を受ける可能性がある問題は広範にわたります。上の図は、攻撃者が用いる攻撃の中でも特に一般的なものを示しており、こうした攻撃によって個々のアプリケーションまたは組織全体に深刻な損害がもたらされる可能性があります。攻撃の潜在的な結果に加えて、アプリケーションを脆弱にするさまざまな攻撃を知ることで、脆弱性に先取りして対処し、脆弱性を正確にテストすることができます。
脆弱性の根本原因を特定することにより、SDLCの初期段階で緩和策を実装して問題を防ぐことができます。さらに、これらの攻撃の仕組みを知ることにより、Webアプリケーション・セキュリティ・テストで既知の重要なポイントにターゲットを絞ることができます。
攻撃の成功による影響を用いて脆弱性の全体的な重大度を測定できるため、攻撃の影響を認識することは企業のリスクを管理する上でも重要です。セキュリティ・テストで問題が見つかった場合、重大度を定義することで、企業は対策作業に効率的に優先順位を付けることができます。重大度が高い問題から始めて、影響が比較的少ない問題へと順に取り組み、企業に対するリスクを低減します。
問題が見つかる前に、社内のアプリケーション・ライブラリ内の各アプリケーションに対する潜在的な影響を評価することで、アプリケーション・セキュリティ・テストの優先順位付けが容易になります。注目度の高いアプリケーションのリストを作成することで、Webセキュリティ・テストのスケジューリングでは重要なアプリケーションから先に対象とし、より対象を絞ったテストを実施してビジネスに対するリスクを軽減することができます。
Webアプリケーション・セキュリティ・テストで確認する必要がある機能
Webアプリケーション・セキュリティ・テストでは、次の機能一覧を確認する必要があります。各機能の実装が不適切であると、脆弱性が発生し、組織に重大なリスクが生じる可能性があります。
- アプリケーションとサーバーの構成 潜在的な欠陥は、暗号化/暗号の構成、Webサーバーの構成などに関連しています。
- 入力の検証とエラー処理 SQLインジェクション、クロスサイト・スクリプティング(XSS)、およびその他の一般的なインジェクションの脆弱性は、入力および出力処理が不適切な結果として生じます。
- 認証およびセッション管理 ユーザーのなりすましにつながる可能性がある脆弱性。認証情報の強度と保護も考慮する必要があります。
- 認可 垂直および水平方向の特権エスカレーションで保護するためのアプリケーションの機能をテストします。
- ビジネス・ロジック ビジネス・ロジックは、ビジネス機能を提供するほとんどのアプリケーションにとって重要です。
- クライアント側ロジック 最近のJavaScriptを多用したWebページ、およびその他の種類のクライアント側テクノロジ(Silverlight、Flash、Javaアプレットなど)を使用したWebページでは、この種の機能が増えています。