| タイトル | LinuxのLinux Kernelにおける初期化されていないリソースの使用に関する脆弱性 |
|---|---|
| 概要 | Linuxカーネルにおいて、以下の脆弱性が修正されました。hfsplusのカタログレコードサイズの検証を強化し、未初期化値の問題に対処しました。Syzbotはhfsplus_strcasecmp()内でKMSAN未初期化値の問題を報告しました。根本原因は、hfs_brec_read()がオンディスクのレコードサイズと読み取ろうとしているレコードタイプの想定サイズが一致しているかを検証していなかったことにあります。破損したファイルシステムをマウントする際、hfs_brec_read()は期待よりも少ないデータを読み取る場合がありました。例えば、カタログスレッドレコードを読むとき、デバッグ出力は次のように示されました: HFSPLUS_BREC_READ: rec_len=520, fd-entrylength=26 HFSPLUS_BREC_READ: WARNING - entrylength (26) rec_len (520) - PARTIAL READ! hfs_brec_read()はentrylengthがバッファサイズを超えていないことのみ検証し、期待値より小さいかはチェックしていませんでした。その結果、520バイトの構造体に26バイトのみを正常に読み込み成功を返し、494バイトが未初期化のまま残りました。このtmp.thread.nodeName内の未初期化データはhfsplus_cat_build_key_uni()でコピーされ、hfsplus_strcasecmp()で使用されました。これにより、case_fold()内で未初期化バイトが配列インデックスとして使用された際にKMSAN警告が発生しました。修正ではhfsplus_brec_read_cat()ラッパーを導入し、1. hfs_brec_read()を呼び出してデータを読み込む 2. typeフィールドに基づきレコードサイズを検証(フォルダ・ファイルレコードは固定サイズ、スレッドレコードは文字列長に依存する可変サイズ) 3. サイズが期待と異なる場合は-EIOを返す、という手順を実装しました。スレッドレコードについては、nodeName.lengthを読む前にHFSPLUS_MIN_THREAD_SZと照合し、entry構造体をゼロ初期化していない呼び出し箇所での未初期化データ読み取りを回避しました。また、防御的プログラミングとしてhfsplus_find_cat()内のtmp変数も初期化し、検証がバイパスされた場合でも未初期化データが残らないようにしています。 |
| 想定される影響 | ・当該ソフトウェアが扱う情報について、外部への漏えいは発生しません。 ・当該ソフトウェアが扱う情報について、書き換えは発生しません。 ・当該ソフトウェアが完全に停止する可能性があります。 |
| 対策 | リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。 |
| 公表日 | 2026年5月28日0:00 |
| 登録日 | 2026年6月12日14:49 |
| 最終更新日 | 2026年6月12日14:49 |
| CVSS3.0 : 警告 | |
| スコア | 5.5 |
|---|---|
| ベクター | CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H |
| Linux |
| Linux Kernel 2.6.12 |
| Linux Kernel 2.6.12.1 以上 6.6.140 未満 |
| Linux Kernel 6.13 以上 6.18.30 未満 |
| Linux Kernel 6.19 以上 7.0.7 未満 |
| Linux Kernel 6.7 以上 6.12.88 未満 |
| No | 変更内容 | 変更日 |
|---|---|---|
| 1 | [2026年06月12日] 掲載 |
2026年6月12日14:49 |
| 概要 | In the Linux kernel, the following vulnerability has been resolved: hfsplus: fix uninit-value by validating catalog record size Syzbot reported a KMSAN uninit-value issue in hfsplus_strcasecmp(). The When mounting a corrupted filesystem, hfs_brec_read() may read less data HFSPLUS_BREC_READ: rec_len=520, fd->entrylength=26 hfs_brec_read() only validates that entrylength is not greater than the This uninitialized data in tmp.thread.nodeName then gets copied by Fix by introducing hfsplus_brec_read_cat() wrapper that: For thread records, check against HFSPLUS_MIN_THREAD_SZ before reading Also initialize the tmp variable in hfsplus_find_cat() as defensive |
|---|---|
| 公表日 | 2026年5月28日19:16 |
| 登録日 | 2026年5月29日4:13 |
| 最終更新日 | 2026年5月28日22:44 |