OWASP Top 10 デスクトップアプリケーションセキュリティリスク (2021) 詳細情報

OWASP Top 10 デスクトップアプリケーションセキュリティリスク (2021) | 詳細情報

SQL, LDAP, XML, OS コマンドインジェクションなどの問題は、信頼できない入力がクエリやコマンドの一部としてインタプリタに渡されるときに発生します。攻撃者はインタプリタを騙して任意のコマンドを実行し、望ましくない操作を実行したり、不正にデータを収集する可能性があります。

これには安全でない認証の実装、認証のバイパス、不適切なセッションなどがあります。攻撃者は安全でない実装を悪用して、ユーザーセッション、パスワード、鍵を危殆化したり、アプリケーションのユーザーの ID を推測する可能性があります。

PII、金融情報、医療情報、アプリケーションのキーやシークレットなどの機密情報の意図しない漏洩です。これにはアプリログアウト後のメモリ上のデータ、機密情報を含むログ、ファイル (DLL、バイナリ、設定ファイル) にハードコードされたシークレットなどがあります。攻撃者はこれらの情報を利用して身元を詐称する可能性があります。

脆弱な暗号化アルゴリズムの使用、脆弱な鍵やシークレット、カスタム暗号化関数、安全でない鍵管理などの問題です。攻撃者はこれらの欠陥を悪用して機密情報を取得したり、同じアプリケーションの異なるインスタンスのユーザーを攻撃する可能性があります。

認可の欠陥にはユーザーロールごとの脆弱なファイル/フォルダ権限、最小権限の原則の欠如、不適切なユーザーロール、レジストリや環境変数への不正アクセスなどがあります。攻撃者はアプリケーションやターゲットシステムの特権を取得する可能性があります。

欠陥にはグループポリシー / レジストリ / ファイアウォールルールなどの設定ミス、ファイル処理アプリのファイルコンテンツタイプのチェックの欠如、名前付きパイプの設定ミス、アプリケーションで使用されるサポートサービスの設定ミス、サードパーティサービス (SQL, AD など) の設定ミスがあります。攻撃者はこれらの欠陥を悪用してシステムにアクセスする可能性があります。

安全でない通信の問題には脆弱な TLS / DTLS 暗号スイートやプロトコルの使用、プレーンテキストデータベース接続、HTTP, COAP, MQTT などのプレーンテキスト通信プロトコルの使用があります。これらの欠陥により攻撃者は MiTM 攻撃を実行してアクティブな接続のデータを盗聴および操作する可能性があります。

コード署名やファイル完全性の検証の欠如、コード難読化の欠如、バイナリ保護の欠如、メモリリーク、バッファオーバーフローなど、セキュアコーディングプラクティスの欠如に関連する問題です。攻撃者はアプリケーションをリバースエンジニアリングして、アプリケーションロジックやビジネス固有の機密ロジックに関する情報を取得したり、DLL プリロードやインジェクション、オーバーフローやアンダーフロー、メモリ破壊などのバイナリ攻撃を用いてアプリケーション処理を悪用する可能性があります。

これには古いソフトウェアの使用、OS やサードパーティベンダーの古いコンポーネントやサービスがあります。攻撃者は脆弱なコンポーネントやサービスを悪用して、情報を取得したり、その悪用に応じてローカルまたはリモートでターゲットシステムを危殆化する可能性があります。

ログの欠如や安全でない実装、監査ログ内の不適切なパラメータ、不正使用を検出するための定期的な監視の欠如などがあります。一元化されたログ記録と監視はインシデントの検出や分析とアクティブな攻撃の検出にそれぞれ使用されますが、時に攻撃者はこのデータを操作しようとします。アラームを防止するためにタイムストンピングやその他多くのテクニックを用います。このような問題にも注目する必要があります。

OWASP Top 10 デスクトップアプリケーションセキュリティリスク | Detailed


DA1 - インジェクション

解説:

