アプリケーションセキュリティとは?

アプリケーションセキュリティとは?

アプリケーションセキュリティは1つのテクノロジーではなく、サイバー攻撃、データ侵害、またはその他の脅威による脅威を予防し、修正できるよう、組織のソフトウェアに追加する一式のベストプラクティス、機能、および/または特徴になります。 

組織が利用できるアプリケーションセキュリティプログラム、サービス、およびデバイスには、さまざまな種類のものがあります。ファイアウォール、ウイルス対策システム、データ暗号化などは、不正ユーザーがシステムに侵入するのを防ぐための手段のほんの一例です。組織が特定の機密データセットを予測したい場合、それらのリソースに対して独自のアプリケーションセキュリティポリシーを設定することができます。

アプリケーションセキュリティは様々な段階で発生する可能性があるが、ベストプラクティスの確立はアプリケーション開発段階で最も頻繁に行われる。しかし、企業は開発後もさまざまなツールやサービスを活用できる。全体として、企業が利用できるセキュリティツールは数百種類あり、それぞれが独自の目的を果たします。コードの変更を定着させる人もいれば、コードの脅威を監視する人もおり、データ暗号化を確立する人もいる。言うまでもなく、企業は用途に応じてより専門的なツールを選択することもできます。

アプリケーションセキュリティの利点

企業は業務のほぼすべてをアプリケーションに依存しているため、アプリケーションのセキュリティを確保することは絶対に不可欠である。アプリケーションセキュリティへの投資には、以下のような多くのメリットがあります。

  • 内部および第三者ソースの両方からのリスクを軽減– 可能な限り多くの脆弱性を排除することで、攻撃を防ぐ可能性を高めることができます。

  • 顧客からの信頼と信用の向上– アプリケーションが安全で信頼できることを示すことで、顧客の信頼を高めることができ、それが顧客ロイヤルティや好意的な口コミにつながる可能性があります。

  • ブランドイメージの維持– 攻撃によって企業はニュースの見出しを飾ることになり、それは望ましくない宣伝となる。

  • 第三者の利害関係者、顧客、パートナーからの信頼の向上– 人々は信頼できる企業と取引をしたいと考える。

  • 業務への支障を軽減潜在的なセキュリティ上の問題を特定し、本格的な攻撃やデータ損失につながる前に解決することで、業務への不要な支障を未然に防ぐことができます。

  • 開発段階における問題点の特定– 適切なアプリケーションセキュリティソリューションを導入することで、開発中に一般的な攻撃経路やリスクを特定し、アプリケーションを本番環境にリリースする前に、それらに対する解決戦略を策定できます。

  • 潜在的なリスクを早期に認識する– ほとんどのアプリケーションセキュリティソリューションは、セキュリティ上の脆弱性を特定し、潜在的な問題の存在を管理者に警告するように設計されているため、攻撃者が悪用する前にリスクに対処し、脆弱性を排除することができます。

  • セキュリティ規制への準拠強化– 今日のデータは、業界および政府のさまざまなセキュリティ規制や要件の対象となっています。

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

組織が顧客データを扱っている場合(事実上すべての企業が扱っています)、アプリケーションセキュリティは不可欠です。データは攻撃者にとって貴重な資産であるため、アプリの脆弱性を監視・管理するセキュリティソリューションを導入することが不可欠です。顧客データ、企業秘密の製品情報、従業員の機密情報など、攻撃者はそれらを悪用する可能性があります。

ソフトウェアには必ず脆弱性が存在するというのは、紛れもない事実だ。中にはアプリケーションのパフォーマンスやセキュリティに影響を与えない軽微なバグもありますが、より深刻なバグもあります。たとえ重要度の低い脆弱性であっても、それらが組み合わさると攻撃者にとって侵入経路となり得る。アプリケーションセキュリティを導入することで、軽微な脆弱性から重大な脆弱性まで、多くのリスクを軽減し、攻撃対象領域全体を縮小できます。攻撃者にとっての侵入経路が少なければ少ないほど、防御力は高まります。

