スタックベースのバッファーオーバーラン表示:DCOM設定の事例と確認手順

| Application program | 807 Reads

「このアプリケーションで、スタック ベースのバッファーのオーバーランが検出されました」と表示された場合は、まず発生した操作と対象アプリ、同時刻のイベントログを確認します。表示文だけで原因や修復方法は決まりません。本記事では、DCOM 設定画面の記録を整理し、このエラーが出たときの確認手順を説明します。

エラーメッセージの意味

保存されている画面には、次のメッセージが表示されています。

このアプリケーションで、スタック ベースのバッファーのオーバーランが検出されました。このオーバーランにより、悪質なユーザーがこのアプリケーションを制御できるようになる可能性があります。

Windows のシステム エラー画面に表示された、スタック ベースのバッファーのオーバーランのメッセージ

関連する例外コードとして 0xC0000409(STATUS_STACK_BUFFER_OVERRUN)があります。ただし、上の画像にはコードが写っていないため、この記録の例外コードがそれだったと確認できたわけではありません。

Microsoft の STATUS_STACK_BUFFER_OVERRUN の解説では、このステータスはスタックの破損検出以外の即時終了(fail fast)にも使われると説明されています。名前だけで実際のバッファー破損や第三者による攻撃を断定することはできません。__fastfail の仕様では、ユーザーモードの例外コードは 0xC0000409、最初の例外パラメーターは終了理由を示す値とされています。原因を絞るには、実際のログやダンプに含まれる情報が必要です。

まず確認すること

  1. 発生時刻と直前の操作を記録します。 アプリの起動時なのか、特定のファイルを開いたときなのか、DCOM 設定を変更した直後なのかを分けて記録します。Windows とアプリのバージョンも控えます。
  2. イベント ビューアーを開きます。 Win + R で「ファイル名を指定して実行」を開き、eventvwr.msc を入力します。「Windows ログ」→「Application(アプリケーション)」で、発生時刻付近の「Application Error」などを確認します。
  3. 障害が発生しているアプリケーション名、モジュール名、例外コードを控えます。 イベント ID 1000 があれば、その詳細も確認します。DLL 名が表示されても、その DLL 自体が原因だとは限りません。
  4. 変更履歴と照合します。 特定のアプリだけで起きるなら、そのアプリの公式更新情報や既知の問題を確認します。DCOM 設定を変えた直後なら、変更前に記録した値と現在の値を照合します。

イベント ID 1000 の項目とクラッシュ調査の流れは、Microsoft の アプリケーション/サービスのクラッシュ調査ガイドを参照してください。繰り返し発生してログだけでは分からない場合は、アプリの提供元や管理者に、発生条件とログを添えて相談します。ダンプがある場合は、例外パラメーターや呼び出し履歴を含めて調査します。

DCOM 設定画面の記録で確認できること

元の記事には、2024年10月に掲載した次の画像が残っています。DCOM 設定画面とエラー画面は確認できますが、Windows のビルド、変更前後の全設定値、終了したプロセス、イベントログ、復旧結果は記録されていません。このため、DCOM 変更とエラーの因果関係や、同じ操作での再現性は未確認です。

1. DCOM 構成ツールを開く

起動コマンドは dcomcnfg です。元の本文にあった dccomcnfg は誤記でした。画像の入力欄にも dcomcnfg と表示されています。

ファイル名を指定して実行の入力欄に dcomcnfg と入力した画面

2. マイ コンピューターのプロパティを確認する

「コンポーネント サービス」→「コンピューター」→「マイ コンピューター」を右クリックし、「プロパティ」を開きます。確認だけなら設定を変更せず、最後に「キャンセル」で閉じます。

コンポーネント サービスでマイ コンピューターを右クリックし、プロパティを開くメニュー

3. 既定の認証レベルと偽装レベルを区別する

画像は「既定のプロパティ」タブです。「このコンピューター上で分散 COM を有効にする」にチェックがあり、既定の認証レベルは「接続」と表示されています。その下で開いている一覧は既定の偽装レベルです。「匿名」はこの一覧の選択肢であり、認証レベルの説明と混同しないようにします。

既定のプロパティ画面。認証レベルは接続で、偽装レベルの一覧に匿名などの選択肢が表示されている

4. 設定変更の警告は修復完了を意味しない

次の画像では、背後の偽装レベル欄に「匿名」が表示され、コンピューター全体の DCOM 設定を更新するか確認する警告が出ています。これは設定変更の確認画面であり、エラーを修復する手順の根拠にはなりません。原因調査のために、この画像と同じ値へ変更する必要はありません。

偽装レベルに匿名を選んだ画面と、コンピューター全体の DCOM 設定変更についての確認警告

Microsoft の DCOMCNFG によるシステム全体のセキュリティ設定では、独自のプロセス単位の設定を持たない COM アプリケーションに影響し、正常に動かなくなる可能性があると説明されています。対象が一つのアプリであれば、コンピューター全体の設定を変える前に、そのアプリ固有の設定や要件を確認します。

DCOM 設定を変更した直後に発生した場合

変更前の値を保存してある場合は、管理者と確認したうえで、変更した項目を記録どおりの値へ戻し、同じ操作で症状が出るか確認します。元の値が不明なら、「匿名」「識別する」などを推測で切り替えず、管理者やアプリの提供元に確認してください。本記事の画像を、そのコンピューターの正しい既定値として使うことはできません。

DCOM 設定を戻しても同じエラーが出る場合や、DCOM を変更していない場合は、アプリ名・例外コード・発生条件を起点に調査します。この記録だけでは、特定の設定変更による修復を保証できません。

This article was last edited at