{"id":"CVE-2026-43405","state":"PUBLISHED","title":"libceph: Use u32 for non-negative values in ceph_monmap_decode()","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nlibceph: Use u32 for non-negative values in ceph_monmap_decode()\n\nThis patch fixes unnecessary implicit conversions that change signedness\nof blob_len and num_mon in ceph_monmap_decode().\nCurrently blob_len and num_mon are (signed) int variables. They are used\nto hold values that are always non-negative and get assigned in\nceph_decode_32_safe(), which is meant to assign u32 values. Both\nvariables are subsequently used as unsigned values, and the value of\nnum_mon is further assigned to monmap->num_mon, which is of type u32.\nTherefore, both variables should be of type u32. This is especially\nrelevant for num_mon. If the value read from the incoming message is\nvery large, it is interpreted as a negative value, and the check for\nnum_mon > CEPH_MAX_MON does not catch it. This leads to the attempt to\nallocate a very large chunk of memory for monmap, which will most likely\nfail. In this case, an unnecessary attempt to allocate memory is\nperformed, and -ENOMEM is returned instead of -EINVAL.","publishedAt":"2026-05-08T14:21:45.581Z","updatedAt":"2026-10-19T19:16:28.480Z","severity":{"score":7.5,"label":"High","version":"3.1","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","source":"Linux"},"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"a5cbd5fc22d5043a8a76e15d75d031fe24d1f69c","status":"affected","lessThan":"ee5588e2bc41acb73f6676c0520420c107cd0140","versionType":"git"},{"version":"a5cbd5fc22d5043a8a76e15d75d031fe24d1f69c","status":"affected","lessThan":"86f7060cd638d6eb042e8ed780fb83a59ca0dcb3","versionType":"git"},{"version":"a5cbd5fc22d5043a8a76e15d75d031fe24d1f69c","status":"affected","lessThan":"5f2806684b05bd24d05c091083b8e2517ba8ffac","versionType":"git"},{"version":"a5cbd5fc22d5043a8a76e15d75d031fe24d1f69c","status":"affected","lessThan":"b268984ae88cb0dcd7a8e8263962c748448e26e8","versionType":"git"},{"version":"a5cbd5fc22d5043a8a76e15d75d031fe24d1f69c","status":"affected","lessThan":"ba0a4df8c563536857dcbf7b4dbd0f2a15f57ace","versionType":"git"},{"version":"a5cbd5fc22d5043a8a76e15d75d031fe24d1f69c","status":"affected","lessThan":"08bc6173fd611ad5a40f472bf5f15b92aea0fe40","versionType":"git"},{"version":"a5cbd5fc22d5043a8a76e15d75d031fe24d1f69c","status":"affected","lessThan":"770444611f047dbfd4517ec0bc1b179d40c2f346","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/ceph/mon_client.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"5.11","status":"affected"},{"version":"0","status":"unaffected","lessThan":"5.11","versionType":"semver"},{"version":"5.15.203","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.167","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.130","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.78","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.19","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"6.19.9","status":"unaffected","lessThanOrEqual":"6.19.*","versionType":"semver"},{"version":"7.0","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/ceph/mon_client.c"]}],"references":["https://git.kernel.org/stable/c/ee5588e2bc41acb73f6676c0520420c107cd0140","https://git.kernel.org/stable/c/86f7060cd638d6eb042e8ed780fb83a59ca0dcb3","https://git.kernel.org/stable/c/5f2806684b05bd24d05c091083b8e2517ba8ffac","https://git.kernel.org/stable/c/b268984ae88cb0dcd7a8e8263962c748448e26e8","https://git.kernel.org/stable/c/ba0a4df8c563536857dcbf7b4dbd0f2a15f57ace","https://git.kernel.org/stable/c/08bc6173fd611ad5a40f472bf5f15b92aea0fe40","https://git.kernel.org/stable/c/770444611f047dbfd4517ec0bc1b179d40c2f346"],"weaknesses":["CWE-190"],"ingestedAt":"2026-10-29T20:11:57.932Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/43xxx/CVE-2026-43405.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-43405","state":"PUBLISHED","datePublished":"2026-05-08T14:21:45.581Z","dateUpdated":"2026-10-19T19:16:28.480Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2026-05-01T14:12:56.007Z"},"containers":{"cna":{"title":"libceph: Use u32 for non-negative values in ceph_monmap_decode()","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nlibceph: Use u32 for non-negative values in ceph_monmap_decode()\n\nThis patch fixes unnecessary implicit conversions that change signedness\nof blob_len and num_mon in ceph_monmap_decode().\nCurrently blob_len and num_mon are (signed) int variables. They are used\nto hold values that are always non-negative and get assigned in\nceph_decode_32_safe(), which is meant to assign u32 values. Both\nvariables are subsequently used as unsigned values, and the value of\nnum_mon is further assigned to monmap->num_mon, which is of type u32.\nTherefore, both variables should be of type u32. This is especially\nrelevant for num_mon. If the value read from the incoming message is\nvery large, it is interpreted as a negative value, and the check for\nnum_mon > CEPH_MAX_MON does not catch it. This leads to the attempt to\nallocate a very large chunk of memory for monmap, which will most likely\nfail. In this case, an unnecessary attempt to allocate memory is\nperformed, and -ENOMEM is returned instead of -EINVAL."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"a5cbd5fc22d5043a8a76e15d75d031fe24d1f69c","status":"affected","lessThan":"ee5588e2bc41acb73f6676c0520420c107cd0140","versionType":"git"},{"version":"a5cbd5fc22d5043a8a76e15d75d031fe24d1f69c","status":"affected","lessThan":"86f7060cd638d6eb042e8ed780fb83a59ca0dcb3","versionType":"git"},{"version":"a5cbd5fc22d5043a8a76e15d75d031fe24d1f69c","status":"affected","lessThan":"5f2806684b05bd24d05c091083b8e2517ba8ffac","versionType":"git"},{"version":"a5cbd5fc22d5043a8a76e15d75d031fe24d1f69c","status":"affected","lessThan":"b268984ae88cb0dcd7a8e8263962c748448e26e8","versionType":"git"},{"version":"a5cbd5fc22d5043a8a76e15d75d031fe24d1f69c","status":"affected","lessThan":"ba0a4df8c563536857dcbf7b4dbd0f2a15f57ace","versionType":"git"},{"version":"a5cbd5fc22d5043a8a76e15d75d031fe24d1f69c","status":"affected","lessThan":"08bc6173fd611ad5a40f472bf5f15b92aea0fe40","versionType":"git"},{"version":"a5cbd5fc22d5043a8a76e15d75d031fe24d1f69c","status":"affected","lessThan":"770444611f047dbfd4517ec0bc1b179d40c2f346","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/ceph/mon_client.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"5.11","status":"affected"},{"version":"0","status":"unaffected","lessThan":"5.11","versionType":"semver"},{"version":"5.15.203","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.167","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.130","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.78","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.19","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"6.19.9","status":"unaffected","lessThanOrEqual":"6.19.*","versionType":"semver"},{"version":"7.0","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/ceph/mon_client.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/ee5588e2bc41acb73f6676c0520420c107cd0140"},{"url":"https://git.kernel.org/stable/c/86f7060cd638d6eb042e8ed780fb83a59ca0dcb3"},{"url":"https://git.kernel.org/stable/c/5f2806684b05bd24d05c091083b8e2517ba8ffac"},{"url":"https://git.kernel.org/stable/c/b268984ae88cb0dcd7a8e8263962c748448e26e8"},{"url":"https://git.kernel.org/stable/c/ba0a4df8c563536857dcbf7b4dbd0f2a15f57ace"},{"url":"https://git.kernel.org/stable/c/08bc6173fd611ad5a40f472bf5f15b92aea0fe40"},{"url":"https://git.kernel.org/stable/c/770444611f047dbfd4517ec0bc1b179d40c2f346"}],"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 vulnerable decoder processes CEPH_MSG_MON_MAP data received over the Ceph monitor TCP connection from a remote peer.\nAC:L - Triggering requires sending a single malformed monmap with a large u32 num_mon value; there is no race or condition outside the attacker's control once they control the monitor-side message stream.\nPR:N - The attacker needs no privileges on the vulnerable host; a malicious or compromised Ceph monitor endpoint can supply the crafted network message.\nUI:N - Although Ceph clients are initially created by mount or RBD setup, monitor map updates are received asynchronously over an established session and do not require further victim action.\nS:U - The impact remains within the kernel/Ceph client security authority and does not cross a VM, sandbox, or hardware isolation boundary.\nC:N - The signedness bug causes an oversized allocation attempt that fails; the investigated path does not expose kernel memory or create a read primitive.\nI:N - The allocation is overflow-safe and fails before the monmap is installed or populated, so there is no demonstrated memory corruption or data modification primitive.\nA:H - A crafted monmap can repeatedly force huge kernel allocation attempts and prevent the client from obtaining or refreshing a valid monitor map, denying Ceph storage availability in affected deployments."}]}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-08-05T12:27:48.288Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.11","versionEndExcluding":"5.15.203"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.11","versionEndExcluding":"6.1.167"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.11","versionEndExcluding":"6.6.130"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.11","versionEndExcluding":"6.12.78"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.11","versionEndExcluding":"6.18.19"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.11","versionEndExcluding":"6.19.9"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.11","versionEndExcluding":"7.0"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}},"adp":[{"title":"CISA ADP Vulnrichment","metrics":[{"other":{"type":"ssvc","content":{"id":"CVE-2026-43405","role":"CISA Coordinator","options":[{"Exploitation":"none"},{"Automatable":"yes"},{"Technical Impact":"partial"}],"version":"2.0.3","timestamp":"2026-10-16T15:17:06.278684Z"}}}],"problemTypes":[{"descriptions":[{"cweId":"CWE-190","lang":"en","type":"CWE","description":"CWE-190 Integer Overflow or Wraparound"}]}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2026-10-19T19:16:28.480Z"}}]}}}