CVE-2025-21652 – In the Linux kernel, the following vulnerability h

The following table lists the changes that have been made to the
CVE-2025-21652 vulnerability over time.

Vulnerability history details can be useful for understanding the evolution
of a vulnerability, and for identifying the most recent changes that may
impact the vulnerability’s severity, exploitability, or other characteristics.

  • New CVE Received
    by 416baaa9-dc9f-4396-8d5f-8c081fb06d67

    Jan. 19, 2025

    Action Type Old Value New Value
    Added Description In the Linux kernel, the following vulnerability has been resolved:

    ipvlan: Fix use-after-free in ipvlan_get_iflink().

    syzbot presented an use-after-free report [0] regarding ipvlan and
    linkwatch.

    ipvlan does not hold a refcnt of the lower device unlike vlan and
    macvlan.

    If the linkwatch work is triggered for the ipvlan dev, the lower dev
    might have already been freed, resulting in UAF of ipvlan->phy_dev in
    ipvlan_get_iflink().

    We can delay the lower dev unregistration like vlan and macvlan by
    holding the lower dev’s refcnt in dev->netdev_ops->ndo_init() and
    releasing it in dev->priv_destructor().

    Jakub pointed out calling .ndo_XXX after unregister_netdevice() has
    returned is error prone and suggested [1] addressing this UAF in the
    core by taking commit 750e51603395 (“net: avoid potential UAF in
    default_operstate()”) further.

    Let’s assume unregistering devices DOWN and use RCU protection in
    default_operstate() not to race with the device unregistration.

    [0]:
    BUG: KASAN: slab-use-after-free in ipvlan_get_iflink+0x84/0x88 drivers/net/ipvlan/ipvlan_main.c:353
    Read of size 4 at addr ffff0000d768c0e0 by task kworker/u8:35/6944

    CPU: 0 UID: 0 PID: 6944 Comm: kworker/u8:35 Not tainted 6.13.0-rc2-g9bc5c9515b48 #12 4c3cb9e8b4565456f6a355f312ff91f4f29b3c47
    Hardware name: linux,dummy-virt (DT)
    Workqueue: events_unbound linkwatch_event
    Call trace:
    show_stack+0x38/0x50 arch/arm64/kernel/stacktrace.c:484 (C)
    __dump_stack lib/dump_stack.c:94 [inline]
    dump_stack_lvl+0xbc/0x108 lib/dump_stack.c:120
    print_address_description mm/kasan/report.c:378 [inline]
    print_report+0x16c/0x6f0 mm/kasan/report.c:489
    kasan_report+0xc0/0x120 mm/kasan/report.c:602
    __asan_report_load4_noabort+0x20/0x30 mm/kasan/report_generic.c:380
    ipvlan_get_iflink+0x84/0x88 drivers/net/ipvlan/ipvlan_main.c:353
    dev_get_iflink+0x7c/0xd8 net/core/dev.c:674
    default_operstate net/core/link_watch.c:45 [inline]
    rfc2863_policy+0x144/0x360 net/core/link_watch.c:72
    linkwatch_do_dev+0x60/0x228 net/core/link_watch.c:175
    __linkwatch_run_queue+0x2f4/0x5b8 net/core/link_watch.c:239
    linkwatch_event+0x64/0xa8 net/core/link_watch.c:282
    process_one_work+0x700/0x1398 kernel/workqueue.c:3229
    process_scheduled_works kernel/workqueue.c:3310 [inline]
    worker_thread+0x8c4/0xe10 kernel/workqueue.c:3391
    kthread+0x2b0/0x360 kernel/kthread.c:389
    ret_from_fork+0x10/0x20 arch/arm64/kernel/entry.S:862

    Allocated by task 9303:
    kasan_save_stack mm/kasan/common.c:47 [inline]
    kasan_save_track+0x30/0x68 mm/kasan/common.c:68
    kasan_save_alloc_info+0x44/0x58 mm/kasan/generic.c:568
    poison_kmalloc_redzone mm/kasan/common.c:377 [inline]
    __kasan_kmalloc+0x84/0xa0 mm/kasan/common.c:394
    kasan_kmalloc include/linux/kasan.h:260 [inline]
    __do_kmalloc_node mm/slub.c:4283 [inline]
    __kmalloc_node_noprof+0x2a0/0x560 mm/slub.c:4289
    __kvmalloc_node_noprof+0x9c/0x230 mm/util.c:650
    alloc_netdev_mqs+0xb4/0x1118 net/core/dev.c:11209
    rtnl_create_link+0x2b8/0xb60 net/core/rtnetlink.c:3595
    rtnl_newlink_create+0x19c/0x868 net/core/rtnetlink.c:3771
    __rtnl_newlink net/core/rtnetlink.c:3896 [inline]
    rtnl_newlink+0x122c/0x15c0 net/core/rtnetlink.c:4011
    rtnetlink_rcv_msg+0x61c/0x918 net/core/rtnetlink.c:6901
    netlink_rcv_skb+0x1dc/0x398 net/netlink/af_netlink.c:2542
    rtnetlink_rcv+0x34/0x50 net/core/rtnetlink.c:6928
    netlink_unicast_kernel net/netlink/af_netlink.c:1321 [inline]
    netlink_unicast+0x618/0x838 net/netlink/af_netlink.c:1347
    netlink_sendmsg+0x5fc/0x8b0 net/netlink/af_netlink.c:1891
    sock_sendmsg_nosec net/socket.c:711 [inline]
    __sock_sendmsg net/socket.c:726 [inline]
    __sys_sendto+0x2ec/0x438 net/socket.c:2197
    __do_sys_sendto net/socket.c:2204 [inline]
    __se_sys_sendto net/socket.c:2200 [inline]
    __arm64_sys_sendto+0xe4/0x110 net/socket.c:2200
    __invoke_syscall arch/arm64/kernel/syscall.c:35 [inline]
    invoke_syscall+0x90/0x278 arch/arm64/kernel/syscall.c:49
    el0_svc_common+0x13c/0x250 arch/arm64/kernel/syscall.c:132
    do_el0_svc+0x54/0x70 arch/arm64/kernel/syscall.c:151
    el
    —truncated—

    Added Reference https://git.kernel.org/stable/c/52a24538d569f48e79d1a169a5d359d384152950
    Added Reference https://git.kernel.org/stable/c/ba9f7c16ec879c83bb4f80406773a911aace8267
    Added Reference https://git.kernel.org/stable/c/cb358ff94154774d031159b018adf45e17673941
Share the Post:

Related Posts