アプリケーションセキュリティでは、テクノロジー、プロセス、リスク管理手順を活用し、悪意のある攻撃者やシステムを不安定化させる脅威からアプリケーションを保護します。

アプリケーションセキュリティとは、脆弱性の悪用、設定ミス、ビジネスロジックの悪用、不正アクセスなど、アプリケーションのライフサイクル全体にわたるさまざまな脅威からソフトウェアを保護するために、対策や保護措置を講じる取り組みです。アプリケーションとそのデータの機密性、完全性、可用性を確保するためのセキュアコーディング、脆弱性評価、セキュリティテストなど、幅広い手法が含まれます。また、Webアプリケーションファイアウォール、ボット管理ツール、DDoS緩和策などのセキュリティソリューションも含まれます。

アプリケーションセキュリティが重要な理由

アプリケーションセキュリティは、新たなテクノロジー、変化する脅威環境、開発手法の変化に対応するため、継続的に進化しています。今日のアプリケーションは、多様なネットワークを介して利用され、複数のクラウドやエッジ環境に接続されることが多いため、攻撃対象領域が拡大し、リスクが高まっています。

さらに、ほとんどの組織では従来型とモダンのアプリケーションアーキテクチャが混在しており、アプリケーションセキュリティの複雑さが増しています。F5 State of Application Strategyによると、回答者のアプリケーションポートフォリオの3分の1超(40%)はモダンアプリケーション(モバイルアプリやマイクロサービスを利用するアプリケーションを含む)である一方、ほぼすべての回答者が従来型アプリケーションも引き続き運用していると回答しています。「その結果、大多数(85%)の組織が、多様なホスティング環境にまたがることも多いモダンアプリケーションと従来型アプリケーションの両方を管理し、保護するという課題に直面しています。」

このように複雑で、従来型とモダン型が混在するアプリケーション環境は、セキュリティ防御を突破する手法を絶えず高度化させている悪意ある攻撃者にとって格好の標的です。アプリケーションのセキュリティ対策は、設計、開発、デプロイのすべての段階で継続的に実施する必要があります。攻撃者がネットワークへの侵入やデータの侵害に悪用する前に、アプリケーションの潜在的な脆弱性を特定するには、アプリケーションセキュリティのベストプラクティス、セキュリティテスト、セキュリティテクノロジーのすべてが不可欠です。ソフトウェアサプライチェーンの複雑化とオープンソースソフトウェアの普及を背景に、ソフトウェア部品表(SBOM)と、リスクをもたらす可能性のある自動化パイプラインを強化する必要性への注目が高まっています。

一般的なアプリケーションセキュリティリスクとその影響

一般的なアプリケーションセキュリティの脅威には、次のものがあります。

  • インジェクション攻撃。 信頼できないデータがコマンド言語やクエリ言語に挿入されると、インジェクションの脆弱性が生じ、悪意のあるコマンドが意図せず実行される可能性があります。これには、SQL、NoSQL、OS、LDAPのインジェクション攻撃が含まれます。
  • 安全でない設計。これは、セキュリティ制御の欠如や不備、アーキテクチャ上の欠陥など、さまざまな弱点を含む広範なカテゴリです。これらの欠陥はアプリケーションの設計方法に関係しており、脅威モデリング、セキュア設計のパターンと原則、リファレンスアーキテクチャをさらに活用する必要があります。
  • セキュリティの設定ミス Webアプリケーションフレームワーク、プラットフォーム、サーバー、またはセキュリティ制御のセキュリティ強化が不十分な場合、不正アクセス、機密情報の漏えい、その他のセキュリティ脆弱性につながる可能性があります。
  • アクセス制御の不備。 アクセス制御と認可が十分に適用されていない場合、攻撃者が制御の回避やパラメーターの操作を行ったり、意図された権限の範囲を逸脱して行動したりすることで、許可されていない機能やデータにアクセスできる可能性があります。
  • 暗号化の不備。 クレジットカード番号、個人を特定できる情報(PII)、医療記録などの機密データが転送中および保存時に適切に保護されていない場合、機密データの保護が不十分になります。暗号化の不備は、データ侵害、機密情報への不正アクセス、EU一般データ保護規則(GDPR)などのデータプライバシー規制や、PCIデータセキュリティ基準(PCI DSS)などの金融関連基準への違反につながる可能性があります。