今日のアプリケーションの多くはクラウドベースであり、データが様々なネットワークを経由して送信され、リモートサーバーに接続されるため、脆弱性がさらに高まる。ネットワークセキュリティは非常に重要ですが、個々のアプリケーションを保護することも同様に重要です。近年、ハッカーはアプリケーションを標的にするケースが増えているが、アプリケーションのセキュリティテストなどの対策は有効な防御策となり得る。

アプリケーションセキュリティは、事後対応型ではなく、事前対応型のセキュリティアプローチを示すものである。アプリを最初から保護しておくことは、攻撃が起こらないことをただ願うよりも、はるかに賢明な方法です。攻撃が起きてから慌てて問題を解決しようとするよりも、はるかに賢明です。アプリケーションセキュリティに対する積極的なアプローチは、リスク軽減において優位性をもたらします。問題が業務や顧客に影響を与える前に解決できる可能性があります。

セキュリティ侵害の結果は深刻で、多大なコストがかかる可能性がある。今日ではセキュリティ侵害は非常に頻繁に発生しているため、攻撃が発生するかどうかではなく、いつ発生するかの問題と言えるだろう。現代のサイバー攻撃の中には、企業を一時的に、あるいは永久に閉鎖に追い込むものもある。攻撃者が侵入して被害を与える前に、アプリケーションのセキュリティを可能な限り万全に確保することを怠るのは、極めて賢明とは言えません。

顧客があなたのアプリケーションを利用する際、彼らはあなたが彼らの情報を安全かつプライベートに保護してくれると信頼しています。アプリケーションのセキュリティ対策を怠ると、顧客の個人情報が盗まれたり、クレジットカード情報が不正利用されたり、銀行口座がハッキングされたり、健康状態や財務状況に関する機密情報が公開されたりするなど、様々な被害が発生する可能性があります。

適切なアプリケーションセキュリティツールを導入していない場合、組織に深刻な問題を引き起こすだけでなく、顧客とそのデータを危険にさらす可能性があります。

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

アプリケーションセキュリティには、さまざまな機能と技術が含まれる。以下に、最も一般的なセキュリティプロトコルの種類をいくつか示します。

  • 認証– ユーザーが本人であることを確認すること。

  • 認証– 認証されたユーザーのみがアプリケーションのサービスとデータにアクセスできるようにする。

  • 暗号化とは、機密データを暗号化されたコードで送信することで、ネットワークやサーバーを介して送信される際にプライバシーを保護することです。

  • ログ記録– アプリケーションへのアクセス権を持つユーザー、最近使用したユーザー、そのユーザーが行った操作などを記録すること。攻撃後に何が起こったかを判断したり、不審な動作をリアルタイムで検知したりするのに役立ちます。

  • アプリケーションセキュリティテスト– アプリケーションが正しく動作していることを確認するために、定期的にアプリケーションのセキュリティをテストします。

優れたアプリケーションセキュリティソリューションは、上記の技術のほとんど、あるいはすべてを活用するでしょう。これらはすべて連携して、アプリケーションの周囲に防御壁を構築し、データを可能な限り保護します。例えば、ユーザーがモバイルバンキングアプリにログインしようとして、ログインページにユーザー名とパスワードを入力するとします。ユーザー名とパスワードがあれば、システムはその人が名乗っている人物であると想定しますが、多くの組織では、サインイン時に追加の手順が必要となる多要素認証(MFA)をますます導入しています。MFA(多要素認証)は、アカウントのユーザー名とパスワードを持っているだけでなく、本人確認のためにユーザーの携帯電話またはメールアドレスにコードを送信します。ユーザーがコードを入力すると、システムはユーザーのシステムへのアクセスを許可します。ユーザーが入力した情報はすべて暗号化されるため、ネットワークやリモートサーバーに送信されても、他人に読み取られることはありません。ユーザーがアプリケーション内で行うすべての操作はログに記録されます。これは、データ漏洩が発生した場合の将来の参照のため、または異常な行動や不審な行動を特定し、管理者に警告を発するためです。

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

クラウドアプリケーションのセキュリティ

