CVE-2026-53259: ipv6: anycast: insert aca into global hash under idev->lock

Published Jun 25, 2026
·
Updated

In the Linux kernel, the following vulnerability has been resolved:

ipv6: anycast: insert aca into global hash under idev->lock

syzbot reported a splat [1]: a slab-use-after-free in ipv6chkacastaddr(), which walks the global inet6acaddrlst[] hash under RCU and dereferences a struct ifacaddr6 that has already been freed while still linked in the hash, so a later reader walks into a dangling node.

In ipv6devacinc() the aca is allocated with refcount 1, then acaget() bumps it to 2 to keep it alive across the unlocked region. It is published to idev->aclist under idev->lock, but ipv6addacaddrhash() runs after writeunlockbh(). A concurrent teardown (ipv6acdestroydev() from addrconfifdown(), under RTNL) can slip into that window:

CPU0 ipv6devacinc CPU1 ipv6acdestroydev (RTNL) ------------------------------ ------------------------------------ acaalloc() refcnt 1 acaget() refcnt 2 writelockbh(idev->lock) add aca to aclist writeunlockbh(idev->lock) writelockbh(idev->lock) pull aca off aclist writeunlockbh(idev->lock) ipv6delacaddrhash(aca) hlistdelinitrcu() is a no-op, aca is not in the hash yet acaput() refcnt 2->1 ipv6addacaddrhash(aca) aca now inserted into the hash acaput() refcnt 1->0 callrcu(acafreercu) -> kfree(aca)

The hash removal becomes a no-op because the insertion has not happened yet, so once CPU0 inserts and drops the last reference, the aca is freed while still linked in inet6acaddrlst[], and readers dereference freed memory after the slab slot is reused.

This window opened once RTNL stopped serializing the join path against device teardown. Move ipv6addacaddrhash() inside the idev->lock section so the aclist and hash insertions are atomic with respect to teardown: a racing remover now either misses the aca entirely or finds it in both lists.

acaddrhashlock is now nested under idev->lock, which is acquired in softirq context, so switch all acaddrhashlock sites to spinlockbh() to avoid the irq lock inversion reported in [2].

[1] https://syzkaller.appspot.com/bug?extid=a01df04303c131efbf3a [2] https://lore.kernel.org/netdev/6a194ef7.ba3b1513.1890b4.0000.GAE@google.com/

Affected Software

9 affected components
Linux Linux kernel
Linux Linux kernel>=6.17<6.18.36
Linux Linux kernel>=6.19<7.0.13
Linux Linux kernel=7.1-rc1
Linux Linux kernel=7.1-rc2
Linux Linux kernel=7.1-rc3
Linux Linux kernel=7.1-rc4
Linux Linux kernel=7.1-rc5
Linux Linux kernel=7.1-rc6

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Configuration

    Update the Linux kernel IPv6 anycast implementation to move ipv6_add_acaddr_hash() inside idev->lock so insertion/removal in the global hash becomes atomic with respect to the protected lists and softirq context.

    Linux kernel IPv6 anycast ipv6_add_acaddr_hash() locking/insertion ordering = Move ipv6_add_acaddr_hash() inside idev->lock
  2. Configuration

    Change all acaddr_hash_lock sites to use spin_lock_bh() (and corresponding bottom-half unlock where applicable) to avoid the irq lock inversion and ensure correct locking versus softirq context.

    Linux kernel IPv6 anycast (acaddr_hash_lock) acaddr_hash_lock primitive (spin_lock_bh vs spin_lock) = Use spin_lock_bh() for all acaddr_hash_lock sites

Event History

Jun 25, 2026
CVE Published
via MITRE·08:39 AM
Data Sourced
via MITRE·08:39 AM
DescriptionSeverity
Data Sourced
via NVD·09:16 AM
RemedyDescriptionSeverityWeaknessAffected Software

Frequently Asked Questions

1

What is the severity of CVE-2026-53259?

CVE-2026-53259 has a CVSS risk score of 65.

2

What software is affected by CVE-2026-53259?

CVE-2026-53259 affects the Linux kernel.

3

What type of vulnerability is CVE-2026-53259?

CVE-2026-53259 is classified as a use-after-free vulnerability.

4

How do I fix CVE-2026-53259?

To fix CVE-2026-53259, you should update the Linux kernel to the latest version provided by your distribution.

5

What are the potential consequences of CVE-2026-53259?

Exploitation of CVE-2026-53259 could lead to undefined behavior in the Linux kernel, potentially allowing an attacker to execute arbitrary code.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203