こうしたアプリケーションセキュリティリスクにより、データ侵害に伴う金銭的損失、法的・規制上の影響、ブランドの評判や顧客からの信頼の低下が生じる可能性があります。

アプリケーションセキュリティの5つの種類

堅牢なアプリケーションセキュリティ体制を構築し、アプリケーションレベルのさまざまな攻撃や脆弱性から保護するには、以下の5種類のアプリケーションセキュリティ対策が不可欠です。

  • 認証と認可の制御認証では、アプリケーションにアクセスするユーザーやシステムの身元を確認します。パスワード、多要素認証(MFA)、生体認証などの方法を使用し、認可された主体のみが機密リソースにアクセスできるようにします。一方、認可では、認証後のユーザーがアクセスできる操作やリソースを決定し、適切な権限とアクセス制御を適用します。
  • 入力検証と出力エンコーディング。 入力検証では、ユーザーが提供したデータを処理する前に、適切に検証およびサニタイズし、悪意のあるコンテンツが含まれていないか確認します。これにより、SQLインジェクションやクロスサイトスクリプティング(XSS)などのインジェクション攻撃を防止します。出力エンコーディングでは、ユーザーにデータを表示する際に適切にエンコードし、XSSやその他の出力に関連する脆弱性を防止します。
  • セッション管理。セッション管理では、ユーザーセッションを安全に管理し、ユーザーによるアプリケーション操作の状態を維持します。これには、安全なセッション識別子の生成、セッションタイムアウトの適用、セッションデータの改ざん防止、セッション固定攻撃やセッションハイジャック攻撃の防止が含まれます。
  • 暗号技術。暗号技術とは、暗号アルゴリズムとプロトコルを使用して機密データを保護する手法です。これには、保存中および転送中のデータの暗号化、安全な鍵管理、パスワード保存用のハッシュ化、データの完全性と認証のためのデジタル署名、SSL/TLSなどの安全な通信プロトコルが含まれます。
  • エラー処理とログ記録。効果的なエラー処理は、攻撃者に悪用される可能性のある情報漏えいの防止に役立ちます。認証の失敗や不審なアクティビティなど、セキュリティに関連するイベントのログ記録と監視は、セキュリティインシデントの検知と対応に不可欠です。適切に実装されたログは、フォレンジック調査やセキュリティ侵害の特定に役立ちます。

アプリケーションセキュリティのベストプラクティス

アプリケーションセキュリティのベストプラクティスを導入し、遵守することで、効果的なセキュリティ制御の強固な基盤を構築できます。ソフトウェア開発ライフサイクル全体にセキュリティ上の考慮事項を組み込み、新たな脅威や脆弱性の出現に応じて、セキュリティ対策を継続的に再評価し、改善することが重要です。

効果的なアプリケーションセキュリティを実現するための主なベストプラクティスは次のとおりです。

  • 包括的な脅威評価の実施:アプリケーション固有の潜在的なリスクと脆弱性を特定します。これには、アプリケーションのアーキテクチャ、依存関係、潜在的な攻撃経路の分析が含まれます。
  • アプリケーションコンポーネント、サーバー、フレームワーク、プラットフォームがセキュアに構成されていることを確認します。ベンダーが提供するセキュリティのベストプラクティスとハードニングガイドラインに従います。これには、不要なサービスの無効化、認証情報のセキュアな管理、利用可能な最新バージョンのパッチがすべてのコンポーネントに適用されていることの確認が含まれます。
  • セキュリティのシフトレフト:ソフトウェア開発ライフサイクルの早期段階からセキュリティを考慮します。潜在的な脆弱性に先回りして対処できるよう、セキュアコーディング、脅威モデリング、セキュリティテストなどのセキュリティ対策を初期設計段階から取り入れます。
  • 堅牢な認証メカニズムの実装:強力なパスワード、多要素認証(MFA)、生体認証などを使用して、ユーザーの本人確認を行います。適切な認可制御を適用して、ユーザーに適切なアクセス権限を付与し、機密性の高いリソースや機能へのアクセスを制限するとともに、ラテラルムーブメントや権限昇格を防止します。
  • リスクベースのアプローチを策定し、修復作業の優先順位を決定します。潜在的な影響と悪用可能性に基づき、リスクの高い脆弱性への対処を優先します。迅速に修復するための明確なプロセスを確立します。
  • 堅牢な監視およびログ記録メカニズムの実装により、セキュリティインシデントを効果的に検知し、対応します。不審なアクティビティ、ログイン試行の失敗、異常な動作を監視します。インシデントの調査と対応に役立つよう、監査ログを保持します。

