アプリケーションセキュリティとは、第三者から提供されたアプリケーションであるか、自社開発のアプリケーションであるかを問わず、またどこに存在し、どのようにアクセスされるかにかかわらず、ソフトウェアとデータをハッカーから保護する取り組みです。この定義は、クラウドやデータセンター、オンプレミス環境、モバイルユーザーやWebユーザーにまで及ぶため、アプリケーションセキュリティには、さまざまなベストプラクティスとツールが必要です。
アプリケーションセキュリティへの理解を深めることで、企業は貴重な資産を保護し、壊滅的なデータ侵害のリスクを軽減するために必要な措置を講じられます。
アプリケーションセキュリティはどのように機能するのか?
アプリケーションセキュリティは、セキュリティ制御とベストプラクティスを組み合わせて実現します。
ベストプラクティスには、アプリケーションにセキュリティホールが不注意に持ち込まれないようにする安全な開発手法に加え、APIセキュリティや構成に関する問題への対策も含まれます。
制御には、適切なパスワード管理からWebアプリケーションファイアウォール、内部ネットワークのセグメンテーションまで、さまざまなものがあります。これは各段階でリスクを低減する多層的なアプローチです。
DevSecOpsとコードセキュリティおよびデバッグツールは、開発者に関する一般的な問題への対応に役立ちますが、次のセクションではさらに多くの制御とベストプラクティスを取り上げます。
アプリケーションセキュリティにはどのような種類があるのか?
AppSecに必要なセキュリティ対策は、アプリケーションの種類と関係するリスクによって異なります。重要情報や機密情報を扱わない一般公開のWebアプリケーションは、個人を特定できる情報(PII)を含む顧客データベースほど強固なセキュリティを必要としないかもしれません。しかし、深刻化する可能性のあるセキュリティ問題を避けるため、適切な開発およびセキュリティの実践によって保護する必要があります。
AppSecチームが保護する必要のある、最も一般的なアプリケーションソフトウェアの種類を以下に示します。
Webアプリケーションセキュリティ
Webアプリケーションの情報は、アプリケーションや用途に応じて、通常さまざまな場所に保存されます。これには、構成ファイル、機密情報の保存に使われるデータベース、アクティビティの監視に使われるログファイル、Webアプリケーションとユーザー間の接続の確立および保護に使われる証明書と鍵などが含まれます。
Webアプリケーションセキュリティチェックリスト
Webアプリケーションを保護する方法は数多くあります。ここでは9つ紹介します。
Webアプリケーションスキャナーは、Webサイトや外部公開アプリケーションの脆弱性をテストします。通常、これらのテストでは脆弱性スキャナーを使用します。
ペネトレーションテストも同様のアプローチですが、通常はセキュリティ専門家のチームがサイバー攻撃を模擬し、ハッカーに悪用される可能性のある弱点を特定します。
サイトの脆弱性を定期的にテストする。パスワード、クレジットカード番号、社会保障番号などの機密情報をCookieに保存することは、情報漏えいのリスクがあるため推奨されません。一部のブラウザーはCookieの代替としてSQLiteデータベースを提供していますが、セキュリティを維持し、データの露出を最小限に抑えるには、正しく構成することが不可欠です。
開発者のベストプラクティスを使用する。脅威にはSQLインジェクションやクロスサイトスクリプティング(XSS)攻撃などがありますが、入力値のサニタイズなどの手法によってリスクを抑えられます。
関連記事:データベースセキュリティ:7つのベストプラクティスとヒント
より強固で固有のパスワードを使用することで、データ侵害や個人情報の盗難を防ぎ、機密情報や個人情報をより適切に保護できます。
ホスト名は使わず、代わりにサブドメインを使用する。サブドメインは、拡張性と柔軟性に優れているためWebベースのサービスに適しており、検索エンジンが別々のサイトとみなす可能性があることから、キーワードを最適化しやすく、SEOにも役立つ場合があります。
CAPTCHAを活用する(Completely Automated Public Turing tests to tell Computers and Humans Apart:コンピューターと人間を区別する完全自動公開チューリングテスト)ことで、自動化された攻撃を防ぎ、不正利用から保護し、ユーザー体験を向上させ、ユーザー生成データの真正性を確保するとともに、正当なユーザー操作だけが処理されるようにします。
安全なサーバー構成を実装してWebサイトのセキュリティとプライバシーを維持し、非公開データや機密データを保護します。
Webアプリケーションファイアウォール(WAF) は、さまざまなセキュリティ脅威からアプリケーションを保護する障壁として機能します。Webアプリケーションへの受信トラフィックを分析し、悪意のあるリクエストをブロックします。この追加のセキュリティ層によって、Webアプリケーションを脅威から保護し、セキュリティインシデントのリスクを最小限に抑えられます。
データセンターとエンタープライズアプリケーションのセキュリティ
データセンターとエンタープライズアプリケーションのセキュリティは、技術的対策と組織的対策を組み合わせて、機密データと重要システムを保護します。物理セキュリティ、ソフトウェアセキュリティ、ハードウェアセキュリティは、不正アクセスや悪意のある攻撃に対する防御を多層化する重要な基盤です。これらの要素を統合し、継続的に維持することで、組織は重要な情報とシステムを潜在的な脅威から確実に保護できます。
これらのオンプレミスアプリケーションにも同じ問題や制御の多くが当てはまりますが、特に重要なデータやアプリケーションについては、次のような追加の内部統制、例えばゼロトラストアクセス、マイクロセグメンテーション、特権アクセス管理を導入すべきです。こうした追加のセキュリティ制御の目的は、ネットワーク内でのラテラルムーブメントを制限し、ネットワーク境界の突破に成功したハッカーが組織の重要資産に到達できないようにすることです。
関連記事:MITRE ResilienCyCon:侵害は避けられない、だから備えよ
クラウドアプリケーションセキュリティ
CNAPP(Cloud Native Application Protection Platforms:クラウドネイティブアプリケーション保護プラットフォーム)とCASB(Cloud Access Security Broker:クラウドアクセスセキュリティブローカー)ツールは、クラウドベースのアプリケーションとデータに強固なセキュリティを提供します。CNAPは、セキュリティを強化するための暗号化、アクセス制御、脅威の検知および対応機能を提供します。CASBはAPIを活用し、クラウドと組織のネットワーク間に安全な接続を確立するセキュリティポリシーを適用して、機密情報の安全な送信を実現します。CNAPとCASBを導入することで、組織はクラウド環境をサイバー脅威から保護し、機密データを安全に守れます。
SaaSアプリケーションやクラウドプラットフォームは、概してかなり安全です。最大のリスクの一つは、APIや構成設定を介して組織がクラウドサービスにどれだけ安全に接続するかにあるため、これはクラウドセキュリティにおいて極めて重要な実践です。
クラウドプラットフォーム上で独自のアプリケーション(Platform as a Service、つまりPaaS)を構築する場合は、安全な開発手法も必要になります。
関連記事:
モバイルアプリケーションセキュリティ
クラウドアプリと同様に、モバイルアプリも企業に固有のリスクをもたらします。他のアプリケーションで通常行う手順に加えて、組織はモバイルアプリを保護するために以下の対策を講じるべきです。
- モバイル管理ソフトウェア:組織が従業員の使用するクラウドアプリを管理する必要があるのと同様に、雇用主が購入したデバイス上であれ、共有デバイス上であれ、モバイルアプリを監視・管理するための手順とツールも必要です。業務利用を承認したホワイトリスト登録済みアプリを含む、エンタープライズアプリストアを設定する組織もあります。モバイルセキュリティに取り組む包括的な方法の一つがエンタープライズモビリティ管理です。
- モバイル行動分析:同様にユーザーおよびエンティティの行動分析(UEBA)ソリューションと同様、モバイル行動分析ツールは、アプリが危険または悪意のある行動をしている兆候を探します。その後、疑わしいアプリにフラグを付け、IT部門が適切な対策を講じられるようにします。
- 暗号化:多くの組織が独自のモバイルアプリを開発しています。その場合、クラウドアプリと同様に、アプリが転送中および保存中のデータを暗号化するようにする必要があります。
- 強力な認証:クラウドアプリと同様に、ほとんどのモバイルアプリには二要素認証またはその他の強力な認証対策を導入すべきです。
- 権限の制限:企業が作成するカスタムモバイルアプリには、アプリが適切に機能するために必要な権限だけを要求させるべきです。これにより、アプリがもたらすセキュリティリスクを低減すると同時に、アプリユーザーにも安心感を与えられます。ユーザーから個人情報を取得するすべてのアプリケーションは、当然ながらデータプライバシー法の対象となるため、これらの法律や規制に従う必要があります。
アプリケーションセキュリティの問題とリスク
クラウドコンピューティング、エッジコンピューティング、モバイルデバイス、モノのインターネット(IoT)の普及に伴い、サイバー犯罪者が悪用できる攻撃対象領域はかつてないほど増えています。組織がより多くの機密情報を電子的に、しかもより多くの場所に保存するようになったことで、セキュリティ侵害の影響はより深刻になっています。
いわば朗報は、多くの問題が時代を超えて存在し続けているように見えることです。企業にとって、一般的なITセキュリティの脆弱性とその防止方法やOWASPの主要なWebアプリケーションの脆弱性を理解し、アプリケーションとシステムをパッチ適用し最新の状態に保つことはこれまで以上に重要です。ただし、それを正しく行うのはより難しくなっています。
近年、おそらく最大の新たな脅威となっているのは、オープンソースの依存関係、CI/CDの侵害や、開発プロセスを迅速化するためにアプリケーションがソフトウェアライブラリやオープンソースコンポーネントに依存することで発生するその他の脅威によってもたらされる、ソフトウェアサプライチェーンのリスクです。これらのコンポーネントの脆弱性によってアプリケーションが攻撃に対して無防備になり、その過程でパートナーもリスクにさらされる可能性があります。
この問題を受け、米国のサイバーセキュリティ機関は開発者向けのソフトウェアサプライチェーンセキュリティガイダンスを発行するに至り、ソフトウェア部品表(SBOM)はますます必須要件になっています。多くのアプリケーションセキュリティベンダーが、こうした依存関係の網からより適切に保護するためのソリューションに取り組んでいます。
もちろん、マルウェア、ランサムウェア、内部不正による窃盗などは、依然としてアプリケーションとデータに対する重大な脅威です。一部のクラウド企業やサービスプロバイダーは極端な手段にまで及ぶ対策を講じて自社と顧客を守っています。バックアップの保護など、こうした対策は強固なセキュリティに不可欠です。
分散型サービス拒否(DDoS)攻撃は、トラフィックの洪水によってWebサーバーを圧倒する可能性があるため、Webアプリケーションにとって依然として常に存在する脅威です。次のDDoS攻撃の阻止、DDoS防止、DDoS保護ソリューションに関する記事を参照し、攻撃中もWebサーバーを稼働させ続けるためのヒントを確認してください。
アプリケーションセキュリティテストにはどのような種類があるか
脅威が絶えず進化する世界では、アプリケーションを新たに出現する脅威から保護し続けるために、そのセキュリティを定期的に評価することが重要です。アプリケーションのセキュリティをテストすることで、コンプライアンス、信頼性、費用対効果を確保できます。脆弱性を早期に検出すれば、管理者は潜在的な脅威を緩和するために必要な措置を講じられます。組織がアプリケーションの安全性をテストする方法には、次のようなものがあります。
自動テストでは、ツールやスクリプトを使用して、アプリケーションに関するセキュリティ関連のタスク、プロセス、評価を自動化します。この手法は、セキュリティテストと監視の効率および精度を高めるとともに、手動テストに必要な時間と労力を削減することを目的としています。自動化は包括的なセキュリティプログラムに不可欠な要素ですが、最良の結果を得るには、必ず手動テストや専門家による分析と組み合わせる必要があります。
脅威モデリングは、アプリケーションの潜在的な脅威、リスク、脆弱性を事前に特定するのに役立つセキュア開発ライフサイクル(SDL)の要素です。脅威を特定して緩和するアプリケーション図を作成することで、セキュリティ要件の定義を支援します。このサイクルが完了すると、脅威モデリング評価を検証し、必要なソリューションを提供します。
静的アプリケーションセキュリティテスト(SAST)は、ソースコードの各行や命令をスキャンして、潜在的なエラーやバグを検出します。スキャンが完了すると、システムはその結果を既知の脆弱性やセキュリティリスクのデータベースと照合します。
動的アプリケーションセキュリティテスト(DAST)は、リアルタイムのトラフィックや攻撃シナリオを用いてアプリケーションのセキュリティを評価します。主に、攻撃者に悪用される可能性があるXSS、SQLインジェクション、リモートコード実行の脆弱性を観察します。
インタラクティブアプリケーションセキュリティテスト(IAST)は、アプリケーションの内部からテストを行い、動的解析と静的解析の両方の利点を組み合わせます。これにより、アプリケーションのセキュリティコードをより包括的に把握できます。IASTは、マイクロサービスやコンテナなどの技術を利用する最新のアプリケーションのセキュリティ評価にも使用できます。こうしたアプリケーションは、他の方法ではテストが難しい場合があります。
モバイルアプリケーションセキュリティテスト(MAST)は、攻撃者に悪用される前に、モバイルアプリケーションのリスクを特定して緩和します。ハイブリッドアプリとネイティブアプリの両方をテストし、潜在的な脆弱性を特定して機密データを保護します。
ソフトウェア構成分析(SCA)では、アプリケーションのソースコードを分析し、使用しているサードパーティコンポーネントを特定するとともに、その由来、バージョン、ライセンス情報を確認します。最新のアプリケーションは、多数のオープンソースおよびサードパーティコンポーネントで構築されており、これらが広範なセキュリティリスクにつながる可能性があります。SCAを利用すれば、こうしたリスクを把握し、高リスクのコンポーネントを緩和できます。
アプリケーションセキュリティソリューションのトップ8
組織がアプリケーションを安全に保つのに役立つアプリケーションセキュリティ製品とサービスは数多くあります。スキャナーやコード解析ツールから、モバイルセキュリティ、APIセキュリティ、脅威モデリングツールなどまで多岐にわたります。検討すべきアプリケーションセキュリティベンダーを8社紹介します。
- Acunetix
- CheckMarx
- Endor Labs
- Micro Focus Fortify
- Rapid7 InsightAppSec
- Snyk
- Synopsys
- Veracode
まとめ:アプリケーションセキュリティのツールと実践
アプリケーションには組織の最も重要なデータが含まれているため、ハッカーにとって格好の標的となります。したがって、アプリケーションの保護は極めて重要であり、セキュリティ制御とベストプラクティスを包括的に実施するプログラムが必要です。定期的なリスク評価は、潜在的なセキュリティ脅威や脆弱性の特定に役立ちます。また、ソリューションと実践方法を最新の状態に保つことで、最新のセキュリティ脅威からアプリケーションを確実に保護できます。安全な開発ライフサイクル(SDL)の実践に投資し、安全なコーディング技法に関する包括的なトレーニングを提供することは、機密情報のセキュリティを維持し、セキュリティインシデントのリスクを最小限に抑えるうえで不可欠です。行動を起こさない場合の潜在的なコストは、あまりにも大きいのです。
本稿は2018年9月12日付のCynthia Harveyの記事を更新したものです。