クラウドアプリケーションのセキュリティは、いくつかの理由から複雑になる可能性があります。1) クラウド環境は共有され分散されていること、2) クラウドサービスは非常に複雑になる可能性があること、3) クラウドの展開は動的である傾向があること。クラウドアプリケーションの拡張性、柔軟性、コスト効率を損なうことなく、セキュリティを確保することが重要です。

クラウドアプリケーションのセキュリティに関する最も一般的な課題(および解決策)には、以下のようなものがあります。

責任共有モデル

クラウド環境では、アプリケーションに関してユーザー側にもセキュリティ上の義務があり、クラウドプロバイダー側にも同様の義務があります。プロバイダーによって多少の違いはありますが、一般的にはクラウドプロバイダーがクラウドインフラストラクチャと基盤となるプロセスのセキュリティを担当し、ユーザーはアプリケーションとデータのセキュリティを担当します。あなたの責任範囲には、仮想マシンとオペレーティングシステムも含まれます。

ここでの解決策は、自社のセキュリティ責任がどこから始まりどこで終わるのか、そしてクラウドプロバイダーがどのような責任を負うのかを明確に理解しておくことです。また、DevOpsチームやアプリ開発チームなどのチームと定期的にセキュリティトレーニングや意識向上セッションを実施し、適切なセキュリティ対策とガバナンス体制が整っていることを確認してください。

クラウドアプリケーションデータの分散性

アプリケーションデータをクラウドプラットフォーム上の複数の場所、あるいは複数のクラウドにまたがって保存および処理することは非常に一般的です。そのため、データの可用性、完全性、プライバシーを常に確保することは難しくなるかもしれませんが、そうすることが非常に重要です。

この課題に対する解決策としては、転送中および保存中のデータ、ならびに処理中のデータの暗号化が挙げられる。データ分類ツールやアクセス制御ツールは、最も機密性の高いデータを特定し、セキュリティ制御がプラットフォーム間で一貫しており、データの種類に応じて十分な厳格さを備えていることを確認するのにも役立ちます。クラウドプロバイダーは、多くの場合、地理的レプリケーション機能やデータ所在地の特定ツールをユーザーに提供しており、これらはデータセキュリティ、プライバシー、およびデータ主権に関する規制を遵守するのに役立ちます。

クラウドデータの可視性の欠如と設定ミスの可能性

クラウドにおけるアプリケーションの設定ミスは、よくあるセキュリティ上の課題であり、クラウドデータの可視性が低いため、すぐに認識することが難しい場合がある。ファイアウォールやアクセス制御などのセキュリティツールの設定ミスも、攻撃やデータ漏洩に対する脆弱性を高める可能性があります。

この課題を克服するのに役立つソリューションとしては、クラウドサービスに組み込まれているか、または付属していることが多い自動構成管理ツールなどが挙げられます。これらのツールは、事前に設定されたポリシーや条件からの逸脱を特定し、潜在的な問題について警告を発することができます。もう一つの優れた実践方法は、すべてのクラウド リソースを一貫して継続的に監視し、ログを記録することです。これにより、異常や不審な挙動を特定しやすくなり、脆弱性が深刻な問題になる前に対処することが可能になります。

ID・アクセス管理

クラウドの特性上、多くのユーザーがどこからでも保存されたデータやアプリケーションにアクセスできますが、そのアクセスの容易さは、誰が何に、いつアクセスできるかを管理するという点で課題にもなり得ます。ユーザーが不要なデータに過度にアクセス権限を持っていたり、退職後や不要になった後もクラウドのリソースにアクセスでき続けていたりすることはよくある。

この課題に対する重要な解決策は、最小権限の原則を採用することです。これは、ユーザーとサービスが業務を遂行するために必要な最小限の権限のみを付与することを意味します。識別およびアクセス管理ツールは、アクセスポリシーを自動化し、IT部門の管理負担を軽減することができます。もう一つ便利なツールは多要素認証(MFA)です。これは、簡単にハッキングされてしまう可能性のある単純なパスワード以上の認証を必要とします。ユーザーアクセス状況を定期的に見直すことも有効です。