アプリケーションセキュリティの確保

アプリケーションセキュリティは継続的なプロセスであり、包括的な保護を確保するには多層的なアプローチが必要です。以下のチェックリストを使用してセキュリティ対策を定期的に再評価し、更新することで、進化するセキュリティリスクに対するアプリケーションのレジリエンス維持に役立ててください。

  • 徹底したセキュリティ評価とコードレビューを実施する。包括的なセキュリティ評価を実施し、アプリケーションに潜む脆弱性や弱点を特定します。これには、自動化ツールによる一般的な脆弱性のスキャンや、動的コード解析を活用したセキュリティ上の欠陥の検出が含まれます。
  • セキュアコーディングのプラクティスとフレームワークを導入する。業界で認知されたコーディング標準を使用するとともに、厳格なセキュリティテストを経て、開発者コミュニティによって継続的にメンテナンスされているセキュアコーディングのフレームワークやライブラリを活用するなど、開発当初からセキュアコーディングのプラクティスを採用します。
  • アプリケーションを定期的に更新し、パッチを適用する。 サードパーティ製コンポーネントのセキュリティを確保し、アプリケーション内で使用するライブラリ、フレームワーク、依存関係を定期的に更新してパッチを適用することで、既知の脆弱性を軽減します。
  • 脆弱性テストとペネトレーションテストを実施する。Dynamic Application Security Testing(DAST)を含む自動スキャンツールを使用して定期的に脆弱性テストを実施し、アプリケーションに潜在する脆弱性を特定します。実際の攻撃をシミュレートするペネトレーションテストを実施して、アプリケーションのセキュリティ態勢を評価し、自動化ツールでは検出できなかった可能性のある弱点を明らかにします。これらの検出結果をWebアプリケーションファイアウォールのセキュリティポリシーに反映することで、脆弱性の悪用に対する重要な暫定対策として活用できます。
  • 開発者を教育し、セキュリティを最優先する意識を醸成する。一般的な脆弱性やセキュアコーディングの実践に対する開発者の理解を深めるため、セキュリティ研修と意識向上プログラムを提供します。開発プロセス全体でセキュリティ対策を実施する重要性を強調し、セキュリティ上の考慮事項を優先するよう開発者に促します。

アプリケーションセキュリティテスト

アプリケーションセキュリティテストは、攻撃者に悪用される前に脆弱性、弱点、欠陥を検出して特定するうえで重要な役割を果たします。

静的アプリケーションセキュリティテスト(SAST)は、アプリケーションのソースコード、バイトコード、またはバイナリコードを解析し、セキュリティ上の脆弱性や弱点を特定します。通常は開発段階で実施され、SASTツールはパターンマッチング、コード解析、ルールベースの手法を組み合わせて、一般的な脆弱性やコーディングエラーを特定します。

動的アプリケーションセキュリティテスト(DAST)は、Webアプリケーションの実行中に、脆弱性や弱点をリアルタイムで特定することに重点を置いています。DASTでは、セキュリティスキャナーやツールを使用してアプリケーションとやり取りし、さまざまなリクエストや入力を送信することで脆弱性を特定します。

