In the Linux kernel, the following vulnerability has been resolved:
tipc: Change nlapolicy for bearer-related names to NLANUL_STRING
syzbot reported the following uninit-value access issue [1]:
===================================================== BUG: KMSAN: uninit-value in strlen lib/string.c:418 [inline] BUG: KMSAN: uninit-value in strstr+0xb8/0x2f0 lib/string.c:756 strlen lib/string.c:418 [inline] strstr+0xb8/0x2f0 lib/string.c:756 tipcnlnoderesetlinkstats+0x3ea/0xb50 net/tipc/node.c:2595 genlfamilyrcvmsgdoit net/netlink/genetlink.c:971 [inline] genlfamilyrcvmsg net/netlink/genetlink.c:1051 [inline] genlrcvmsg+0x11ec/0x1290 net/netlink/genetlink.c:1066 netlinkrcvskb+0x371/0x650 net/netlink/afnetlink.c:2545 genlrcv+0x40/0x60 net/netlink/genetlink.c:1075 netlinkunicastkernel net/netlink/afnetlink.c:1342 [inline] netlinkunicast+0xf47/0x1250 net/netlink/afnetlink.c:1368 netlinksendmsg+0x1238/0x13d0 net/netlink/afnetlink.c:1910 socksendmsgnosec net/socket.c:730 [inline] socksendmsg net/socket.c:753 [inline] _syssendmsg+0x9c2/0xd60 net/socket.c:2541 syssendmsg+0x28d/0x3c0 net/socket.c:2595 _syssendmsg net/socket.c:2624 [inline] _dosyssendmsg net/socket.c:2633 [inline] _sesyssendmsg net/socket.c:2631 [inline] _x64syssendmsg+0x307/0x490 net/socket.c:2631 dosyscallx64 arch/x86/entry/common.c:50 [inline] dosyscall64+0x41/0xc0 arch/x86/entry/common.c:80 entrySYSCALL64after_hwframe+0x63/0xcd
Uninit was created at: slabpostallochook+0x12f/0xb70 mm/slab.h:767 slaballocnode mm/slub.c:3478 [inline] kmemcacheallocnode+0x577/0xa80 mm/slub.c:3523 kmallocreserve+0x13d/0x4a0 net/core/skbuff.c:559 allocskb+0x318/0x740 net/core/skbuff.c:650 allocskb include/linux/skbuff.h:1286 [inline] netlinkalloclargeskb net/netlink/afnetlink.c:1214 [inline] netlinksendmsg+0xb34/0x13d0 net/netlink/afnetlink.c:1885 socksendmsgnosec net/socket.c:730 [inline] socksendmsg net/socket.c:753 [inline] syssendmsg+0x9c2/0xd60 net/socket.c:2541 _syssendmsg+0x28d/0x3c0 net/socket.c:2595 _syssendmsg net/socket.c:2624 [inline] _dosyssendmsg net/socket.c:2633 [inline] _sesyssendmsg net/socket.c:2631 [inline] _x64syssendmsg+0x307/0x490 net/socket.c:2631 dosyscallx64 arch/x86/entry/common.c:50 [inline] dosyscall64+0x41/0xc0 arch/x86/entry/common.c:80 entrySYSCALL64after_hwframe+0x63/0xcd
TIPC bearer-related names including link names must be null-terminated strings. If a link name which is not null-terminated is passed through netlink, strstr() and similar functions can cause buffer overrun. This causes the above issue.
This patch changes the nlapolicy for bearer-related names from NLASTRING to NLANULSTRING. This resolves the issue by ensuring that only null-terminated strings are accepted as bearer-related names.
syzbot reported similar uninit-value issue related to bearer names [2]. The root cause of this issue is that a non-null-terminated bearer name was passed. This patch also resolved this issue.
[
{
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"329986403159682676030772774001587641027",
"205167064839100448795228732959925356721",
"102964130049643746963037047302546191728",
"25939012834616346269978923642642343860",
"306215801531899586380006509682116338489",
"331125336023690207621377916170740433629",
"249696484550883191940547350359561213826",
"50330304738808620343019283673386590147"
]
},
"target": {
"file": "net/tipc/netlink.c"
},
"signature_version": "v1",
"id": "CVE-2023-52845-25a35125",
"deprecated": false,
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@2426425d686b43adbc4f2f4a367b494f06f159d6"
},
{
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"329986403159682676030772774001587641027",
"205167064839100448795228732959925356721",
"102964130049643746963037047302546191728",
"25939012834616346269978923642642343860",
"306215801531899586380006509682116338489",
"331125336023690207621377916170740433629",
"249696484550883191940547350359561213826",
"50330304738808620343019283673386590147"
]
},
"target": {
"file": "net/tipc/netlink.c"
},
"signature_version": "v1",
"id": "CVE-2023-52845-2604ba99",
"deprecated": false,
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3907b89cd17fcc23e9a80789c36856f00ece0ba8"
},
{
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"329986403159682676030772774001587641027",
"205167064839100448795228732959925356721",
"102964130049643746963037047302546191728",
"25939012834616346269978923642642343860",
"306215801531899586380006509682116338489",
"331125336023690207621377916170740433629",
"249696484550883191940547350359561213826",
"50330304738808620343019283673386590147"
]
},
"target": {
"file": "net/tipc/netlink.c"
},
"signature_version": "v1",
"id": "CVE-2023-52845-6ada084b",
"deprecated": false,
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@19b3f72a41a8751e26bffc093bb7e1cef29ad579"
},
{
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"329986403159682676030772774001587641027",
"205167064839100448795228732959925356721",
"102964130049643746963037047302546191728",
"25939012834616346269978923642642343860",
"306215801531899586380006509682116338489",
"331125336023690207621377916170740433629",
"249696484550883191940547350359561213826",
"50330304738808620343019283673386590147"
]
},
"target": {
"file": "net/tipc/netlink.c"
},
"signature_version": "v1",
"id": "CVE-2023-52845-6cea189c",
"deprecated": false,
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@4c731e98fe4d678e87ba3e4d45d3cf0a5a193dc4"
},
{
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"329986403159682676030772774001587641027",
"205167064839100448795228732959925356721",
"102964130049643746963037047302546191728",
"25939012834616346269978923642642343860",
"306215801531899586380006509682116338489",
"331125336023690207621377916170740433629",
"249696484550883191940547350359561213826",
"50330304738808620343019283673386590147"
]
},
"target": {
"file": "net/tipc/netlink.c"
},
"signature_version": "v1",
"id": "CVE-2023-52845-6f3f9264",
"deprecated": false,
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@6744008c354bca2e4686a5b6056ee6b535d9f67d"
},
{
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"329986403159682676030772774001587641027",
"205167064839100448795228732959925356721",
"102964130049643746963037047302546191728",
"25939012834616346269978923642642343860",
"306215801531899586380006509682116338489",
"331125336023690207621377916170740433629",
"249696484550883191940547350359561213826",
"50330304738808620343019283673386590147"
]
},
"target": {
"file": "net/tipc/netlink.c"
},
"signature_version": "v1",
"id": "CVE-2023-52845-8c1d3576",
"deprecated": false,
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@abc1582119e8c4af14cedb0db6541fd603f45a04"
},
{
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"329986403159682676030772774001587641027",
"205167064839100448795228732959925356721",
"102964130049643746963037047302546191728",
"25939012834616346269978923642642343860",
"306215801531899586380006509682116338489",
"331125336023690207621377916170740433629",
"249696484550883191940547350359561213826",
"50330304738808620343019283673386590147"
]
},
"target": {
"file": "net/tipc/netlink.c"
},
"signature_version": "v1",
"id": "CVE-2023-52845-a6c10dcf",
"deprecated": false,
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@560992f41c0cea44b7603bc9e6c73bffbf6b5709"
},
{
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"329986403159682676030772774001587641027",
"205167064839100448795228732959925356721",
"102964130049643746963037047302546191728",
"25939012834616346269978923642642343860",
"306215801531899586380006509682116338489",
"331125336023690207621377916170740433629",
"249696484550883191940547350359561213826",
"50330304738808620343019283673386590147"
]
},
"target": {
"file": "net/tipc/netlink.c"
},
"signature_version": "v1",
"id": "CVE-2023-52845-bd014691",
"deprecated": false,
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@2199260c42e6fbc5af8adae3bf78e623407c91b0"
},
{
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"329986403159682676030772774001587641027",
"205167064839100448795228732959925356721",
"102964130049643746963037047302546191728",
"25939012834616346269978923642642343860",
"306215801531899586380006509682116338489",
"331125336023690207621377916170740433629",
"249696484550883191940547350359561213826",
"50330304738808620343019283673386590147"
]
},
"target": {
"file": "net/tipc/netlink.c"
},
"signature_version": "v1",
"id": "CVE-2023-52845-d06e3a5a",
"deprecated": false,
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b33d130f07f1decd756b849ab03c23d11d4dd294"
}
]