{
    "dataType": "CVE_RECORD",
    "dataVersion": "5.2",
    "cveMetadata": {
        "cveId": "CVE-2023-53517",
        "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "state": "PUBLISHED",
        "assignerShortName": "Linux",
        "dateReserved": "2025-10-01T11:39:39.406Z",
        "datePublished": "2025-10-01T11:46:04.673Z",
        "dateUpdated": "2026-08-05T09:14:33.974Z"
    },
    "containers": {
        "cna": {
            "providerMetadata": {
                "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
                "shortName": "Linux",
                "dateUpdated": "2026-08-05T09:14:33.974Z"
            },
            "descriptions": [
                {
                    "lang": "en",
                    "value": "In the Linux kernel, the following vulnerability has been resolved:\n\ntipc: do not update mtu if msg_max is too small in mtu negotiation\n\nWhen doing link mtu negotiation, a malicious peer may send Activate msg\nwith a very small mtu, e.g. 4 in Shuang's testing, without checking for\nthe minimum mtu, l->mtu will be set to 4 in tipc_link_proto_rcv(), then\nn->links[bearer_id].mtu is set to 4294967228, which is a overflow of\n'4 - INT_H_SIZE - EMSG_OVERHEAD' in tipc_link_mss().\n\nWith tipc_link.mtu = 4, tipc_link_xmit() kept printing the warning:\n\n tipc: Too large msg, purging xmit list 1 5 0 40 4!\n tipc: Too large msg, purging xmit list 1 15 0 60 4!\n\nAnd with tipc_link_entry.mtu 4294967228, a huge skb was allocated in\nnamed_distribute(), and when purging it in tipc_link_xmit(), a crash\nwas even caused:\n\n  general protection fault, probably for non-canonical address 0x2100001011000dd: 0000 [#1] PREEMPT SMP PTI\n  CPU: 0 PID: 0 Comm: swapper/0 Kdump: loaded Not tainted 6.3.0.neta #19\n  RIP: 0010:kfree_skb_list_reason+0x7e/0x1f0\n  Call Trace:\n   <IRQ>\n   skb_release_data+0xf9/0x1d0\n   kfree_skb_reason+0x40/0x100\n   tipc_link_xmit+0x57a/0x740 [tipc]\n   tipc_node_xmit+0x16c/0x5c0 [tipc]\n   tipc_named_node_up+0x27f/0x2c0 [tipc]\n   tipc_node_write_unlock+0x149/0x170 [tipc]\n   tipc_rcv+0x608/0x740 [tipc]\n   tipc_udp_recv+0xdc/0x1f0 [tipc]\n   udp_queue_rcv_one_skb+0x33e/0x620\n   udp_unicast_rcv_skb.isra.72+0x75/0x90\n   __udp4_lib_rcv+0x56d/0xc20\n   ip_protocol_deliver_rcu+0x100/0x2d0\n\nThis patch fixes it by checking the new mtu against tipc_bearer_min_mtu(),\nand not updating mtu if it is too small."
                }
            ],
            "metrics": [
                {
                    "cvssV3_1": {
                        "version": "3.1",
                        "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
                        "baseScore": 9.8,
                        "baseSeverity": "CRITICAL"
                    },
                    "scenarios": [
                        {
                            "lang": "en",
                            "value": "AV:N - The vulnerable code is reached from `tipc_udp_recv()` → `tipc_rcv()` → `tipc_link_proto_rcv()`, i.e. attacker-supplied TIPC link-protocol packets arriving on the UDP bearer (default port 6118), which is routable across networks — exactly the path in the reported crash trace. TIPC UDP bearers are used for clustered/cloud deployments spanning L3 segments, so no same-segment adjacency is required.\nAC:L - The attacker deterministically controls the whole sequence: send an unauthenticated LINK_CONFIG discovery packet to create the node/link, then reply to the peer's RESET with an ACTIVATE carrying `max_pkt = 4`, and the u32 underflow plus wrapped skb allocation follow with certainty. No race, no memory-layout luck, and the only preconditions (default net_id 4711, session numbers) are attacker-supplied or default.\nPR:N - TIPC neighbour discovery and link establishment are entirely unauthenticated — `tipc_disc_rcv()` validates only net_id and address scope, and `tipc_link_validate_msg()` only checks session numbers supplied by the same attacker. CONFIG_TIPC_CRYPTO is optional and unkeyed by default, so no credentials of any kind are needed.\nUI:N - The malicious ACTIVATE message is processed in softirq context on packet receive, and the resulting `tipc_named_node_up()` bulk publication is emitted automatically when the link comes up. No local user action is involved.\nS:U - The integer underflow, undersized skb allocation, and heap overflow all occur within the kernel's own security authority on the target node. No VM, IOMMU, or sandbox boundary is crossed.\nC:H - The wrapped `tipc_buf_acquire()` yields an skb whose `skb->len` is ~4 GiB while its backing slab object is only a few hundred bytes, and `skb->data` is placed past `skb->end`; the resulting heap corruption and oversized-length skb give an attacker leverage to read adjacent kernel heap memory. Per the memory-corruption guidance this warrants High.\nI:H - This is a genuine out-of-bounds heap write — `tipc_msg_init()`'s memset and the `publ_to_item()` loop write past the undersized buffer, corrupting `skb_shared_info` and neighbouring slab objects. The attacker tunes the wrap by choosing `msg_max_pkt` in 4-byte steps, selecting the target slab cache and write offset, which is a strong primitive for control-flow hijacking.\nA:H - The commit documents a reproducible `general protection fault ... kfree_skb_list_reason` from dereferencing the corrupted skb_shared_info, plus an endless \"Too large msg, purging xmit list\" storm that wedges the link. A remote unauthenticated attacker can panic the node at will."
                        }
                    ]
                }
            ],
            "affected": [
                {
                    "product": "Linux",
                    "vendor": "Linux",
                    "defaultStatus": "unaffected",
                    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                    "programFiles": [
                        "net/tipc/link.c"
                    ],
                    "versions": [
                        {
                            "version": "ed193ece2649c194a87a9d8470195760d367c075",
                            "lessThan": "2bd4ff4ffb92113f8acd04dbaed83269172c24b4",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "ed193ece2649c194a87a9d8470195760d367c075",
                            "lessThan": "575e84d90a74c0b091b3417ba763ebb237aa0a8c",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "ed193ece2649c194a87a9d8470195760d367c075",
                            "lessThan": "259683001d7e879fea4b42084fb6560dd9408a7e",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "ed193ece2649c194a87a9d8470195760d367c075",
                            "lessThan": "1dd7ae5e0cf5a56e513f7ab7ab9570b7496281d2",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "ed193ece2649c194a87a9d8470195760d367c075",
                            "lessThan": "56077b56cd3fb78e1c8619e29581ba25a5c55e86",
                            "status": "affected",
                            "versionType": "git"
                        }
                    ]
                },
                {
                    "product": "Linux",
                    "vendor": "Linux",
                    "defaultStatus": "affected",
                    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                    "programFiles": [
                        "net/tipc/link.c"
                    ],
                    "versions": [
                        {
                            "version": "4.1",
                            "status": "affected"
                        },
                        {
                            "version": "0",
                            "lessThan": "4.1",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "5.10.181",
                            "lessThanOrEqual": "5.10.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "5.15.113",
                            "lessThanOrEqual": "5.15.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.1.30",
                            "lessThanOrEqual": "6.1.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.3.4",
                            "lessThanOrEqual": "6.3.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.4",
                            "lessThanOrEqual": "*",
                            "status": "unaffected",
                            "versionType": "original_commit_for_fix"
                        }
                    ]
                }
            ],
            "cpeApplicability": [
                {
                    "nodes": [
                        {
                            "operator": "OR",
                            "negate": false,
                            "cpeMatch": [
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "4.1",
                                    "versionEndExcluding": "5.10.181"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "4.1",
                                    "versionEndExcluding": "5.15.113"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "4.1",
                                    "versionEndExcluding": "6.1.30"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "4.1",
                                    "versionEndExcluding": "6.3.4"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "4.1",
                                    "versionEndExcluding": "6.4"
                                }
                            ]
                        }
                    ]
                }
            ],
            "references": [
                {
                    "url": "https://git.kernel.org/stable/c/2bd4ff4ffb92113f8acd04dbaed83269172c24b4"
                },
                {
                    "url": "https://git.kernel.org/stable/c/575e84d90a74c0b091b3417ba763ebb237aa0a8c"
                },
                {
                    "url": "https://git.kernel.org/stable/c/259683001d7e879fea4b42084fb6560dd9408a7e"
                },
                {
                    "url": "https://git.kernel.org/stable/c/1dd7ae5e0cf5a56e513f7ab7ab9570b7496281d2"
                },
                {
                    "url": "https://git.kernel.org/stable/c/56077b56cd3fb78e1c8619e29581ba25a5c55e86"
                }
            ],
            "title": "tipc: do not update mtu if msg_max is too small in mtu negotiation",
            "x_generator": {
                "engine": "bippy-1.2.0"
            }
        }
    }
}