Kerberos 認証のチケットのキャッシュが非常に多くなると予期せず OS が再起動する可能性がある

Last Update: feedback 共有

本記事はマイクロソフト社員によって公開されております。

こんにちは。Windows プラットフォーム サポートです。
今回は Kerberos 認証において利用されるチケットのキャッシュが非常に多くなると、lsass.exe と呼ばれるプロセスが動作を停止してしまい、予期せず OS が再起動してしまう可能性があるという事象についてご紹介させていただきます。

発生する事象

Windows では Kerberos と呼ばれる認証方式が主に利用されますが、この Kerberos 認証では “チケット” と呼ばれる情報をやり取りして認証機能を実現しています。
各コンピューター上にはこのチケットのキャッシュ情報が保持されますが、キャッシュ情報は “ログオン セッション” と呼ばれる単位で管理されています。
この時、ログオン セッションとは、あるアカウントがログオンしたタイミングで、基本的にそのアカウント用のログオン セッションが生成されるものとご理解ください。

そのため、各コンピューター上には複数のログオン セッションが存在する可能性がありますが、そのいずれかのログオン セッションにおいて、チケットのキャッシュの数が 65,535 個よりも多くなってしまうと、lsass.exe と呼ばれるプロセスが動作を停止 (クラッシュ) してしまう可能性があることが報告されています。
lsass.exe がクラッシュしてしまうと、強制的に OS が再起動される動作となります。

この事象が発生した際の特徴として、システム イベント ログに以下のようなソース: LsaSrv、ID: 5000 のエラー イベントが記録されます。

ログの名前:         System
ソース:           LsaSrv
イベント ID:       5000
タスクのカテゴリ:      なし
レベル:           エラー
キーワード:         
ユーザー:          SYSTEM
説明:
セキュリティ パッケージ Kerberos は例外を生成しました。例外情報はデータです。

当該イベントが記録されていた場合、チケットのキャッシュの数が原因であるとまでは断定はできませんが、チケットのキャッシュの数が原因で事象が発生した場合は必ず上記のイベントが記録されます。
そのため、当該イベントが記録されていた場合は、チケットのキャッシュの数が原因である可能性があるとお考えいただければ幸いです。

なお、2021 年 6 月 9 日現在、サポートされているすべての OS バージョンにおいて、製品の実装上、本事象が発生しうると考えられる状況となっております。
しかしながら、キャッシュの数が 65,535 個を超えることはごく稀であるため、本事象が発生する可能性は非常に低いと考えられます。

回避策

klist purge コマンドを用いて、チケットのキャッシュを削除することにより、事象を回避できる可能性があります。

前述のとおり、チケットの情報はログオン セッション単位で管理されていますが、klist purge コマンドでは以下のようなオプションを利用することにより、指定したログオン セッションのキャッシュを削除できます。

klist purge -li <キャッシュを削除するログオン セッションの番号>

また、対象のコンピューターに存在するログオン セッションと、各ログオン セッションに割り当てられている番号を確認するためには、以下のコマンドを実行します。

klist sessions

以下は klist sessions コマンドの出力結果の例ですが、”0:” の後の “0x” から始まる番号が、そのログオン セッションに割り当てられている番号を示しています。

現在のログオン ID: 0:0x15678b
[0] セッション 1 0:0x158e53 CONTOSO\user01 Kerberos:Interactive
...

本事象の対応状況

弊社サポート部門において、事象が発生した際の情報を解析することにより、本事象の原因となっている可能性のある箇所を特定しております。
現在はその調査結果を弊社開発部門に対してフィードバックすることを試みており、弊社製品の不具合であるかどうかの確認と、不具合である場合には修正することができないかの検討を実施する予定となっております。

変更履歴

2021/6/9: 本ブログの公開