【活用ガイド】

JVNDB-2026-020099

LinuxのLinux Kernelにおける整数オーバーフローの脆弱性

概要

Linuxカーネルにおいて、次の脆弱性が修正されました。slubのkrealloc()におけるデータ損失およびオーバーフローの問題です。コミット2cd8231796b5("mm/slub: allow to set node and align in k[v]realloc")により、オブジェクトが縮小される場合でも、新しいアライメントやNUMAノードの条件を満たさない場合に再割り当てを強制できる機能が追加されました。しかし、これにより再割り当てのフォールバックパスで2つのバグが発生しました。1つ目はNUMA移行時のデータ損失で、alloc_newへのジャンプがksおよびorig_sizeの初期化前に行われるため、alloc_newブロック内のmemcpy()が新しい割り当てに0バイトをコピーしてしまいます。2つ目は縮小時のバッファオーバーフローで、強制的に新しいアライメントを設定してオブジェクトを縮小する際、新しいサイズ(new_size)は旧サイズより小さいにもかかわらず、memcpy()が旧サイズ(orig_size ?: ks)を使用するため境界外書き込みが発生します。同様のオーバーフローバグはkvrealloc()のフォールバックパスにも存在し、新しいサイズで制限されずに旧バケットサイズksize(p)が新しいバッファにコピーされてしまいます。問題の簡単な再現例はlkdtmにKREALLOC_SHRINK_OVERFLOWとして追加されており、以下のように示されています。while (1) {void *p = kmalloc(128, GFP_KERNEL); p = krealloc_node_align(p, 64, 256, GFP_KERNEL, NUMA_NO_NODE); kfree(p);}これにより、memcpy_origで120バイトの境界外書き込みが発生し、KFENCEがこれを検出します。修正は__do_krealloc()の冒頭で旧サイズの計算を移動し、すべてのコピー長を新しい割り当てサイズで制限することにより実施されました。
CVSS による深刻度 (CVSS とは?)

CVSS v3 による深刻度
基本値: 5.5 (警告) [NVD値]
  • 攻撃元区分: ローカル
  • 攻撃条件の複雑さ: 低
  • 攻撃に必要な特権レベル: 低
  • 利用者の関与: 不要
  • 影響の想定範囲: 変更なし
  • 機密性への影響(C): なし
  • 完全性への影響(I): なし
  • 可用性への影響(A): 高
影響を受けるシステム


Linux
  • Linux Kernel 6.18 以上 6.18.27 未満
  • Linux Kernel 6.19 以上 7.0.4 未満

想定される影響

・当該ソフトウェアが扱う情報について、外部への漏えいは発生しません。
・当該ソフトウェアが扱う情報について、書き換えは発生しません。
・当該ソフトウェアが完全に停止する可能性があります。
対策

リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。
ベンダ情報

CWEによる脆弱性タイプ一覧  CWEとは?

  1. 整数オーバーフローまたはラップアラウンド(CWE-190) [NVD評価]
共通脆弱性識別子(CVE)  CVEとは?

  1. CVE-2026-45990
参考情報

  1. National Vulnerability Database (NVD) : CVE-2026-45990
  2. 関連文書 : slub: fix data loss and overflow in krealloc() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/38387ccc0fbe38d14fb4c2ad7ee1d7404e5e59fd)
  3. 関連文書 : slub: fix data loss and overflow in krealloc() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/550fa6b5aabb096554536ac1e3ec96b76cbb35fd)
  4. 関連文書 : slub: fix data loss and overflow in krealloc() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/082a6d03a2d685a83a332666b500ad3966349588)
更新履歴

  • [2026年06月17日]
      掲載