セキュリティテストとインシデント対応

クラウドサービスは動的であり、状況は頻繁に変化する可能性があります。そのため、組織のセキュリティ手順やインシデント対応を適切にテストすることが難しくなる場合があります。しかし、こうした検査を継続的に実施することは、攻撃を未然に防ぎ、最悪の事態が発生した場合でも迅速に復旧するために不可欠な要素である。

この課題に対する重要な解決策の一つは、自動化されたセキュリティテストです。これは、すべてのクラウドアプリケーションを対象に、バックグラウンドで潜在的な脆弱性を継続的にスキャンすることができます。攻撃が発生した場合に脅威を軽減し、データを復旧または回復するためには、しっかりとしたインシデント対応計画を持つことも重要です。クラウドに特化した計画には、組織が攻撃をどのように封じ込め、脅威や攻撃を調査し、データと業務を復旧させるかといった内容を含めるべきです。脅威の検出と対応に役立つクラウドネイティブツールは数多く存在します。

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

ウェブベースのアプリケーションのセキュリティは非常に重要です。なぜなら、ウェブアプリケーションは悪意のある攻撃者の標的になりやすいからです。発生する可能性のあるウェブアプリケーション攻撃の種類には、以下のようなものがあります。

注射攻撃

これは、攻撃者が信頼できないデータをシステムコマンドに入力することで、システムが本来実行すべきでないコマンドを実行してしまう場合に発生します。これらの攻撃を回避する方法としては、ユーザー入力が実行可能なコードにならないようにするパラメータ化クエリや、すべてのユーザー(およびその入力)が検証され、疑わしい文字や許可されていない文字が除去されるようにする入力検証ツールなどがあります。

クロスサイトスクリプティング(XSS)

攻撃者の中には、ウェブページに悪意のあるコードを埋め込み、そのページにアクセスしたユーザーのブラウザを感染させる者もいる。このコードは、キー入力を傍受したり、ブラウザを悪意のあるウェブサイトにリダイレクトしたり、セッションクッキーを盗み出したりするように設定できます。出力エンコーディング、つまりブラウザでデータを表示する前にデータをエンコードすることで、他者が実行可能なコードを挿入することを防ぐことができます。また、スクリプトを配信できるドメインを制限する、堅牢なコンテンツセキュリティポリシーを作成することも賢明です。これにより、悪意のあるスクリプトの実行を防ぐことができます。

クロスサイトリクエストフォージェリ(CSRF)

攻撃者の中には、ユーザーをだまして、攻撃者が所有または管理するウェブアプリケーション上で、意図せず何らかの操作(銀行振込の承認など)を実行させる者もいる。CSRF対策トークンは、認証されたユーザーによってアクションが要求されたことを確認することで、この種の攻撃を防ぐのに役立ちます。SameSiteクッキー属性を使用すると、攻撃者がユーザーのセッションクッキーにアクセスするのを防ぐことができます。また、多くの組織では、重要な操作を実行する前に、ユーザーに再認証または多要素認証の使用を求めるケースが増えている。

安全でない直接オブジェクト参照 (IDOR)

攻撃者の中には、URL、フォームフィールド、APIなどの入力パラメータを操作して、アクセス権限のないオブジェクトにアクセスしたり、変更したりする者がいる。適切な認証チェックは、これらの攻撃を軽減するのに役立ちます。推測不可能なオブジェクトには、予測不可能な識別子を使用することもできます。最小権限の原則を導入することも有効です。なぜなら、各ユーザーが使用を許可されているリソースとデータのみにアクセスを許可できるからです。

認証メカニズムの脆弱性または不適切なセッション管理

パスワードの安全性の低さ、予測可能なセッションID、不適切なセッション有効期限ポリシーといった問題は、アカウントの乗っ取り、不正アクセス、ユーザーセッションの乗っ取りにつながる可能性があります。強力な認証、できれば多要素認証を用いることで、これらのリスクを軽減できる。パスワードは、強力なソルト付きハッシュアルゴリズムを使用して安全に保管することが重要です。セッションの有効期限とタイムアウトに関するポリシーも実装する必要があります。