SQL, LDAP, XML, OS コマンドインジェクションなどの問題は、信頼できない入力がクエリやコマンドの一部としてインタプリタに渡されるときに発生します。一般的にデスクトップアプリでは 2 層または 3 層のアーキテクチャが広く使用されているため、シンクによっては影響を受ける可能性があります。 デスクトップアプリは XML を使用して設定やデータを保存することがあるため、あらゆる種類の XML インジェクションが適用されます。また MySQL や MSSQL などのデータベースを使用することも多いため、SQL インジェクションに対しても同様に脆弱です。多くのデスクトップアプリはバックグラウンドでシステムコールを使用する機能を提供しており、OS コマンドインジェクションの危険性があります。デスクトップアプリは HTML コンテンツをレンダリングするように作成されている (電子メールクライアントなど) こともありますので、HTML インジェクションも可能です。スクリプトテンプレート、XPath、LDAP などがシンクとなることがあり、これらも同様に影響を受けます。したがってウェブアプリケーションと同様に、デスクトップアプリもすべての一般的なインジェクション攻撃に対して非常に脆弱です。デスクトップアプリがウェブ API やマイクロサービスを利用している場合には、ウェブに関するすべての攻撃がここでも適用されます。

悪用可能性の推定:

デスクトップアプリはさまざまな状況で使用される可能性があるため、ログインするユーザーが必要になることや、パブリックキオスクのようにゲストユーザーが必要になることがあります。

影響:

シンクに応じて、特権コマンドの実行、データへの不正アクセス、システム全体の危殆化、サービス拒否が発生する可能性があります。

対策:

  • 非常に一般的なプラクティスは、すべての入力が疑わしいものとみなして、ユーザー入力をサニタイズすることです。

  • ストアドプロシージャやパラメータ化クエリの使用などが SQL に対する業界標準の推奨事項です。

  • システムレベルコマンドの実行にユーザー入力が混入することを避けます。

  • 使用する場所に応じたエンコーディング形式を使用することで、インジェクションを防ぐことができます。

DA2 - 認証とセッション管理の不備

解説:

デスクトップアプリは独自のアプリケーション層の認証を持っているか、Windows / *nix OS の認証を継承しているか、RFID 認証カードや USB キーなど外部から認証を取得するか、あるいはプラットフォームのセキュリティだけに依存して認証を明示的に要求しないことがあります。 安全でない認証の実装、認証のバイパス、不適切なセッションなどの問題はこの脆弱性カテゴリに分類されます。攻撃者は安全でない実装を悪用して、ユーザーセッション、クレデンシャル、鍵を危殆化したり、アプリケーションのユーザーの ID を推測する可能性があります。 券売機、自動販売機、観光案内など、パブリックユーザーが使用するようにデプロイされたデスクトップアプリを例にとると、このようなシステムでは適切な認証を実装できない可能性があります。また、医療システムなど治療中の患者の生命に危険が及ぶ場合や発電所、生産ライン、法執行システムのアプリなど、一部の緊急装置は認証が少し緩和されていると考えられます。

悪用可能性の推定:

デスクトップアプリはさまざまな状況で使用される可能性があるため、攻撃者がログインする必要があることや、物理的にアクセス可能なパブリックキオスクのようにゲストユーザーが必要になることがあります。

影響:

データへの不正アクセスやシステム全体の危殆化に成功する可能性があります。

対策:

  • 非アクティブ時にセッションを無効にする、セッションの有効期限を短くする、セッションエントロピー、などの業界標準の推奨事項により不適切なセッション管理を防ぐことができます。

  • 外部の認証ハードウェア (RFID/USB キーなど) が使用されている場合、二番目の認証要素として PIN やパスワードの形で動的ユーザーチャレンジコードを受け入れます。したがって、そのようなデバイスを紛失した場合でも、悪用することはできません。

  • すべてのサービス / UI インタフェース / 共有ドライブなどに適切な認証を実装します。

DA3 - 機密データの漏洩

解説:

PII、アプリケーションのキーやシークレット、金融情報、個人情報、医療情報などの機密情報の意図しない漏洩は機密データの漏洩として分類されます。攻撃者はこの情報を使用して、データ、ID、金銭の窃取などの不正行為を行う可能性があります。 多くのデスクトップアプリは暗号化鍵や接続文字列などの機密情報をアプリバイナリ (実行可能ファイル、DLL、設定ファイルなど) 内に保存する傾向があります。また、コメント内のものを削除し忘れることもあります。 また、デスクトップアプリが PII / 金融記録 / ドキュメントなどの機密情報を処理しているにもかかわらず、データ暗号化が行われていないと、権限のない人がそのような情報に平文でアクセスできる可能性があります。理想的には保存データに対してドライブレベルの暗号化とアプリケーション層の暗号化が必要です。 デスクトップアプリを実行するシステムの設定が不適切な場合、プロセスのメモリをダンプできる可能性があります。アプリのログアウト後やセッション終了後のメモリダンプに機密情報が含まれていると、データの機密性が損なわれてしまいます。言語やプラットフォームによってはガベージコレクタが古くなったメモリをリサイクルしますが、明示的なログアウト時や使用後には機密データを解放する必要があります。

悪用可能性の推定:

デスクトップアプリはさまざまな状況で使用される可能性があるため、ログインするユーザーが必要になることや、物理的にアクセス可能なパブリックキオスクのようにゲストユーザーが必要になることがあります。 ハードコードされた鍵が攻撃者に特定されたとすると、ハードコードされた値を持つ同じインストーラを使用することになるため、可能なすべてのインストールが脆弱な状態となります。

影響:

システム内でのデータへの不正アクセスに成功する可能性があります。また、そのようなハードコードされた鍵を持っていると、暗号を解読されたり、キーバリューを使用しているすべてのシステムの妥当性確認をバイパスできる可能性があります。

対策:

  • 業界標準の推奨事項には、*nix / Windows ホストにドライブ/パーティションレベルの暗号化を使用することや、アプリケーション層での適切な鍵管理スキームを備えた暗号化などがあります。

  • ここではパスワードベースの鍵導出関数を使用することをお勧めします。

  • ランタイムや初回インストール時の鍵生成にセキュアな乱数を導出します。また、アイテムのハードコードを避けます。

  • ファイルシステムを使用して機密情報を保存する場合には、適切なロールベースのアクセスコントロールに加えて、適切に実装された暗号技術 (ハッシュ、ソルト、適切な鍵管理による暗号化) を使用する必要があります。

  • 権限のない人に対して、プロセスメモリへのアクセスを防止し、セッション終了後直ちにメモリを消去します。

DA4 - 不適切な暗号化の使用

解説:

不適切な暗号化の使用には古い暗号化アルゴリズムや脆弱な鍵、暗号化関数の不適切な使用、すべてのインストールでの暗号化パラメータの再利用、完全性チェックのための暗号化の不適切な使用などが考えられます。 ハッシュの代わりに暗号化を使用する (パスワードストレージ、匿名化の目的) など、暗号化関数の不適切な形式を選択すると問題が発生する可能性があります。また、鍵ストレージの不適切な管理は重大なリスクを引き起こします。業界標準があるにもかかわらず、カスタムメイドの暗号化関数が使用されていることも多く、これが脅威となることもあります。

悪用可能性の推定:

古い暗号化関数や非推奨の暗号化関数をサポートするライブラリを使用し、脆弱な鍵を選択すると、攻撃者がダウングレードおよび悪用して暗号解読などを実行できることがあります。このようなすべてのユースケースにおいて、攻撃者はブルートフォースや一般的な暗号解読テクニックを使用できます。

影響:

主にデータ機密性や完全性の侵害となる可能性があります。攻撃者は悪用によって機密情報を取得したりデータを改竄できるからです。

対策:

  • 最新で業界標準の暗号化アルゴリズムと関数を使用します。

  • 適切な鍵長を使用し、脆弱な鍵を避け、適切な操作モードとソルト値を選択します。

  • 暗号化関数を適用する適切な方法を選択します。たとえば、パスワードストレージなどの一方向データ操作が必要であればハッシュ関数を選択し、既製の辞書攻撃を防ぐにはソルトを選択するなど。

  • セキュアなランダム関数を使用して、ソルト / IV / 自動生成鍵などの暗号化関数で使用される値を生成します。

  • 必要に応じたハッシュ / 対称 / 非対称鍵の暗号化システムを使用します。シナリオとしてはデータ完全性 (コード署名 / CRC / HMAC など) や認証 (デジタル証明書 / HMAC など) やデータ機密性 (HTTPS や保存時の暗号化など) があります。