ペネトレーションテストでは、実際の攻撃をシミュレーションし、アプリケーションのセキュリティを能動的に評価します。このテストでは、熟練したセキュリティ専門家がアプリケーションの脆弱性を悪用し、さまざまな攻撃ベクトルに対するレジリエンスを確認します。

組織では、アプリケーションセキュリティを包括的に評価するために、これらのテスト手法を組み合わせて使用することが一般的です。また、STRIDEやDREADなどの脅威モデリングツールは、こうしたリスク管理手法を活用するうえで有用な指針となります。

セキュアコーディングと脆弱性管理の重要性

セキュアコーディングは、レジリエントでセキュアなソフトウェアアプリケーションを構築するための基盤です。開発プロセスでインジェクション攻撃、バッファオーバーフロー、安全でない直接オブジェクト参照などのセキュリティ上の欠陥や一般的な脆弱性が入り込むリスクを最小限に抑えるには、確立されたコーディング標準、ベストプラクティス、ガイドラインに従う必要があります。開発者は、最新のセキュリティ対策を常に把握し、アプリケーションの攻撃対象領域を縮小することで、新たな脅威に備える必要があります。

脆弱性管理も、アプリケーションのコード、ライブラリ、依存関係に潜む脆弱性、設定ミス、弱点を自動化ツールや手動の手法で特定し、アプリケーションのセキュリティ上の欠陥に対処するうえで重要な役割を果たします。脆弱性を特定した後は、深刻度、悪用可能性、潜在的な影響に基づいて優先順位を付けることができます。これにより組織は、アプリケーションのセキュリティに最大の脅威をもたらす高リスクの脆弱性への対処に、リソースと労力を集中できます。

セキュアコーディングと脆弱性管理は継続的なプロセスであり、開発ライフサイクルに組み込むことで、あらゆるクラウドとアーキテクチャにわたってアプリケーションセキュリティの保護と一貫したポリシー適用を実現する必要があります。

アプリケーションセキュリティ制御の詳細

アプリケーションセキュリティ制御は、アプリケーションを保護し、機密データを守るうえで不可欠です。これには、アプリケーションへのアクセスを試みるユーザーやシステムの本人確認と認可を行う認証制御が含まれます。パスワード、多要素認証(MFA)、生体認証などの強力な認証メカニズムにより、ユーザーの本人確認を行い、不正アクセスを防止します。

アクセス制御も、ユーザーのロール、権限、属性に基づいてユーザー権限を制限し、アプリケーション内でアクセス可能な操作やリソースを決定することで、アプリケーションの保護に役立ちます。

アプリケーションセキュリティ制御には、データが侵害された場合でも機密情報への不正アクセスを防止するために、強力な暗号化アルゴリズムと安全な鍵管理手法も含まれます。

さらに、監査およびログ記録の仕組みにより、ユーザー操作、ログイン失敗、アクセス制御の変更、重大なシステムイベントなど、アプリケーション内のセキュリティに関連するイベントやアクティビティを記録し、アプリケーションセキュリティを強化できます。ログの保持と監査の実施は、監視とフォレンジック分析を支援し、セキュリティインシデントやポリシー違反の検出にも役立ちます。

クラウドにおけるアプリケーションセキュリティ

組織が複数のクラウドプロバイダーの機能やエッジコンピューティングリソースを活用するにつれ、アプリケーション設計の分散化が進み、アプリケーションセキュリティの確保はますます複雑になっています。

分散クラウド環境は、多くの場合、モジュール性、拡張性、相互接続性を考慮して設計された、マイクロサービスベースのモダンアプリケーションで構成されています。このアーキテクチャには多くのメリットがある一方で、新たなセキュリティリスクも生じます。各マイクロサービスが潜在的な攻撃対象領域となり、ラテラルムーブメントの経路にもなり得るため、専門的なセキュリティ対策が必要です。