ログ記録と監視が不十分

これにより、セキュリティインシデントの検出と対応が困難になり、攻撃者が捕まるまでの時間が長くなります。安全で一元化された包括的なログ記録方法を採用し、IPアドレスやリクエストの詳細などの関連情報を記録することで、この問題を回避できます。不審な活動や潜在的な脅威を検知するためには、リアルタイム監視も推奨されます。

サービス拒否(DoS)攻撃

ウェブ上のアプリケーションは、DoS攻撃、または分散型サービス拒否(DDoS)攻撃に対して脆弱です。DDoS攻撃とは、アプリケーションに大量のトラフィックを送り込み、他のユーザーがアクセスできないようにする攻撃で、ウェブインフラストラクチャを過負荷状態に陥らせ、アプリケーションをダウンさせる可能性があります。ウェブアプリケーションファイアウォールは、これらの攻撃を回避するのに役立ちます。レート制限やスロットリングも同様に有効で、アプリケーションリソースの悪用を防ぎ、一人のユーザーがアプリケーションに過負荷をかけることを不可能にします。負荷分散は、トラフィックを複数のサーバーに分散させることで、これらの攻撃を軽減するもう一つの方法です。

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

モバイルアプリケーションのセキュリティは、モバイルアプリが動作するデバイス、オペレーティングシステム、ネットワークインフラストラクチャの種類が非常に多岐にわたるため、特有の難しさを持つ場合があります。モバイルアプリケーションのセキュリティに関する最も一般的な問題点には、以下のようなものがあります。

安全でないデバイスストレージ

モバイルアプリケーションが機密性の高いユーザーデータを物理デバイスに保存する場合、デバイスが侵害されると、そのデータは攻撃者に対して脆弱になる可能性がある。機密データを暗号化することは、この課題を防ぐための重要な手段です。もう一つの方法は、機密データをデバイス自体に保存することを完全に避けることです。また、一部のデバイスに内蔵されている安全なストレージ機能を利用することもできます。これらの機能は、デバイスが侵害された場合でもデータを保護するように設計されています。

中間者攻撃(MITM攻撃)

ネットワーク通信インフラの中には、適切に保護されていないものがあり、そのため、機密データが中間者攻撃(MITM攻撃)によって傍受される可能性があります。MITM攻撃とは、攻撃者がデータが転送されている最中にアクセスする攻撃です。モバイルアプリとサーバー間のデータ転送時には、常にHTTPSを使用してデータを暗号化することをお勧めします。また、証明書ピンニングを実装することもできます。これは、サーバーのSSL証明書をアプリ内に固定することで、不正な証明書の使用を防ぐものです。

認証と認可が不十分です

認証や認可のチェックが不十分だと、攻撃者がモバイルアプリにアクセスし、不正な操作を実行したり、データを侵害したりする可能性があります。多要素認証を利用し、強固なパスワードポリシーを導入することで、この問題を回避できます。生体認証機能も、こうした攻撃に対する有効な防御策となり得る。役割ベースのアクセス制御は、ユーザーが許可されたリソースのみにアクセスできるようにすることで役立ちます。

安全性の低いサードパーティライブラリおよびAPI

モバイルアプリが機能のためにサードパーティのライブラリやAPIに依存している場合、これらの外部リソースはセキュリティ侵害に対して脆弱になる可能性があり、特に定期的に更新またはパッチが適用されていない場合はそのリスクが高まります。定期的なアップデートとパッチ適用は、こうした問題の発生を防ぐのに役立ちます。これらのライブラリやAPIを統合する前に、ベンダーによるセキュリティ評価を実施することもできます。そして、繰り返しになりますが、最小権限の原則は、ユーザーが業務に必要なアプリやリソースのみにアクセスできるようにすることで、役立ちます。

安全でないデータ削除

