アプリケーション侵入を検知する
学習の目的
この単元を完了すると、次のことができるようになります。
- 十分なアプリケーション監視を実装することの重要性を説明する。
- 敵対的テストをセキュリティ強化にどのように利用できるかを説明する。
アプリケーション監視で侵入を検知する
アプリケーションセキュリティエンジニアであれば、ロギングが不十分な場合よりも過剰な場合の方が問題の発生がはるかに少なくなることはご存知だと思います。不十分なロギングと監視は広範囲に及ぶセキュリティ上の弱点となります。ロギングとは、傾向を分析したり、アプリケーション、ユーザー、または別のテクノロジーによって行われたイベントやアクションを記録したりするために、データを収集して保存するプロセスです。
アプリケーションログは、ソフトウェアアプリケーションによってログに記録されるイベントのファイルです。ログには、エラー、イベント、警告、アラートに関する情報が含まれています。アプリケーションセキュリティエンジニアは、アプリケーションログの形式と内容を決定する重要な役割を担っています。
十分なログを収集することは、セキュリティプロフェッショナルが各自の環境の IT を監視できるようにするために極めて重要です。アプリケーションを監視することで、アプリケーションセキュリティエンジニアはアプリケーションが想定どおりに実行されていることを確認できます。異常があれば、それは悪意のある攻撃者による侵入やその試みの兆候である可能性があります。
十分なロギングと監視が行われないと、セキュリティアナリストによって攻撃者による悪意のあるアクティビティが検知されない可能性があります。そうなると、攻撃者はシステムを侵害して、永続化を維持し (システム内でのアクセス)、さらには他の接続されたシステムを次々と侵害していくことができます。その結果、攻撃者にアプリケーションのデータの機密性、整合性、可用性を侵害することを許してしまうことになります。いくつかの調査では、組織が侵害を検知するまでの平均期間は 200 日を超え、多くの場合、この侵害は内部関係者ではなく外部関係者によって検知されることがわかっています。
また、アプリケーションセキュリティエンジニアはロギングと監視をインシデント対応機能と統合し、アナリストが異常なアクティビティを発見したときに組織が迅速に対処できるようにすることにも取り組んでいます。
アプリケーションセキュリティエンジニアは他にどのような面でサポートできるでしょうか? エンジニアは、アプリケーションセキュリティの脆弱性を継続的に監視、修正、防止します。アプリケーションのプロセスとユーザーの行動を監視して、被害が発生する前に悪意を検知しようとする場合は、まず正しい情報が含まれるようにログを設定し、ログがテクノロジースタック全体とインシデント対応に適切に統合されるようにします。また、ログイン、失敗したログイン、価値の高いトランザクションなどのイベントがログに記録されるようにしたり、警告やエラーで適切なログメッセージが生成されるようにしたりします。監視を担当する組織の一部 (通常はセキュリティオペレーションセンター (SOC)) で不審なアクティビティがないかログが監視されていることも確認します。さらに、アナリストが脅威を迅速に特定して対応できるように、アラートのしきい値や対応のエスカレーションプロセスが適切に設定されるように尽力します。
敵対的テストを使用する
アプリケーションセキュリティエンジニアは、サイバー脅威のアクティビティに対するアプリケーションの耐性を測定するために敵対的テストを使用します。敵対的テストでは、悪意を持って悪用される前に潜在的なリスクを特定して軽減できるように、セキュリティチームは攻撃者ならどうするかを考えます。
アプリケーションセキュリティにおける一般的な敵対的テストの種類の 1 つに侵入テストがあります。侵入テストは、組織内の独立したセキュリティプロフェッショナルグループまたはサードパーティによって実施されます。侵入テストチームは、アプリケーションに対する可能性のあるすべての攻撃手段を想定し、その攻撃手段が許可されていないアクションを実行できるかどうかや機密データを盗み出させるかどうかをテストすることに徹底して取り組みます。
敵対的アプリケーションテストのもう 1 つの一般的な種類は、バグバウンティと呼ばれます。バグバウンティでは、組織は、自社のアプリケーションの脆弱性を発見して報告してくれる倫理的ハッカーに報奨金「バウンティ」を支払う用意があることを公表します。報奨金は、少額であることもあれば高額であることもあります。
多くの大企業は、バグバウンティプログラムを設け、社内外の倫理的ハッカーに参加を呼びかけています。バグバウンティプログラムでは、アプリケーションの弱点を明らかにする試みをクラウドソーシングすることで、悪意のある攻撃者が脆弱性を悪用するというセキュリティインシデントのリスクを低減できます。アプリケーションセキュリティのキャリアに関心があるなら、バグバウンティプログラムへの参加はその分野で必要なスキルをより深く学べる素晴らしい機会になります。場合によっては、その間にお小遣いを稼げるかもしれません。
アプリケーションセキュリティエンジニアは、侵入テストやバグバウンティプログラムで見つかった問題に対処する役割を担っています。アプリケーション開発チームやビジネスオーナーとも協力し、セキュリティのベストプラクティスを助言して適用することで見つかった問題を解決します。また、見つかった問題をいつ、どのように修正するかについて、アプリケーション所有者が検討する際にもサポートします。
さらに、侵入テストやバグが特定された後にログを確認して、テスト担当者のアクションを特定できるかどうかを確認します。特定できない場合、アプリケーションセキュリティエンジニアは、ログおよび関連付けられたダッシュボードで収集され、相関性のある情報を整理して、アナリストが脅威を迅速に特定して対応できるようにします。十分なロギングを確実に行うための追加の考慮事項の詳細については、不十分なロギングに関する「Common Weakness Enumeration (CWE) (共通脆弱性タイプ一覧 (CWE))」リソースを参照してください。
まとめ
アプリケーションセキュリティエンジニアが、ログを確実に取得して評価し、インシデント対応アクティビティと統合することで、アプリケーションを監視し、悪意のあるアクティビティの兆候を発見するために使用する手法について説明しました。これでアプリケーションセキュリティエンジニアリングのトレイルは終了となります。この役割に伴う業務、追求すべきスキル、組織のアプリケーション開発ライフサイクルにおいてエンジニアが果たす重要な役割についてご理解いただけたと思います。サイバーセキュリティ関連情報の詳細に関心がある方は、Trailhead のサイバーセキュリティの学習ハブを確認してください。