分散アプリケーション環境で包括的なセキュリティを実現するには、組織は従来のネットワークファイアウォールをアプリケーションおよびAPIセキュリティソリューションで補完する必要があります。ネットワークファイアウォールは、ネットワークポリシーの適用やネットワークスタックの下位レイヤーにおけるトラフィックの検査には優れていますが、クロスサイトスクリプティング(XSS)、SQLインジェクション、APIの悪用など、アプリケーションレイヤーの脅威の検出と緩和には効果的ではありません。

組織がマルチクラウドやエッジにまたがる分散アプリケーション環境を採用するにつれ、あらゆるレイヤーで堅牢なセキュリティ対策を講じる必要性がますます高まっています。従来のネットワークセキュリティ対策にアプリとAPIのセキュリティソリューションを組み合わせることで、最新のマルチクラウドおよびエッジアプリケーションを包括的に保護できます。

モバイルアプリケーションセキュリティ

モバイルデバイス固有の特性や動作環境により、モバイルアプリケーションのセキュリティ確保には特有の課題があります。モバイルアプリケーションは、Webアプリケーションとは異なるアーキテクチャパターンを採用しており、オペレーティングシステム、バージョン、ハードウェア機能が異なる幅広いデバイス上で動作する必要があります。この多様性によって、さまざまなプラットフォームで一貫したセキュリティを確保することが複雑になり、脆弱性への対処やセキュリティ制御の一律適用が困難になります。

さらに、iOSやAndroidなどのモバイルオペレーティングシステムでは、アプリケーション開発者が基盤システムを制御できる範囲が制限されているため、特定のセキュリティ対策の実装に影響が及ぶ可能性があります。また、モバイルデバイスでは、位置情報、連絡先、個人的な通信内容など、膨大な量の個人データや機密データが扱われます。安全でない通信チャネル、保護されていないストレージ、不十分なデータ暗号化によるデータ漏えいのリスクは、モバイルアプリケーションの設計者にとって重大な懸念事項です。

デバイスの紛失、盗難、侵害が発生した場合のデータ漏えいを防ぐには、暗号化、安全な鍵管理、安全なファイル処理などのデータを安全に保存するための対策に加え、コードの難読化や改ざん防止技術などの対策を実装することが極めて重要です。堅牢なモバイルアプリケーションセキュリティ戦略には、定期的なセキュリティテストと評価、モバイルデバイス管理(MDM)ソリューション、ユーザー教育も不可欠です。

悪意のある攻撃者がユーザーに気付かれないようにマルウェアやキーロガーを仕込み、データを外部に流出させる可能性があるため、クライアント側での改ざん防止も不可欠です。

Webアプリケーションセキュリティ

堅牢なWebアプリケーションセキュリティは、さまざまな理由から極めて重要です。サービスのデジタル化が進むにつれ、Webアプリケーションでオンライン上に保存・処理される機密データが増えています。Webアプリケーションセキュリティは、不正アクセス、侵害、窃取からこのデータを保護するのに役立ちます。

さらに、多くの組織ではWebアプリケーションが事業運営に不可欠であり、サービスの中断や侵害が発生すると、その可用性と信頼性に重大な影響が及ぶ可能性があります。Webアプリケーションセキュリティは、サイバー攻撃やその他のエクスプロイトによるリスクが高まる中でも、収益と顧客満足度を支えるデジタルサービスの保護に役立ちます。

多くの業界では、データプライバシーとセキュリティに関する厳格な規制も適用されます。企業は、堅牢なWebアプリケーションセキュリティ対策を実施することで、こうした規制への準拠を維持できます。

一般的なWebアプリケーションの脆弱性には、SQLインジェクション攻撃やクロスサイトスクリプティングがあります。攻撃者はこれらの脆弱性を悪用して、アプリケーションの機密領域や基盤となるサーバーインフラストラクチャに不正アクセスし、機密データやログイン認証情報の窃取、アプリケーションの動作の改ざん、権限昇格によるアプリケーションの制御などを行う可能性があります。また、クレデンシャルスタッフィングやブルートフォース攻撃などの自動化された攻撃も、Webアプリケーションを標的として頻繁に行われます。

これらの攻撃に伴うリスクを軽減するため、組織はセキュアコーディング、入力検証、出力エンコーディングを実施し、セキュリティのベストプラクティスに従う必要があります。