モバイル端末からアプリをアンインストールしても、必ずしもすべての残存データが消去されるとは限りません。デバイスを売却または廃棄した場合でも、ユーザー認証情報や取引履歴などの機密データがキャッシュ、ストレージ、またはバックアップに残っている可能性があります。安全なデータ削除方法を用いることで、削除されたデータが攻撃者によって復元されることを確実に防ぐことができます。また、ローカルデバイスのストレージとアプリケーションキャッシュからすべてのデータが正しく消去されていることを確認してください。

アプリの権限設定が不適切

多くのモバイルアプリは、カメラ、マイク、位置情報サービスなど、デバイスのさまざまな部分へのアクセス許可を求めます。場合によっては、アプリはその情報を必要としないため、アプリに権限を与えると、悪用される可能性のある脆弱性が生じる可能性があります。アプリの権限設定に最小権限の原則を適用することで、データの保護に役立ちます。実行時権限要求は、その機能が本当に必要な場合にのみアクセスを要求するため、良い方法です。

マルウェアおよびその他の悪意のあるソフトウェア

アドウェア、スパイウェア、トロイの木馬などは、モバイルアプリケーションのセキュリティにとって問題となる可能性のあるマルウェアの種類のほんの一例です。マルウェア感染を防ぐ一つの方法は、マルウェアチェックを行い、セキュリティガイドラインを厳格に遵守している公式アプリストアからのみアプリケーションをダウンロードすることです。また、デジタル署名やハッシュ化を使用してアプリの整合性チェックを行い、アプリが改変または改ざんされていないことを確認することもできます。

一般的なアプリケーションセキュリティの弱点と脅威

業界には、セキュリティ上の脆弱性に関するよく知られたリストが2つ存在する。ウェブアプリケーションに焦点を当てたリストは、オープンウェブアプリケーションセキュリティプロジェクト(OWASP)によって作成され、もう一方のリスト、すなわち共通脆弱性列挙(CWE)は、情報セキュリティコミュニティによって作成され、あらゆるソフトウェアにおける潜在的な問題全般に焦点を当てています。これらのリストは、問題の深刻度(年によって変動する可能性がある)に基づいて問題をランク付けするだけでなく、開発者がそれらの弱点を軽減または解消する方法に関する推奨事項も提供しています。

2021年に作成された最新のOWASPトップ10リストには、以下の項目が含まれています。

  1. アクセス制御の不備 – 攻撃者は、偽の権限設定やその他の方法を用いてアクセス制御を突破します
  2. 暗号化の不具合– 旧式の暗号方式、誤った実装の暗号プロトコルなど。
  3. インジェクション– 攻撃者は、マルウェアを含むアプリにデータを入力したり、フィッシングサイトにリダイレクトしたりすることができます。
  4. セキュリティ上の問題のある設計– システムアーキテクチャの設計上の欠陥、セキュリティ上の問題のある認証プロセス、ボット対策が施されていないウェブサイトなど。
  5. セキュリティ設定の誤り– デフォルトのユーザー名やパスワードの使用を許可するなど、アプリが攻撃に対して脆弱になるようなセキュリティ設定の問題。
  6. 脆弱で古いコンポーネント– ソフトウェア開発で使用されるコンポーネントの中には、既に脆弱性を持つものがあります。また、パッチが適用されていない、または古いアプリケーション、ライブラリ、フレームワーク、API、その他のコンポーネントである場合もあります。
  7. 識別および認証の失敗– ブルートフォース攻撃やクレデンシャルスタッフィングなどの脆弱性を引き起こす問題。MFAを使用しないアプリなども原因となる可能性があります。
  8. ソフトウェアおよびデータの整合性の障害– アプリのコードまたはインフラストラクチャに、アップデートのインストール時にデジタル署名を使用しないなど、特定の脆弱性が残っている場合。
  9. セキュリティログ記録および監視の失敗– セキュリティ監視が不十分なためにシステムが攻撃を検知できないことが原因です。
  10. サーバーサイドリクエストフォージェリ– アプリがユーザーから提供されたリソースを適切に検証しない場合に発生します。

