{ "dataType": "CVE_RECORD", "dataVersion": "5.2", "cveMetadata": { "cveId": "CVE-2026-68124", "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "state": "PUBLISHED", "assignerShortName": "Linux", "dateReserved": "2026-07-30T09:28:09.369Z", "datePublished": "2026-08-10T11:58:44.997Z", "dateUpdated": "2026-08-19T16:29:36.851Z" }, "containers": { "cna": { "providerMetadata": { "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "shortName": "Linux", "dateUpdated": "2026-08-19T16:29:36.851Z" }, "descriptions": [ { "lang": "en", "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nmctp: serial: handle zero-length frames to prevent rx buffer overflow\n\nThe MCTP serial receive state machine reads a frame length byte in\nmctp_serial_push_header() case 2 and validates it upper-bound-only:\n\n\tif (c > MCTP_SERIAL_FRAME_MTU) {\n\t\tdev->rxstate = STATE_ERR;\n\t} else {\n\t\tdev->rxlen = c;\n\t\tdev->rxpos = 0;\n\t\tdev->rxstate = STATE_DATA;\n\t\t...\n\t}\n\nA length of zero passes this check, so rxlen is set to 0 and the state\nmachine advances to STATE_DATA. In mctp_serial_push() STATE_DATA, the\nincoming byte is stored and rxpos incremented before the terminator is\n\n\tdev->rxbuf[dev->rxpos] = c;\n\tdev->rxpos++;\n\tdev->rxstate = STATE_DATA;\n\tif (dev->rxpos == dev->rxlen) {\n\t\tdev->rxpos = 0;\n\t\tdev->rxstate = STATE_TRAILER;\n\t}\n\nWith rxlen == 0 the \"rxpos == rxlen\" terminator can never fire (rxpos is\nalready 1 on the first data byte), so subsequent bytes are written past\nthe end of the fixed 74-byte rxbuf, which is the last member of the\nnetdev private area. Every following data byte is an attacker-controlled\n1-byte out-of-bounds heap write, and the overflow continues until a\nframe (0x7e) or escape byte resets the parser -- effectively unbounded.\n\nReaching this requires CAP_NET_ADMIN to attach the N_MCTP line\ndiscipline and bring the resulting mctpserialN netdev up, after which\nthe bytes arrive via the tty receive path.\n\nRoute a zero-length frame straight to STATE_TRAILER instead of\nSTATE_DATA. The trailer/framing bytes are still consumed, and the frame\nresolves to a zero-length skb that the MCTP core rejects; the parser\nnever enters STATE_DATA with rxlen == 0, so the out-of-bounds write can\nno longer occur.\n\nKASAN, on a frame of 0x7e 0x01 0x00 followed by data bytes (before this\nchange):\n\n UBSAN: array-index-out-of-bounds in drivers/net/mctp/mctp-serial.c:370\n index 74 is out of range for type 'u8 [74]'\n BUG: KASAN: slab-out-of-bounds in mctp_serial_tty_receive_buf\n Write of size 1 at addr ... by task kworker/u16:0\n mctp_serial_tty_receive_buf\n tty_ldisc_receive_buf\n flush_to_ldisc\n Allocated by task 152:\n alloc_netdev_mqs\n mctp_serial_open\n\nv2: route zero-length frames to STATE_TRAILER instead of STATE_ERR so\n the trailer/framing bytes are still consumed (Jeremy Kerr).\n\nFound by 0sec automated security-research tooling (https://0sec.ai)." } ], "metrics": [ { "cvssV3_1": { "version": "3.1", "vectorString": "CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H", "baseScore": 9.6, "baseSeverity": "CRITICAL" }, "scenarios": [ { "lang": "en", "value": "AV:A - The bug is triggered in mctp_serial_tty_receive_buf() by crafted DSP0253 serial frames; on BMC/datacenter systems MCTP-over-serial links management controllers on a shared management LAN, letting an adjacent unauthenticated peer inject 0x7e/0x01/0x00 frames without using host syscalls.\nAC:L - Exploitation is deterministic: a zero-length length byte bypasses the upper-bound check, then each following serial byte is a controlled 1-byte heap OOB write until 0x7e/0x7d resets the parser; no races or attacker-uncontrollable memory layout are required.\nPR:N - Triggering the overflow only requires delivering malicious serial bytes to an already-configured, running mctpserial netdev; a remote/adjacent MCTP peer or compromised management controller needs no Linux host credentials, CAP_NET_ADMIN, or root on the victim.\nUI:N - No victim user action is required at exploit time; administrative enablement of MCTP serial is deployment configuration, not end-user interaction under CVSS.\nS:C - Kconfig documents virtio-serial VM interconnect for MCTP serial; a malicious guest sending crafted frames to the host-side mctpserial binding can corrupt host kernel heap memory, crossing the guest/host virtualization security boundary.\nC:H - Each overflow byte is attacker-controlled and the write stream is effectively unbounded past the 74-byte rxbuf (last netdev private field), enabling slab-out-of-bounds corruption that can be leveraged for arbitrary kernel memory disclosure.\nI:H - Sustained attacker-controlled out-of-bounds heap writes can corrupt adjacent kmalloc objects, function pointers, and netdev state, providing a standard path to arbitrary kernel write and privilege-escalating code execution.\nA:H - KASAN/UBSAN report slab-out-of-bounds and array-index-out-of-bounds in mctp_serial_tty_receive_buf via flush_to_ldisc; continued overflow reliably causes kernel oops/panic or hang during tty receive processing." } ] } ], "affected": [ { "product": "Linux", "vendor": "Linux", "defaultStatus": "unaffected", "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "programFiles": [ "drivers/net/mctp/mctp-serial.c" ], "versions": [ { "version": "a0c2ccd9b5ad0a9e838158404e041b5a8ff762dd", "lessThan": "64b96ae7912244d55257aa330d9569ee0a8f8d99", "status": "affected", "versionType": "git" }, { "version": "a0c2ccd9b5ad0a9e838158404e041b5a8ff762dd", "lessThan": "36dc6d6964a3b90411cc7944cd9b8b6f67b9807b", "status": "affected", "versionType": "git" }, { "version": "a0c2ccd9b5ad0a9e838158404e041b5a8ff762dd", "lessThan": "68819427bc07eca7963a9e8be19e5272cc29186c", "status": "affected", "versionType": "git" }, { "version": "a0c2ccd9b5ad0a9e838158404e041b5a8ff762dd", "lessThan": "f80ba170d7b3a44e3d244a2c8e06031d61bf3b23", "status": "affected", "versionType": "git" }, { "version": "a0c2ccd9b5ad0a9e838158404e041b5a8ff762dd", "lessThan": "06a6b606129c8a25cd457760f5370f3ff01fe05d", "status": "affected", "versionType": "git" }, { "version": "a0c2ccd9b5ad0a9e838158404e041b5a8ff762dd", "lessThan": "793b9b729f1e8de57be8c8daf1a9838be96cabed", "status": "affected", "versionType": "git" } ] }, { "product": "Linux", "vendor": "Linux", "defaultStatus": "affected", "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "programFiles": [ "drivers/net/mctp/mctp-serial.c" ], "versions": [ { "version": "5.17", "status": "affected" }, { "version": "0", "lessThan": "5.17", "status": "unaffected", "versionType": "semver" }, { "version": "6.1.183", "lessThanOrEqual": "6.1.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.6.148", "lessThanOrEqual": "6.6.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.12.101", "lessThanOrEqual": "6.12.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.18.42", "lessThanOrEqual": "6.18.*", "status": "unaffected", "versionType": "semver" }, { "version": "7.1.6", "lessThanOrEqual": "7.1.*", "status": "unaffected", "versionType": "semver" }, { "version": "7.2", "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": "5.17", "versionEndExcluding": "6.1.183" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.17", "versionEndExcluding": "6.6.148" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.17", "versionEndExcluding": "6.12.101" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.17", "versionEndExcluding": "6.18.42" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.17", "versionEndExcluding": "7.1.6" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.17", "versionEndExcluding": "7.2" } ] } ] } ], "references": [ { "url": "https://git.kernel.org/stable/c/64b96ae7912244d55257aa330d9569ee0a8f8d99" }, { "url": "https://git.kernel.org/stable/c/36dc6d6964a3b90411cc7944cd9b8b6f67b9807b" }, { "url": "https://git.kernel.org/stable/c/68819427bc07eca7963a9e8be19e5272cc29186c" }, { "url": "https://git.kernel.org/stable/c/f80ba170d7b3a44e3d244a2c8e06031d61bf3b23" }, { "url": "https://git.kernel.org/stable/c/06a6b606129c8a25cd457760f5370f3ff01fe05d" }, { "url": "https://git.kernel.org/stable/c/793b9b729f1e8de57be8c8daf1a9838be96cabed" } ], "title": "mctp: serial: handle zero-length frames to prevent rx buffer overflow", "x_generator": { "engine": "bippy-1.2.0" } } } }