DA5 - 不適切な認可

解説:

認可の欠陥にはユーザーロールごとの脆弱なファイル/フォルダ権限、最小権限の原則の欠如、不適切なユーザーロール、レジストリや環境変数への不正アクセスなどがあります。最も一般的な脆弱性は以下のとおりです。

  • *nix オペレーティングシステムの root や Windows オペレーティングシステムの administrator などの、必要以上に高い権限でシステム上で実行されているアプリケーションやサポートサービス。このサービスが侵害された場合、攻撃者はシステム全体への完全な特権アクセスを直接取得することになります。

  • *nix の setuid/setgid 権限を持つアプリケーションのバイナリ。

  • 低い権限のユーザーが読み書き可能なアプリケーションディレクトリを持つこと。たとえば公開ディレクトリに保存された設定ファイルや、linux で他のユーザーへの書き込み権限 (xx7) や Windows で everyone/non-admin への読み書き実行権限を持つ設定ファイルなどです。同様に、低い権限のユーザーに対する書き込み権限を持つ実行可能ファイルでは、正規のファイルをシェルコードを含む悪意のある実行可能ファイルに置き換えて、権限昇格を行うことができます。また、ファイル内に機密情報が保存されていて、管理者だけではなく全員に読み取り権限が付与されていることもあります。

  • Windows オペレーティングシステム上のアプリケーションで使用されるレジストリ値への書き込みアクセスを低い権限のユーザーに許可すること。レジストリ内にセキュリティ設定を保存するアプリが作られることがあります。これらのレジストリキーが制限されたユーザーに改竄されると、脅威になる可能性があります。 (データ損失防止、アンチウィルス、望ましくないスクリプトのブロックアプリなどは、レジストリやグループポリシーを使用して設定の変更を防止します。弱い権限で設定を書き込んだ場合、制限された権限ロールを持つ人は簡単にそれをバイパスできる可能性があります。)

悪用可能性の推定:

システムやアプリへのアクセスが制限されている場合、攻撃者は前述の設定ミスを悪用して、特権アクセスを取得しようとする可能性があります。いくつかの限られたシナリオに基づいて、システムのローカルアクセスやリモートアクセスでこれを悪用できる可能性があります。

影響:

不適切な認可の脆弱性があると、攻撃者はターゲットシステムやアプリの権限を昇格できる可能性があります。権限を昇格した後、攻撃者はネットワーク上のシステムや、侵害されたシステムの他のユーザーを攻撃できます。システムの完全な特権アクセスを得ると、データを盗んだり改竄したりして CIA を損なうことになります。悪用はさまざまな制限をバイパスするためにも使用できます。

対策:

  • 可能な限り低い権限で実行するようにアプリケーションを構成します。

  • アプリケーションのバイナリに対して setuid/setgid 権限の設定を回避します。

  • アプリケーションディレクトリやアプリケーションのファイルの読み取り/書き込み権限を、特権ユーザーまたは必要とするユーザーロールのみに設定します。

  • レジストリ値 / 設定 / ログファイルの読み取り/書き込みアクセスを、操作に必要なユーザーに制限します。

DA6 - セキュリティの設定ミス

解説:

欠陥にはグループポリシー / レジストリ / ファイアウォールルールなどの設定ミス、ファイル処理アプリのファイルタイプ/コンテンツのチェックの欠如、名前付きパイプの設定ミス、アプリケーションで使用されるサポートサービスの設定ミス、サードパーティサービス (SQL, AD など) の設定ミスがあります。攻撃者はこれらの欠陥を悪用してシステムにアクセスする可能性があります。セキュリティ設定の問題には以下があります。

  • プロセス間通信に正しく設定されていない名前付きパイプを使用するアプリケーション。

  • 引用符で囲まれていないパスと脆弱なフォルダ権限が原因で、正しく設定されていないバックグラウンドサービスを使用するアプリケーション。

  • メッセージキュー、データベースサービスなどのサードパーティサービスをデフォルトクレデンシャル、安全でないアクセスコントロールなどで使用するアプリケーション。

  • エンティティの作成をサポートするためにファイルアップロード機能を有するがファイルタイプ/コンテンツチェックを行わないアプリケーションや、設定ファイル/データを設定ミスのあるパーサーなどで処理するアプリケーション。

  • Windows アプリケーションの中にはセキュリティコントロールをレジストリやグループポリシーに依存しているものがあります。しかし、このようなアプリケーションには複数の設定ミスがあり、脆弱性が残っている可能性があります。たとえばアンチウィルス、データ損失防止ツール、デバイス管理ツールなど、グループポリシーやレジストリを使用するローカル管理者がいるにもかかわらず、ほとんどの場合、アンインストールや設定の変更が制限されています。このような悪用は信頼された内部の人により試みられるため、ゼロトラストに従うためには追加のセキュリティレイヤが必要です。

  • アプリの中にはファイアウォールやソース IP フィルタリングルールなどを介してネットワーク上に接続されているにもかかわらず、API、ウェブアクセス、ネットワーク共有、サービスなどを同一マシン内でのみ提供するように設定されているものがあります。それらの設定ミスはネットワーク上にそのようなインタフェースを公開し、攻撃対象領域を増やしてしまいます。

