CVE-2026-72441

Summary

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

ieee802154: fix kernel-infoleak in dgram_recvmsg()

KMSAN reported a kernel-infoleak in move_addr_to_user():

BUG: KMSAN: kernel-infoleak in instrument_copy_to_user include/linux/instrumented.h:131 [inline] BUG: KMSAN: kernel-infoleak in _inline_copy_to_user include/linux/uaccess.h:205 [inline] BUG: KMSAN: kernel-infoleak in _copy_to_user+0xcc/0x120 lib/usercopy.c:26 instrument_copy_to_user include/linux/instrumented.h:131 [inline] _inline_copy_to_user include/linux/uaccess.h:205 [inline] _copy_to_user+0xcc/0x120 lib/usercopy.c:26 copy_to_user include/linux/uaccess.h:236 [inline] move_addr_to_user+0x2e7/0x440 net/socket.c:302 ____sys_recvmsg+0x232/0x610 net/socket.c:2925 … Uninit was stored to memory at: ieee802154_addr_to_sa include/net/ieee802154_netdev.h:369 [inline] dgram_recvmsg+0xa09/0xbe0 net/ieee802154/socket.c:739

The issue occurs because the pan_id field of struct ieee802154_addr is left uninitialized when the address mode is IEEE802154_ADDR_NONE. The execution flow is as follows:

  1. __ieee802154_rx_handle_packet() declares a local struct ieee802154_hdr hdr on the stack.
  2. ieee802154_hdr_pull() calls ieee802154_hdr_get_addr() to parse the source and destination addresses into this structure.
  3. If the address mode is IEEE802154_ADDR_NONE, ieee802154_hdr_get_addr() previously only set the mode field, leaving the pan_id field containing uninitialized stack memory.
  4. This uninitialized pan_id is later copied into a struct sockaddr_ieee802154 in dgram_recvmsg() via ieee802154_addr_to_sa().
  5. Finally, move_addr_to_user() copies the socket address structure to user space, leaking the uninitialized bytes.

Fix this by using memset to zero out the address structure in ieee802154_hdr_get_addr() when the mode is IEEE802154_ADDR_NONE.

Affected Software

VendorProductVersion RangeStatus
LinuxLinux94b4f6c21cf54029377a0645675a9d81b6cf890d < a2ee1a038a16e286d084bc293a7522d010a59ec3affected
LinuxLinux94b4f6c21cf54029377a0645675a9d81b6cf890d < 09cfe665f2c5d7a8a5ed4d6b487434a011325368affected
LinuxLinux94b4f6c21cf54029377a0645675a9d81b6cf890d < c88e687e44cb9c7690f5039a5a5941dba1f6a204affected
LinuxLinux94b4f6c21cf54029377a0645675a9d81b6cf890d < 71b5add66c51d6764325de5f2e300bbf4f39e7a6affected
LinuxLinux94b4f6c21cf54029377a0645675a9d81b6cf890d < fc8766467b53335220b4b594ba15bc8f8cee0c76affected
LinuxLinux94b4f6c21cf54029377a0645675a9d81b6cf890d < de3bd9809af7555611334cb6a071806744430ef7affected
LinuxLinux94b4f6c21cf54029377a0645675a9d81b6cf890d < f14802465f5956baafe5f4b4541eb626b06b41f1affected
LinuxLinux94b4f6c21cf54029377a0645675a9d81b6cf890d < 4db86f8ab11b5a41bfc36680be837e6ac1375ec6affected
LinuxLinux3.15affected
LinuxLinux0 < 3.15unaffected
LinuxLinux5.10.261 <= 5.10.*unaffected
LinuxLinux5.15.212 <= 5.15.*unaffected
LinuxLinux6.1.178 <= 6.1.*unaffected
LinuxLinux6.6.145 <= 6.6.*unaffected
LinuxLinux6.12.97 <= 6.12.*unaffected
LinuxLinux6.18.40 <= 6.18.*unaffected
LinuxLinux7.1.5 <= 7.1.*unaffected
LinuxLinux7.2 <= *unaffected

Weaknesses

References