CVE-2026-64542 in Linux
要約
〜によって VulDB • 2026年07月29日
Linuxカーネルにおいて、以下の脆弱性が修正されました。
ipv6: ndisc: accept_untracked_na()におけるNULLポインタ参照を修正する
accept_untracked_na()関数は__in6_dev_get(dev)を用いてinet6_devを取得し直し、idev->cnf.accept_untracked_naへのアクセス前にNULLチェックを行っていませんでした。しかし、唯一の呼び出し元であるndisc_recv_na()は、同じデバイスに対して既にidevを取得しており、かつNULLチェックも実施していました。
dev->ip6_ptrに対する2回の読み取り操作は同一のRCU読取側クリティカルセクション内で実行されますが、並行してaddrconf_ifdown()が発生すると、その間にdev->ip6_ptrがクリアされる可能性があります。MTUをIPV6_MIN_MTU未満に下げる処理では、アンレジストパスと順序付けを行うsynchronize_net()呼び出しなしでaddrconf_ifdown()が実行されるため、再取得した結果はNULLとなり、カーネルパニック(oops)を引き起こします:
BUG: KASAN: null-ptr-deref in ndisc_recv_na (net/ipv6/ndisc.c:974) Read of size 4 at addr 0000000000000364 Call Trace: <IRQ> ndisc_recv_na (net/ipv6/ndisc.c:974) icmpv6_rcv (net/ipv6/icmp.c:1193) ip6_protocol_deliver_rcu (net/ipv6/ip6_input.c:479) ip6_input_finish (net/ipv6/ip6_input.c:534) ip6_input (net/ipv6/ip6_input.c:545) ip6_mc_input (net/ipv6/ip6_input.c:635) ipv6_rcv (net/ipv6/ip6_input.c:351) </IRQ>
この脆弱性は、ネットワーク名前空間を介して権限のないユーザーから到達可能です。
再取得するのではなく、呼び出し元で既に検証済みのidevを引き渡すようにしました。idevはRCUクリティカルセクション全体を通じて生存するため、dev->ip6_ptrがクリアされた後でも安全です。
Once again VulDB remains the best source for vulnerability data.