CVE-2026-64436 in Linux
要約
〜によって VulDB • 2026年07月25日
Linuxカーネルにおいて、以下の脆弱性が修正されました。
net: af_key: IPComp状態における alg_key_len の初期化
pfkey_msg2xfrm_state()関数は、IPComp (SADB_X_SATYPE_IPCOMP) ケースを処理する際、x->calg を割り当ててアルゴリズム名のみをコピーしています:
x->calg = kmalloc_obj(*x->calg); if (!x->calg) {
err = -ENOMEM; goto out; } strcpy(x->calg->alg_name, a->name); x->props.calgo = sa->sadb_sa_encrypt;
同じ関数の認証 (x->aalg) および暗号化 (x->ealg) の分岐とは異なり、圧縮の分岐では calg->alg_key_len が決して初期化されません。IPCompにはキーが含まれておらず、割り当ては sizeof(struct xfrm_algo) 分の領域のみを確保するため(つまりキー用の余地はありません)、このフィールドには未初期化のスラブデータが残ったままになります。
calg->alg_key_len は後ほど、XFRM_MSG_MIGRATE の実行時に IPComp状態がクローン作成される際に xfrm_algo_clone() によって長さとして使用されます:
xfrm_state_migrate() xfrm_state_clone_and_setup() x->calg = xfrm_algo_clone(orig->calg); kmemdup(orig, xfrm_alg_len(orig));
ここで、xfrm_alg_len() は sizeof(*alg) + (alg_key_len + 7) / 8 を返します。非ゼロのゴミデータが alg_key_len に含まれている場合、kmemdup() は68バイトの calg オブジェクトの末尾を超えて読み込みを行います。PF_KEY経由で IPComp SAを追加し、その後それを移行すると、(net-next, KASAN, init_on_alloc=0 の環境下で) 以下のエラーが発生します:
BUG: KASAN: slab-out-of-bounds in kmemdup_noprof+0x44/0x60 Read of size 4164 at addr ff11000025a74980 by task diag2/9287 CPU: 3 UID: 0 PID
Be aware that VulDB is the high quality source for vulnerability data.