悪用可能性の推定:

デスクトップはさまざまな状況で使用される可能性があるため、ログインするユーザーが必要になることや、物理的にアクセス可能なパブリックキオスクのようにゲストユーザーが必要になることがあります。セキュリティの設定ミスを悪用することは簡単なことがあります。隠すことによってのみ実施されていることがあるためです。また、攻撃者は信頼された内部の人であることもあります。

影響:

攻撃者は制限をバイパスして、誤って設定された機能を悪用して任意のコードを実行したり、ターゲットアプリケーションを実行しているシステムの権限を昇格させる可能性があります。

対策:

  • 可能な限り低い権限を持つ名前付きパイプで通信と操作を実行します。

  • サポートバックグラウンドプロセスとサードパーティサービスを堅牢化します。

  • ファイルパーサーを堅牢化や鎮静化します。ファイルタイプやコンテンツの妥当性確認を行います。

  • 適切なファイアウォールルール、グループポリシー、レジストリなどを設定します。

DA7 - 安全でない通信

解説:

アプリケーションがリモート SQL サーバー、ウェブサービス、ファイル転送、コマンド送信、またはリモートサーバーで実行されているその他のプロセスなどのリモートサービスと通信する必要があるが、サービスを利用するためにプレーンテキスト通信プロトコルを使用する場合、このような脆弱性は安全でない通信に分類されます。安全でない通信の問題には FTP, TELNET, HTTP, MQTT, WS などのプレーンテキスト通信プロトコルの使用、脆弱な TLS/DTLS 暗号スイートやプロトコルの使用、プレーンテキストデータベース接続、セキュアチャネル通信のための事故署名証明書などがあります。これらの欠陥により攻撃者は中間者 (Man-in-The-Middle, MiTM) 攻撃を実行し、アクティブな接続のデータを盗聴したり操作できます。

悪用可能性の推定:

ネットワーク内に存在する攻撃者は MiTM 攻撃を介して通信にアクセスできます。かねてより暗号化されていない場合には、機密情報の盗聴やパケットの再生が容易になります。そうではなく脆弱な暗号化通信の場合には、攻撃者は接続をダウングレードしてトラフィックを盗聴する可能性があります。

影響:

攻撃者はアプリケーションとリモートサービス間の通信を盗聴することで、ユーザークレデンシャル、サービスクレデンシャル、通信文字列、ユーザーセッション情報を取得できる可能性があります。さらに、攻撃者は MiTM 攻撃を実行することでアクティブな通信を操作または再生できる可能性があります。

対策:

  • 安全でない通信のリスクは HTTP の代わりに HTTPS、WS の代わりに WSS、FTP の代わりに SFTP、TELNET の代わりに SSH などのように、プロトコルのセキュアバージョンを使用することで軽減できます。

  • 暗号化通信を担う非推奨のプロトコルや暗号スイートを無効にします。

  • SQL 接続を暗号化します。

  • たとえば、SSH トンネル、IPSec などのような、プレーンテキストプロトコルに対するトンネルを実装します。

  • CA 署名証明書を使用します。自己署名証明書は使用しません。

DA8 - 脆弱なコード品質

解説:

セキュアコーディングプラクティスに従わずに構築されたアプリケーションです。以下のような問題がありますが、これらに限定されません。

  • リリースビルド内のデッドコードやテストデータの存在

  • 不十分なメモリ管理

  • バイナリ保護の欠如

  • 難読化されていないコード

  • コード署名と検証の欠落

悪用可能性の推定:

攻撃者はターゲットアプリケーションのバイナリまたはインストーラにアクセスする必要があります。使用される言語の種類 (マネージドかアンマネージドか) に応じて、リバースエンジニアリングによりアセンブリレベルまたはオリジナルのソースコードと同等のものを得ることができます。また、コード完全性がない場合、攻撃者が任意のコードを実行できる可能性があります。

影響:

攻撃者はアプリケーションをリバースエンジニアリングし、アプリケーションロジック、ビジネス固有のロジック、アプリケーションで使用されるシークレットに関する情報を収集できる可能性があります。ランタイムデバッグを使用して特定の制限をバイパスします。たとえば、ライセンスチェックをバイパスします。また、正規のコードの代わりにマルウェアを実行したり、権限昇格を手助けする可能性もあります。

対策:

  • セキュアコーディングプラクティスに従い、SAST ツールを使用して開発の初期段階でセキュリティの問題を検出します。

  • 未使用のコード、デッドコード、テスト環境のもろもろを削除します。コードコメントのベストプラクティス、クリーンコードアプローチに従います。

  • TPM/HSM またはその他のセキュアなプラットフォームを使用して、シークレット、鍵などを保存します。

  • コードを難読化します。 (但し、これは完全な解決策ではありません)

  • ASLR, DEP による保護メカニズムの実装、バッファに入るデータ長の妥当性確認、メモリリークやアウトオブバンドリークの防止などを行います。

  • コード署名と検証によるコード改竄検出の実装、デバッガのフックを検出することによるランタイムデバッグの防止などを行います。

DA9 - 既知の脆弱性を持つコンポーネントの使用

解説:

基盤となる OS が提供するコンポーネントやサービス、または外部のサードパーティコンポーネントに、公に知られた脆弱性があると (エクスプロイトの有無に関わらず) 、製品や資産に非常に高いリスクが生じます。製品ライフサイクルの一環として、そのような影響を受けたコンポーネントはセキュリティパッチやそのコンポーネントの新しいバージョンで補完されます。自動化されているものについてはエンドユーザーはそれについて気にする必要はありませんが、さまざまな理由から手動でパッチを当てる必要があるものもあります。サードパーティコンポーネントは再利用可能なコンポーネントであり、一般的に製品やソリューションの開発において時間と予算を節約するために使用されます。サードパーティコンポーネントには二つのカテゴリがあります。

  1. オープンソースコンポーネント: これらのコンポーネントはオープンソースコミュニティによってメンテナンスされています。コンポーネントのアップデートやパッチのリリースはタイムリーに行われることもそうでないこともあります。

  2. 商用コンポーネント: これらのコンポーネントはサードパーティベンダーによってメンテナンスされており、ビジネスモデルに基づいて頻繁にアップデートがリリースされます。通常、パッチは一定期間ごとにリリースされますが、一部のクリティカルな問題については直ちにリリースされます。

上記のようなコンポーネントを使用すると、新たな脆弱性や攻撃対象領域が発生する可能性があります。アプリケーションの開発者はオープンソースコンポーネントで発見された脆弱性にパッチを適用し、商用コンポーネントの最新バージョンやパッチが適用されたバージョンを使用する必要があります。

悪用可能性の推定:

攻撃者は製品内で使用されている脆弱なコンポーネントバージョンを知る必要があります。これにより公開されている詳細情報に基づいて悪用できるようになります。 また、遷移的な依存関係が存在することもあります。たとえば、製品 'A' にサードパーティ製品/コンポーネント 'B' を使用していて、製品 'B' では別のサードパーティ製品/コンポーネント 'C' を使用していることがあります。製品 'C' の脆弱性が公開された場合、コンポーネント 'B' を使用して継承するため、デフォルトで製品 'A' には脆弱性があります。

影響:

攻撃者は OS が提供するコンポーネントやサードパーティコンポーネントの公開された脆弱性を悪用して、アプリケーションを実行しているシステムを乗っ取ったり、データの機密性や完全性を損なわせたり、公開されているエクスプロイトの種類によってはサービスを利用できなくしたりする可能性があります。

対策:

  • 最新のアップデートやパッチが適用されたプロプライエタリなコンポーネントを使用します。

  • オープンソースコミュニティによって積極的にメンテナンスされているオープンソースコンポーネントのみを使用します。

  • NVD, MITRE などの脆弱性データベースを用いて、開示された脆弱性を定期的にチェックし、ベンダーからリリースされた安定したパッチを適用します。

  • SBOM (ソフトウェア部品表) を特定します。つまり、製品内で使用されているすべての個々のコンポーネントを (開発フェーズ時点から) 追跡することで、何らかのエクスプロイトが公開されたときに役に立ちます。

DA10 - 不十分なログ記録と監視

解説:

ユーザー操作やバックグラウンドタスクなどをログ記録することは、あらゆるアプリケーションの重要な側面と考えられています。これはアプリケーションのコンテキスト内で実行されたすべてのアクティビティを記録するものです。ログ記録により、アプリケーションはランタイムの機能エラーを解決することが可能になり、監査目的でユーザーのアクティビティを監視できるようになります。 ログには以下のような種類があります。

  1. アプリケーションログ - 機能ログや操作ログを記録します。

  2. デバッグログ - アプリケーションが生成するログです。アプリケーションの開発者がエラーやランタイム例外をデバッグするために使用します。

  3. 監査ログ - イベント情報を記録するログです。ログエントリは以下のように構成されます。

    1. 日付とタイムスタンプ

    2. 実行された操作またはアクセスされたリソース

    3. 操作を実行したユーザー

    4. 操作の送信元と送信先アドレス システムやアプリケーションの管理者または指定されたユーザーのみがログを設定したりアクセスする権限を持つ必要があります。

さらに、監視メカニズムはログを使用して、アプリケーションの所有者が以下のようなアラートを受信できるようにします。

  • セキュリティ攻撃の特定

  • コンプライアンス違反の特定

  • 認証の失敗、認可の失敗、入力妥当性確認の失敗などの異常な動作

ログ記録と監視に関する一般的な問題は以下のとおりです。

  • 多くの場合、開発者は何が悪かったのかを理解するために、PII、ログインクレデンシャル、暗号化鍵、トークンなどの機密データをログ記録する可能性のあるログにすべてを書き込んでいる。

  • 誰もが読み取り/書き込み権限を持つパブリックフォルダにログを保存している。

  • 管理者以外のユーザーが監査ログにアクセスして更新できる。

  • 監査証跡にエンドユーザーから提供された値を使用している。たとえば、リクエストからの IP アドレス、ユーザー名、タイムスタンプなどが使用されている。また、ユーザーからパラメータを受け取り、監査証跡内に値を注入して、正当なエントリに見せかけている。

  • 監視メカニズムが欠如している。

  • アラートに対するベースライン設定やルールが安全でない。

悪用可能性の推定:

デスクトップはさまざまな状況で使用される可能性があるため、ログインするユーザーが必要になることや、物理的にアクセス可能なパブリックキオスクのようにゲストユーザーが必要になることがあります。

影響:

ログ記録によりアプリケーションのコンテキスト内で実行された操作を追跡できます。インシデントの発生を検出や分析するのに非常に役立ちます。安全で堅牢なログ記録メカニズムがなければ、攻撃者は実行された操作の痕跡を隠すためにログを操作することが容易になります。不適切または脆弱な監視メカニズムでは攻撃をリアルタイムで検出することができず、アプリケーションの所有者が攻撃を防ぐために適切な行動をとることができません。

対策:

  • 必要な場合を除いて、一般のエンドユーザーのログへのアクセスを避けます (読み書き不可) 。

  • 不審なアクティビティを特定するために定期的にログを監視します。

  • 必要に応じて入力をサニタイズし、あらかじめ定義された場所でのみ許可する場合には、ユーザーが提供したパラメータをログ内に取り込んではいけません。

  • 攻撃を検知するための堅牢なアラートやエスカレーションメカニズムを実装して設定します。

Last updated