JVNDB-2026-024724 | |
LinuxのLinux Kernelにおける複数の脆弱性 | |
| 概要 | |
Linuxカーネルにおいて、以下の脆弱性が修正されました。dm log における region_count のオーバーフローによる境界外書き込みの問題です。create_log_context() 内のローカル変数 region_count は unsigned int(32ビット)として宣言されていますが、dm_sector_div_up() は sector_t(64ビット)を返します。デバイスマッパターゲットの ti->len が十分大きく、かつ region_size が小さい場合、割り算の結果が UINT_MAX を超える可能性があります。切り捨てられた値が bitset_size の計算に使用されるため、clean_bits、sync_bits、および recovering_bits は実際の領域数に比べてはるかに小さいサイズで割り当てられてしまいます。その後のログ操作(log_set_bit、log_clear_bit、log_test_bit)は、切り捨てられていない完全な領域空間に基づいたインデックスを使用するため、vmalloc によって割り当てられたカーネルヒープメモリに対して境界外の書き込みが発生します。32ビットをオーバーフローする region_count を持つミラーターゲットを作成することで問題を再現できます。具体例は以下の通りです。 dmsetup create bigzero --table '0 8589934594 zero' dmsetup create mymirror --table '0 8589934594 mirror core 2 2 nosync 2 /dev/mapper/bigzero 0 /dev/mapper/bigzero 0' ステータス出力は切り捨てが起きていることを示しています(sync_count=1、4294967297 ではなく、0x100000001 が 1 に切り捨てられたため)。 $ dmsetup status mymirror 0 8589934594 mirror 2 254:1 254:1 1/4294967297 ... これにより、core_in_sync でカーネルクラッシュが発生します。具体的には以下のようになります。 BUG: scheduling while atomic: (udev-worker)/9150/0x00000000 RIP: 0010:core_in_sync+0x14/0x30 [dm_log] CR2: 0000000000000008 Fixing recursive fault but reboot is needed! 修正は、ローカルの region_count を sector_t に拡張し、その値を lc->region_count に代入する前に明示的なオーバーフローチェックを追加することで行われました。 | |
| CVSS による深刻度 (CVSS とは?) | |
|
CVSS v3 による深刻度
基本値: 7.8 (重要) [NVD値]
| |
| 影響を受けるシステム | |
|
| |
Linux | |
本脆弱性の影響を受ける製品の詳細については、ベンダ情報および参考情報をご確認ください。 | |
| 想定される影響 | |
・当該ソフトウェアが扱う全ての情報が外部に漏れる可能性があります。 | |
| 対策 | |
ベンダ情報を参照して適切な対策を実施してください。 | |
| ベンダ情報 | |
レッドハット | |
| CWEによる脆弱性タイプ一覧 CWEとは? | |
| |
| 共通脆弱性識別子(CVE) CVEとは? | |
|
| |
| 参考情報 | |
| |
| 更新履歴 | |
|
| 公表日 | 2026/06/24 |
| 登録日 | 2026/07/23 |
| 最終更新日 | 2026/07/23 |