2023年に更新されたCWEリストにおける、アプリケーションの脆弱性上位10項目は以下のとおりです。

  1. 範囲外書き込み- 製品が、意図したバッファの末尾を超えて、または開始位置より前にデータを書き込みます。通常、これはデータの破損、システムクラッシュ、またはコードの実行につながる可能性があります。
  2. ウェブページ生成時の入力の不適切な無効化(クロスサイトスクリプティング) - 本製品は、他のユーザーに提供されるウェブページとして使用される出力に配置する前に、ユーザーが制御可能な入力を無効化しないか、または不適切に無効化します。
  3. SQLコマンドで使用される特殊要素の不適切な無効化(SQLインジェクション) - 本製品は、上流コンポーネントからの外部からの影響を受けた入力を使用してSQLコマンドの全部または一部を構築しますが、下流コンポーネントに送信される際に意図したSQLコマンドを変更する可能性のある特殊要素を無効化しないか、不適切に無効化します。
  4. 解放後の使用- 解放されたメモリを参照すると、プログラムがクラッシュしたり、予期しない値が使用されたり、コードが実行されたりする可能性があります。
  5. OSコマンドで使用される特殊要素の不適切な無効化(OSコマンドの注入) - 製品は、上流コンポーネントからの外部からの影響を受けた入力を使用してOSコマンドの全部または一部を構築しますが、下流コンポーネントに送信される際に意図したOSコマンドを変更する可能性のある特殊要素を無効化しないか、不適切に無効化します。
  6. 入力検証の不備- 製品は入力またはデータを受け取りますが、入力がデータを安全かつ正しく処理するために必要な特性を備えているかどうかを検証しないか、誤って検証します。
  7. 範囲外読み取り- 製品が、意図したバッファの末尾を超えて、または開始位置より前にデータを読み取ってしまう。通常、これにより攻撃者は他のメモリ位置から機密情報を読み取ったり、システムをクラッシュさせたりすることが可能になります。
  8. 制限されたディレクトリへのパス名の不適切な制限(パストラバーサル) - 製品は、制限された親ディレクトリの下にあるファイルまたはディレクトリを識別することを目的としたパス名を構築するために外部入力を使用しますが、パス名が制限されたディレクトリの外の場所に解決される原因となる可能性のあるパス名内の特殊要素を適切に無効化しません。
  9. クロスサイトリクエストフォージェリ(CSRF) - Webアプリケーションが、リクエストを送信したユーザーによって、適切に構成され、有効で、一貫性のあるリクエストが意図的に提供されたかどうかを十分に検証しない、または検証できない。
  10. 危険な種類のファイルの無制限アップロード- 本製品は、攻撃者が危険な種類のファイルをアップロードまたは転送することを許可しており、これらのファイルは製品環境内で自動的に処理されます。

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

アプリケーションセキュリティテストとは、アプリケーションのアーキテクチャ、ソースコード、構成、通信メカニズム、設計、および全体的な環境を綿密に調査し、脆弱性、弱点、またはセキュリティ上の欠陥を検出することによって、アプリケーションのセキュリティレベルを評価するプロセスです。アプリケーションセキュリティテストの目的は、アプリケーションを一般公開する前に、セキュリティ上の問題を特定して修正することです。これはソフトウェア開発ライフサイクルの重要な部分です。

