Files
vuln-cve/data/2026/90xxx/CVE-2026-90067.json
T

243 lines
14 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"dataType": "CVE_RECORD",
"dataVersion": "5.2",
"cveMetadata": {
"cveId": "CVE-2026-90067",
"assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"state": "PUBLISHED",
"assignerShortName": "Linux",
"dateReserved": "2026-09-11T19:38:34.784Z",
"datePublished": "2026-09-17T16:05:49.600Z",
"dateUpdated": "2026-10-19T08:57:24.503Z"
},
"containers": {
"cna": {
"providerMetadata": {
"orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"shortName": "Linux",
"dateUpdated": "2026-10-19T08:57:24.503Z"
},
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\nlibceph: validate banner payload length\n\nWhen parsing the Ceph messenger v2 protocol banner, the `payload_len` field\nis decoded from the banner prefix. If a client sends a banner with a\n`payload_len` of 0, the kernel sets up a 0-length socket read. This\nviolates an invariant in the state machine, triggering a warning in\n`populate_in_iter()`:\n\n------------[ cut here ]------------\n!iov_iter_count(&con->v2.in_iter)\nWARNING: net/ceph/messenger_v2.c:3129 at populate_in_iter\nnet/ceph/messenger_v2.c:3129 [inline], CPU#1: kworker/1:3/5070\nWARNING: net/ceph/messenger_v2.c:3129 at ceph_con_v2_try_read+0x6634/0x6810\nnet/ceph/messenger_v2.c:3159, CPU#1: kworker/1:3/5070\n...\nCall Trace:\n <TASK>\n ceph_con_workfn+0x1f5/0x14a0 net/ceph/messenger.c:1575\n process_one_work kernel/workqueue.c:3322 [inline]\n process_scheduled_works+0xa8e/0x14e0 kernel/workqueue.c:3405\n worker_thread+0xa47/0xfb0 kernel/workqueue.c:3486\n kthread+0x388/0x470 kernel/kthread.c:436\n ret_from_fork+0x514/0xb70 arch/x86/kernel/process.c:158\n ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245\n </TASK>\n\nAccording to the msgr2 protocol specification, the banner payload is\nexpected to contain at least two 64-bit integers (`server_feat` and\n`server_req_feat`). Therefore, `payload_len` must be at least 16 bytes.\n\nFix this by adding a check in `process_banner_prefix()` to reject a\n`payload_len` smaller than 16 bytes. This prevents the 0-length read and\ncorrectly aborts the connection with a protocol error."
}
],
"metrics": [
{
"cvssV3_1": {
"version": "3.1",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H",
"baseScore": 7.5,
"baseSeverity": "HIGH"
},
"scenarios": [
{
"lang": "en",
"value": "AV:N - The attacker-controlled field is the 16-bit payload_len in the msgr2 banner prefix (\"ceph v2\\n\" plus le16) that process_banner_prefix() decodes from bytes received by ceph_con_v2_try_read() on the TCP socket opened by ceph_tcp_connect() in ceph_con_v2_try_write(); a remote MON/OSD/MDS peer sends that banner over routable IP.\nAC:L - The TCP peer fully controls the banner prefix and can set payload_len to 0, so prepare_read_banner_payload() installs a zero-length in_iter and populate_in_iter() hits WARN_ON(!iov_iter_count(&con->v2.in_iter)) on every such handshake; no race or layout outside the attacker’s control is required.\nPR:N - process_banner_prefix() runs in CEPH_CON_S_V2_BANNER_PREFIX, before prepare_hello() and before CEPH_CON_S_V2_AUTH, so the malformed payload_len is processed prior to Cephx or any other credential check; the attacker is the remote TCP peer and needs no account on the victim host.\nUI:N - Once a kernel CephFS or RBD client is running, __open_session(), reopen_osd(), and MDS ceph_con_open() automatically TCP-reconnect and ceph_con_workfn() reads the peer banner with no further victim action; a compromised cluster daemon triggers the bug on that reconnect.\nS:U - The WARN_ON in populate_in_iter() and the resulting connection fault remain inside the victim kernel’s libceph messenger and do not cross a VM, IOMMU, or sandbox boundary.\nC:N - A zero payload_len only makes populate_in_iter() WARN and return -ENODATA after prepare_read_banner_payload() sets up an empty in_iter; the path does not perform an out-of-bounds read, UAF, or other kernel-memory disclosure.\nI:N - prepare_read_banner_payload() with payload_len 0 never writes past an allocated buffer, and the failure path only faults the connection; attacker input does not corrupt kernel memory or hijack control flow.\nA:H - WARN_ON(!iov_iter_count(&con->v2.in_iter)) in populate_in_iter() after a zero-length banner payload is an attacker-triggerable kernel warning that panics the host when panic_on_warn is set, and the -ENODATA return through ceph_con_v2_try_read() into con_fault() aborts every msgr2 handshake."
}
]
}
],
"affected": [
{
"product": "Linux",
"vendor": "Linux",
"defaultStatus": "unaffected",
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"programFiles": [
"net/ceph/messenger_v2.c"
],
"versions": [
{
"version": "cd1a677cad994021b19665ed476aea63f5d54f31",
"lessThan": "279c0852999fd2384f4a88155091a99e81f96873",
"status": "affected",
"versionType": "git"
},
{
"version": "cd1a677cad994021b19665ed476aea63f5d54f31",
"lessThan": "6cf666e47f2b51d5a887ec8a3226cde951757d27",
"status": "affected",
"versionType": "git"
},
{
"version": "cd1a677cad994021b19665ed476aea63f5d54f31",
"lessThan": "3b2e62a7655d347a845a91155610ddae11daffc6",
"status": "affected",
"versionType": "git"
},
{
"version": "cd1a677cad994021b19665ed476aea63f5d54f31",
"lessThan": "c1b937ff24b19e69aa7fb1b0f46a74d4c9668692",
"status": "affected",
"versionType": "git"
},
{
"version": "cd1a677cad994021b19665ed476aea63f5d54f31",
"lessThan": "6d1c6f228854aa89844fd0152d7ed7ac72a55e89",
"status": "affected",
"versionType": "git"
},
{
"version": "cd1a677cad994021b19665ed476aea63f5d54f31",
"lessThan": "c77633a9595658210a6e216a071e5a396a0835a7",
"status": "affected",
"versionType": "git"
},
{
"version": "cd1a677cad994021b19665ed476aea63f5d54f31",
"lessThan": "f374967fcdf04001c9b66df1c19106fa83cd91f7",
"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/ceph/messenger_v2.c"
],
"versions": [
{
"version": "5.11",
"status": "affected"
},
{
"version": "0",
"lessThan": "5.11",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "5.15.221",
"lessThanOrEqual": "5.15.*",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "6.1.188",
"lessThanOrEqual": "6.1.*",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "6.6.157",
"lessThanOrEqual": "6.6.*",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "6.12.110",
"lessThanOrEqual": "6.12.*",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "6.18.52",
"lessThanOrEqual": "6.18.*",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "7.2.6",
"lessThanOrEqual": "7.2.*",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "7.3",
"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.11",
"versionEndExcluding": "5.15.221"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "5.11",
"versionEndExcluding": "6.1.188"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "5.11",
"versionEndExcluding": "6.6.157"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "5.11",
"versionEndExcluding": "6.12.110"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "5.11",
"versionEndExcluding": "6.18.52"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "5.11",
"versionEndExcluding": "7.2.6"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "5.11",
"versionEndExcluding": "7.3"
}
]
}
]
}
],
"references": [
{
"url": "https://git.kernel.org/stable/c/279c0852999fd2384f4a88155091a99e81f96873"
},
{
"url": "https://git.kernel.org/stable/c/6cf666e47f2b51d5a887ec8a3226cde951757d27"
},
{
"url": "https://git.kernel.org/stable/c/3b2e62a7655d347a845a91155610ddae11daffc6"
},
{
"url": "https://git.kernel.org/stable/c/c1b937ff24b19e69aa7fb1b0f46a74d4c9668692"
},
{
"url": "https://git.kernel.org/stable/c/6d1c6f228854aa89844fd0152d7ed7ac72a55e89"
},
{
"url": "https://git.kernel.org/stable/c/c77633a9595658210a6e216a071e5a396a0835a7"
},
{
"url": "https://git.kernel.org/stable/c/f374967fcdf04001c9b66df1c19106fa83cd91f7"
}
],
"title": "libceph: validate banner payload length",
"x_generator": {
"engine": "bippy-1.2.0"
}
}
}
}