デジタルサービスに依存する組織にとって、Webアプリケーションのセキュリティ ベストプラクティスに従うことが不可欠です。これには、Webサイトとアプリの脆弱性を定期的かつ継続的にテストすることが含まれます。 セキュリティテストにより、組織は攻撃者による悪用を受ける前にWebアプリの脆弱性を早期に特定・修正できるほか、導入済みのセキュリティメカニズムや管理策が実際の環境下で意図通りに機能しているかを圧力テストして確認できます。
このブログ記事で、Webアプリケーションのセキュリティテストの主要なカテゴリと、それぞれをいつどのように活用すべきかを詳しく解説します。 具体的なWebアプリセキュリティテストツールの例を挙げながら、Webアプリのセキュリティのベストプラクティスをお伝えします。 最後には、実務で役立つアドバイスやガイダンスを盛り込んだ便利なWebアプリセキュリティチェックリストもご用意しています。
ウェブには主に3つの種類がありますアプリケーション セキュリティテスト。 静的アプリケーション セキュリティ テスト(SAST)はソースコードの分析を通じて脆弱性を特定します。一方、動的アプリケーション セキュリティ テスト(DAST)は、アプリケーションが稼働している間に外部の攻撃対象領域(通常はクライアント側やフロントエンド)をスキャンし、脆弱性をテストします。 侵入テスト(一般的にペンテストと呼ばれます)では、サイバーセキュリティの専門家がリアルタイムの攻撃をシミュレートし、潜在的なセキュリティの弱点をより深く理解します。
SASTは、プログラムを実行せずにアプリケーションのコードベースを分析し、ソフトウェア開発ライフサイクルの早い段階で既知の脆弱性やコーディングの欠陥を特定します。そのため、アプリケーションを本番環境に展開する前に問題を発見できる最適な手法です。 SASTによって検出される一般的な脆弱性には、データが割り当てられたメモリバッファを超えるバッファオーバーフローがあり、これによりクラッシュやコードの不正実行が引き起こされる可能性があります。 また、SQLインジェクションの脆弱性も検出可能です。これは、サニタイズされていない入力をデータベースクエリに使用し、攻撃者がデータを操作したりアクセスしたりできる攻撃です。 さらに、クロスサイトスクリプティング(XSS)も検出できます。これは、悪意のあるスクリプトが他のユーザーが閲覧するWebページに注入される攻撃です。
DASTとは異なり、SASTツールは通常、開発ライフサイクルの早い段階で実行され、セキュアコーディングプラクティスが遵守されていることを確認し、エラーの修正が容易な時点で検出します。 ペンテストとは異なり、SASTは一般的に自動化ツールを使い、人間の介入を最小限に抑えながら実行され、多くの場合、継続的インテグレーションと継続的デリバリー(CI/CD)プロセスの一環として行われます。
SASTツールはプログラミング言語ごとに異なるため、使う言語に対応したものを選んでください。 Open Worldwide Application Security Project(OWASP)がSASTツールの詳細なリストを管理しています。
DASTはアプリケーションの実行中に分析し、ソースコードでは見えない実行時の脆弱性を特定します。 DASTは特定の環境条件下でのみ現れる構成依存の脆弱性を検出し、APIやデータベース、サードパーティサービスとの連携に潜むセキュリティのリスクを明らかにします。 また、DASTは入力操作やセッションの悪用など、悪意ある予期せぬユーザー行動によって引き起こされる脆弱性も検出します。
SASTとは異なり、DASTツールはアプリケーションが本番稼働してから、開発ライフサイクルの後半で実行されます。 DASTはソースコードにアクセスせず、クライアント側から調査とテストを行い、脆弱性を発見して悪用しようとする攻撃者の動きを再現します。 DASTはステージングや本番に近い環境で問題を特定するうえで特に有効で、SASTなどコードレベルのテストを補完します。 また、DASTはペンテストとは違い、ほとんど人手を介さず自動化ツールで実行され、CI/CDプロセスの一環として継続的に稼働します
F5はF5 Distributed Cloud Web App Scanningを使ってDASTタイプのソリューションを提供し、自動でWeb資産をクロール・発見・マッピングしてドメイン全体のアプリケーションとサービスの正確なインベントリを作成し、Webセキュリティをシンプルにします。 自動化されたペネトレーションテストを実施し、CVEをはじめ古いソフトウェアなどの既知の脆弱性から、OWASPトップ10やLLMトップ10といった未知の脆弱性まで特定します。 こうした積極的な取り組みにより、あなたのWeb資産をしっかり守り抜きます。 OWASPはDASTツールの豊富なリストも公開しています。
ペネトレーションテストは通常、経験豊富なサイバーセキュリティ専門家が実施し、巧妙化した現実の攻撃を模倣して、アプリケーション、システム、またはネットワークの脆弱性を特定・悪用します。 ペンテストによって攻撃者が弱点をどのように突くか、その結果何が起こり得るのかを明らかにし、組織のセキュリティ体制を深く理解できます。
ペンテストは、ビジネスロジック攻撃など、自動化ツールでは見つけにくい高度で複雑な脅威を明らかにするのに特に効果的です。これらはアプリケーションの意図された機能やプロセスを悪用します。 また、攻撃者が個人を操作して不正アクセスや情報を得ようとするソーシャルエンジニアリング攻撃の可能性も特定できます。
SAST や DAST とは異なり、侵入テストはほとんどの組織でスケジュールに基づいて実施します。 このテストは、予算やセキュリティ要件に応じて、年1回、四半期ごと、または月ごとに行われることが多いです。
侵入テストでは多様な専門ツールを使い、攻撃を模擬して組織のデジタル環境全体の潜在的な脆弱性を明らかにします。たとえば、ウェブアプリケーションスキャナーでドメインの外部攻撃面を把握し、弱点を特定します。 また、ネットワークスニファーで不正な活動やデータ漏洩の兆候がないかネットワークトラフィックを監視・解析し、ウェブプロキシでブラウザと組織のウェブサーバ間の通信を傍受・検査して、安全でないデータ送信といった問題を検出します。 パスワードクラッキングツールは、パスワードのハッシュ化の強度や不適切に保存された認証情報の安全性を評価します。
Burp Suiteなどの専門的なテスト製品はいくつかの包括的なペンテストツールを提供しますが、ほとんどのペンテスターはそれぞれの作業に最適な専用ツールを使い分けています。 一部のツールは「自動ペネトレーションテスト」を謳い、手動テストよりも費用を抑えられる方法を提供しますが、予算が許す限り、サイバーセキュリティの専門家に包括的な手動テストを定期的に実施してもらい、その間を継続的な自動テストで補うのが効果的です。
さらに、F5は無料のWebアプリスキャンを提供しており、あらゆる組織のWebアプリケーションのセキュリティ状況を評価し、改善するための第一歩として役立ちます。 このインタラクティブな取り組みにより、あらゆるドメインの可視性を得られ、セキュリティ防御を強化するための優れた基盤となります。
選択したウェブアプリケーションのセキュリティテストツールの効果を最大限に引き出すために、これらのベストプラクティスを確実に守ってください。
ソフトウェア開発ライフサイクル全体にセキュリティテストを統合し、脆弱性を早期かつ頻繁に発見します。
以下は、SAST、DAST、侵入テストのいずれを使用していても、Webアプリのセキュリティテスト中に確認すべき情報や脆弱性の種類をまとめた便利なチェックリストです。 詳細については、OWASP Webアプリケーション セキュリティ テストガイドを参照してください。Webアプリのセキュリティ テストに関する段階的な手順を詳しく解説した包括的なリソースです。
カテゴリ | 説明 |
---|---|
source":"Information gathering","ja":"情報収集 |
Webアプリケーションのフレームワーク、エントリーポイント、実行経路をマッピングし、検索エンジンやWebコンテンツ、メタファイルを通じた情報漏洩のリスクを特定します。 |
構成および導入の管理 | ネットワークおよびアプリケーション プラットフォームの構成、HTTP メソッド、コンテンツ セキュリティ ポリシー、ファイルの権限を実際にテストしてください。 |
アイデンティティ管理 | ロール定義、アカウントの作成プロセス、ユーザー名のポリシーを実際に試して確かめましょう。 |
認証 | デフォルトの資格情報、認証バイパス、脆弱な認証方法、ロックアウトメカニズム、パスワード変更機能を確実に守る力の観点からテストします。 |
認証 | ディレクトリトラバーサル、不正な直接オブジェクト参照、権限の不正昇格、OAuthの弱点をあなたのシステムで確認しましょう。 |
セッション管理 | セッション管理の仕組みとCookie属性を確認し、公開されたセッション変数やセッションハイジャック、クロスサイトリクエストフォージェリの脆弱性をテストしましょう。 |
入力検証 | クロスサイトスクリプティング、データインジェクション(SQLインジェクション、LDAPインジェクション、コードインジェクションなど)、およびサーバー側リクエストフォージェリのテスト。 |
エラー処理 | エラー処理によって攻撃者が使用中のAPIやサービス統合を把握したり、DoS攻撃を誘発したりしないようにしてください。 |
暗号技術 | 弱いトランスポート層セキュリティ、弱い暗号化、および暗号化されていないチャネルを通じて送信される機密情報のテスト。 |
業務ロジック | ビジネスロジックのデータ検証、リクエストの成りすまし防止、想定外のファイルタイプのアップロード、支払い機能を確認してください。 |
source":"Client side","ja":"クライアント側 | DOMベースのクロスサイトスクリプティング、HTMLおよびCSSインジェクション、クライアント側のURLリダイレクト、クロスオリジンリソース共有、クロスサイトフラッシングを検証します。 |
API | API偵察を実行し、壊れたオブジェクトレベルの承認をテストします。 |
詳しくは、ソリューション概要をご覧ください。