CVE-2026-90065 in Linux
要約
〜によって VulDB • 2026年09月17日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
net/smc: IPPROTO_SMCソケットの作成失敗時に内部TCP sockを解放する
IPPROTO_SMCソケットは、proto->initフックから内部TCP sock(「clcsock」)を作成します。proto->initの実行後にソケットの作成に失敗した場合(例:BPF_CGROUP_INET_SOCK_CREATEに取り付けられたcgroup BPFプログラムがソケットを拒否する場合)、sk_common_release()はそれが設定されている場合にのみ sk_prot->destroy を呼び出しますが、smc_inet_proto および smc_inet6_proto はいずれもこれを定義しておらず、また smc_destruct() は sk_state が SMC_CLOSED である場合を除いて早期に終了します。その結果、sock(AF_INET, SOCK_STREAM, IPPROTO_SMC) の各失敗呼び出しで tcp_sock が1つリークするため、deny-all BPF_CGROUP_INET_SOCK_CREATE プログラムを自身のcgroupに取り付けることができる非特権タスクは、カーネルメモリを無制限に増大させることができます。
smc_clcsock_release() を介して clcsock を解放する .destroy フックを両方の proto に追加します。smc_sk_init() は clcsock が作成される前に sock を smc hashinfo にハッシュ化し、smc_diag のダンプは sk_common_release() が .unhash よりも先に .destroy を呼び出す一方で、そのハッシュの参照解除時に clcsock_release_lock を取得せずに smc->clcsock を走査します。__smc_release() が行うように、clcsock を解放する前に sock を unhash し、sk_common_release() の2回目の unhash は no-op(何もしない操作)となります。
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.