DAST、SAST、ペネトレーションテストなど、定期的なセキュリティテストも重要です。また、ログイン、アカウント作成、パスワードのリセット、ショッピングカート、送金機能などの重要なビジネスロジックには、アカウント乗っ取り(ATO)や不正行為を防止できるボット管理ソリューションも必要です。

変化する環境におけるアプリケーションセキュリティ

新たなテクノロジーやトレンドは進化を続けています。仕事、銀行取引、買い物、医療サービスの利用、旅行、娯楽などでデジタル体験への依存が高まる中、組織はアプリケーションセキュリティ対策を適応させる必要があります。以下では、アプリケーションセキュリティにおける注目すべきトレンドと課題を紹介します。

  • クラウドネイティブアプリケーションのセキュリティ クラウドコンピューティングが広く普及する中、組織はマイクロサービスアーキテクチャとコンテナ化を採用したクラウドネイティブアプリケーションの開発とデプロイを進めています。複数のクラウド拠点やクラウドプロバイダーを含む可能性がある環境で包括的なセキュリティ態勢を確保するには、コード、依存関係、クラウド構成など、アプリケーションセキュリティのあらゆるレベルを対象として、開発プロセス全体でアプリケーションセキュリティテストを統合的に実施することが不可欠です。
  • APIセキュリティ。組織がサードパーティとの連携にAPIを公開するケースが増えるにつれ、これらのインターフェースの保護が極めて重要になります。最新のアプリケーションは複数のAPIに依存することが多く、APIエコシステム全体の保護はさらに複雑化しています。APIごとにセキュリティ要件、認証方式、アクセス制御が異なる場合があり、一貫性のある包括的なセキュリティ態勢を維持することが困難になります。APIセキュリティの課題には、インジェクション、不適切な認証や認可などの攻撃への対策に加え、データのプライバシーと完全性の確保が含まれます。
  • 分散型マルチクラウド環境におけるアプリケーションセキュリティ。 多くの組織は、従来型および最新のアプリケーションアーキテクチャに加え、複数のクラウド、オンプレミスのデータセンター、エッジサイトにまたがる攻撃対象領域の拡大という課題に直面しています。分散環境全体でアプリケーションとデジタルサービスに一貫したセキュリティポリシーを適用し、管理できるようにすることは、非常に複雑です。しかし、アプリケーションとAPIのポートフォリオ全体で、一貫したマルチクラウド向けアプリケーションセキュリティおよびデリバリーソリューション群を使用することで、組織はセキュリティを強化し、パフォーマンスとレジリエンスを向上させるとともに、オンプレミス、マルチクラウド、エッジの各環境にわたってポリシーを統一できます。

F5はアプリケーションセキュリティにどう対応するのか

アプリケーションセキュリティには多種多様なツールや手法がありますが、いずれも目的は同じです。弱点や脆弱性を特定し、攻撃者に悪用される前に修正することです。

F5は、アプリケーションセキュリティとは、より安全なデジタル世界を実現することだと考えています。また、F5のアプリケーションおよびAPIセキュリティソリューションは、アプリケーションとデジタルサービスの保護を統合し、セキュリティポリシーを一貫して適用することで、ハイブリッド環境とマルチクラウド環境の運用上の複雑さを軽減します。

つまり、組織は単一のクラウドサービスプロバイダー内の拠点間でも、異なるプロバイダー間でも安全に接続できます。また、分散したデジタルサービスをネイティブに接続して保護することで、運用の複雑さを軽減しながら、エンドユーザーに優れたセキュリティ、可用性、パフォーマンスを提供できます。

F5は、包括的なセキュリティ製品群を提供しています。これにより、アプリ、API、およびそれらが支えるデジタルサービスを強力に保護します。F5のセキュリティソリューションは、レガシーアプリにもモダンアプリにも、データセンター、クラウド、エッジのいずれでも、現在のアーキテクチャはもちろん、今後数年にわたり組織を支えるアーキテクチャでも、確実に機能します。