一般的なアプリケーションセキュリティテストの種類:

  • 静的アプリケーションセキュリティテスト(SAST) – 開発の初期段階で実施されるこのテストは、プログラムを実行せずにアプリのコードを分析してセキュリティ上の問題を検出します。

  • 動的アプリケーションセキュリティテスト(DAST) – アプリケーションが実行中にテストを行い、実際の環境でアプリケーションがどのように動作するかを分析する。これにより、攻撃者がどのように脆弱性を悪用する可能性があるかについて、リアルタイムの視点が得られる。

  • 対話型アプリケーションセキュリティテスト(IAST) – SASTとDASTを組み合わせたもので、ソースコードをより詳細に検証します。静的解析と動的解析を提供し、実行中の問題点の特定に役立ちます。

  • ソフトウェア構成分析(SCA) – アプリケーションをスキャンして、サードパーティ製のオープンソースコンポーネント、ライブラリ、その他の依存関係を検出し、それらのコンポーネントに存在する脆弱性を洗い出す。

  • 侵入テスト– 倫理的ハッキングとも呼ばれ、指定されたセキュリティ専門家がアプリケーションへの攻撃をシミュレーションするものです。その狙いは、実際の攻撃者と同じように、脆弱性を特定し、悪用することにある。

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

  • セキュリティテストを、設計から展開に至るまでのソフトウェア開発ライフサイクルのあらゆる段階に不可欠な要素として組み込む。

  • アプリケーションの進化に伴い、脆弱性を検出するために定期的にセキュリティスキャンを実施してください。

  • セキュリティテストは可能な限り自動化し、検出と修復を迅速化しましょう。

  • 開発者が安全なコーディング手法に従い、セキュリティガイドラインを遵守していることを確認してください。

  • 侵入テストは省略しないでください。自動テストシステムでは見逃してしまうような複雑な脆弱性を発見できる可能性があるからです。

  • 開発者とセキュリティチームに対し、安全なコーディング手法、脅威モデリング、脆弱性管理などを含む、充実したトレーニングを実施する。

  • 既知の脆弱性に対処するため、サードパーティ製のライブラリやフレームワークを定期的に更新してください。

  • 静的コードの脆弱性と実行時脅威を最も包括的に分析するには、複数のテスト手法を組み合わせて使用してください。

アプリケーションセキュリティを有効にする方法

間違いなく、最高かつ最も堅牢なアプリケーションセキュリティは、コードから始まります。設計段階からのセキュリティとも呼ばれるこのアプローチは、正しく実践することが極めて重要です。アプリケーションの脆弱性は、多くの場合、設計上の欠陥だらけの、侵害されたアーキテクチャから始まります。これはつまり、アプリケーションのセキュリティを開発プロセス、すなわちコードに組み込む必要があるということだ。

セキュリティを設計段階から組み込むアプローチとは、アプリケーションが最初からクリーンで十分に保護された状態から始まることを意味します。しかし、この方法以外にも、企業が戦略を微調整する際に留意すべきアプリケーションセキュリティのベストプラクティスがいくつかあります。

  1. パブリックまたはオンプレミスのクラウドアーキテクチャーであっても、安全ではないものとして扱う。この考え方をデフォルトに設定することで、クラウドが十分に安全であるという思い込みから生まれる気のゆるみと安心感を排除できます。 
  2. アプリケーションの各コンポーネントに対して、また開発プロセスの各フェーズにおいて、セキュリティ対策を適用します。必ず、固有の各コンポーネントに対して適切な措置を含めておきましょう。
  3. インストールおよび構成プロセスの自動化は、重要ではあるものの時間のかかる戦略です。こうしたプロセスをすでに完了している場合でも、次世代型アプリケーション向けに再度行う必要があります。
  4. セキュリティ対策を確立させるだけでは十分ではありません。必ず、テストと再テストを頻繁に繰り返し、適切に動作していることを確認してください。仮にセキュリティ侵害が起きても、異常を検出して、障害を修正できたことをありがたく思うはずです。 
  5. SaaSサービスを活用して、時間のかかるセキュリティ業務を外部委託し、より価値の高いプロジェクトに注力しましょう。SaaSは比較的安価であるだけでなく、製品の設定に専任のITチームを必要としないという利点もあります。

アプリケーションツールとソリューション

現在では、アプリケーションセキュリティテストをよりシンプルかつ効率的に行うためのツールやソリューションが数多く存在する。これらには以下が含まれます。

  • セキュリティ構成管理ツールとは、サーバーやクラウドなどのアプリケーションの実行環境が正しく構成されていることを確認し、設定ミスによる攻撃を防止するツールのことです。

  • アプリ開発の設計段階の早い段階でセキュリティ上の脅威を特定できる脅威モデリングツール

  • セキュリティ監視およびインシデント対応ツールは、稼働中のアプリケーションを監視し、潜在的なセキュリティ問題や脆弱性を検出するのに役立ちます。

  • コンテナ環境を分析し、セキュリティ上の脆弱性を検出するコンテナセキュリティツール

セキュリティについて詳しく見る