{"id":"CVE-2026-53043","state":"PUBLISHED","title":"ocfs2/dlm: validate qr_numregions in dlm_match_regions()","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nocfs2/dlm: validate qr_numregions in dlm_match_regions()\n\nPatch series \"ocfs2/dlm: fix two bugs in dlm_match_regions()\".\n\nIn dlm_match_regions(), the qr_numregions field from a DLM_QUERY_REGION\nnetwork message is used to drive loops over the qr_regions buffer without\nsufficient validation.  This series fixes two issues:\n\n- Patch 1 adds a bounds check to reject messages where qr_numregions\n  exceeds O2NM_MAX_REGIONS. The o2net layer only validates message\n  byte length; it does not constrain field values, so a crafted message\n  can set qr_numregions up to 255 and trigger out-of-bounds reads past\n  the 1024-byte qr_regions buffer.\n\n- Patch 2 fixes an off-by-one in the local-vs-remote comparison loop,\n  which uses '<=' instead of '<', reading one entry past the valid range\n  even when qr_numregions is within bounds.\n\n\nThis patch (of 2):\n\nThe qr_numregions field from a DLM_QUERY_REGION network message is used\ndirectly as loop bounds in dlm_match_regions() without checking against\nO2NM_MAX_REGIONS.  Since qr_regions is sized for at most O2NM_MAX_REGIONS\n(32) entries, a crafted message with qr_numregions > 32 causes\nout-of-bounds reads past the qr_regions buffer.\n\nAdd a bounds check for qr_numregions before entering the loops.","publishedAt":"2026-06-24T16:29:49.480Z","updatedAt":"2026-08-05T12:32:50.728Z","severity":{"score":9.1,"label":"Critical","version":"3.1","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H","source":"Linux"},"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"ea2034416b54700e30371f2ad6517cbb94674083","status":"affected","lessThan":"d3d5efade0c79dac1cac98c0cb1115432f804439","versionType":"git"},{"version":"ea2034416b54700e30371f2ad6517cbb94674083","status":"affected","lessThan":"f69551139caf6d24242a0ad049ee46b264e3aee0","versionType":"git"},{"version":"ea2034416b54700e30371f2ad6517cbb94674083","status":"affected","lessThan":"1f8b91275912cd428289c1fb424bebd7ff5302bd","versionType":"git"},{"version":"ea2034416b54700e30371f2ad6517cbb94674083","status":"affected","lessThan":"f37de46149db49abd2b24f4f0c5a88cf4dfb5f47","versionType":"git"},{"version":"ea2034416b54700e30371f2ad6517cbb94674083","status":"affected","lessThan":"6c6e8fc3c007319981647b410c29bb5775048551","versionType":"git"},{"version":"ea2034416b54700e30371f2ad6517cbb94674083","status":"affected","lessThan":"3f474c33ebc2e2ca3fcb587d7de4375348f13373","versionType":"git"},{"version":"ea2034416b54700e30371f2ad6517cbb94674083","status":"affected","lessThan":"3c2d0de23ae4be22b6c18e8f0915be74d3b5fb21","versionType":"git"},{"version":"ea2034416b54700e30371f2ad6517cbb94674083","status":"affected","lessThan":"7ab3fbb01bc6d79091bc375e5235d360cd9b78be","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/ocfs2/dlm/dlmdomain.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"2.6.37","status":"affected"},{"version":"0","status":"unaffected","lessThan":"2.6.37","versionType":"semver"},{"version":"5.10.258","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.209","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.175","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.141","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.91","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.33","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.0.10","status":"unaffected","lessThanOrEqual":"7.0.*","versionType":"semver"},{"version":"7.1","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/ocfs2/dlm/dlmdomain.c"]}],"references":["https://git.kernel.org/stable/c/d3d5efade0c79dac1cac98c0cb1115432f804439","https://git.kernel.org/stable/c/f69551139caf6d24242a0ad049ee46b264e3aee0","https://git.kernel.org/stable/c/1f8b91275912cd428289c1fb424bebd7ff5302bd","https://git.kernel.org/stable/c/f37de46149db49abd2b24f4f0c5a88cf4dfb5f47","https://git.kernel.org/stable/c/6c6e8fc3c007319981647b410c29bb5775048551","https://git.kernel.org/stable/c/3f474c33ebc2e2ca3fcb587d7de4375348f13373","https://git.kernel.org/stable/c/3c2d0de23ae4be22b6c18e8f0915be74d3b5fb21","https://git.kernel.org/stable/c/7ab3fbb01bc6d79091bc375e5235d360cd9b78be"],"weaknesses":[],"ingestedAt":"2026-10-29T20:12:16.098Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/53xxx/CVE-2026-53043.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-53043","state":"PUBLISHED","datePublished":"2026-06-24T16:29:49.480Z","dateUpdated":"2026-08-05T12:32:50.728Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2026-06-09T07:44:35.380Z"},"containers":{"cna":{"title":"ocfs2/dlm: validate qr_numregions in dlm_match_regions()","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nocfs2/dlm: validate qr_numregions in dlm_match_regions()\n\nPatch series \"ocfs2/dlm: fix two bugs in dlm_match_regions()\".\n\nIn dlm_match_regions(), the qr_numregions field from a DLM_QUERY_REGION\nnetwork message is used to drive loops over the qr_regions buffer without\nsufficient validation.  This series fixes two issues:\n\n- Patch 1 adds a bounds check to reject messages where qr_numregions\n  exceeds O2NM_MAX_REGIONS. The o2net layer only validates message\n  byte length; it does not constrain field values, so a crafted message\n  can set qr_numregions up to 255 and trigger out-of-bounds reads past\n  the 1024-byte qr_regions buffer.\n\n- Patch 2 fixes an off-by-one in the local-vs-remote comparison loop,\n  which uses '<=' instead of '<', reading one entry past the valid range\n  even when qr_numregions is within bounds.\n\n\nThis patch (of 2):\n\nThe qr_numregions field from a DLM_QUERY_REGION network message is used\ndirectly as loop bounds in dlm_match_regions() without checking against\nO2NM_MAX_REGIONS.  Since qr_regions is sized for at most O2NM_MAX_REGIONS\n(32) entries, a crafted message with qr_numregions > 32 causes\nout-of-bounds reads past the qr_regions buffer.\n\nAdd a bounds check for qr_numregions before entering the loops."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"ea2034416b54700e30371f2ad6517cbb94674083","status":"affected","lessThan":"d3d5efade0c79dac1cac98c0cb1115432f804439","versionType":"git"},{"version":"ea2034416b54700e30371f2ad6517cbb94674083","status":"affected","lessThan":"f69551139caf6d24242a0ad049ee46b264e3aee0","versionType":"git"},{"version":"ea2034416b54700e30371f2ad6517cbb94674083","status":"affected","lessThan":"1f8b91275912cd428289c1fb424bebd7ff5302bd","versionType":"git"},{"version":"ea2034416b54700e30371f2ad6517cbb94674083","status":"affected","lessThan":"f37de46149db49abd2b24f4f0c5a88cf4dfb5f47","versionType":"git"},{"version":"ea2034416b54700e30371f2ad6517cbb94674083","status":"affected","lessThan":"6c6e8fc3c007319981647b410c29bb5775048551","versionType":"git"},{"version":"ea2034416b54700e30371f2ad6517cbb94674083","status":"affected","lessThan":"3f474c33ebc2e2ca3fcb587d7de4375348f13373","versionType":"git"},{"version":"ea2034416b54700e30371f2ad6517cbb94674083","status":"affected","lessThan":"3c2d0de23ae4be22b6c18e8f0915be74d3b5fb21","versionType":"git"},{"version":"ea2034416b54700e30371f2ad6517cbb94674083","status":"affected","lessThan":"7ab3fbb01bc6d79091bc375e5235d360cd9b78be","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/ocfs2/dlm/dlmdomain.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"2.6.37","status":"affected"},{"version":"0","status":"unaffected","lessThan":"2.6.37","versionType":"semver"},{"version":"5.10.258","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.209","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.175","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.141","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.91","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.33","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.0.10","status":"unaffected","lessThanOrEqual":"7.0.*","versionType":"semver"},{"version":"7.1","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/ocfs2/dlm/dlmdomain.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/d3d5efade0c79dac1cac98c0cb1115432f804439"},{"url":"https://git.kernel.org/stable/c/f69551139caf6d24242a0ad049ee46b264e3aee0"},{"url":"https://git.kernel.org/stable/c/1f8b91275912cd428289c1fb424bebd7ff5302bd"},{"url":"https://git.kernel.org/stable/c/f37de46149db49abd2b24f4f0c5a88cf4dfb5f47"},{"url":"https://git.kernel.org/stable/c/6c6e8fc3c007319981647b410c29bb5775048551"},{"url":"https://git.kernel.org/stable/c/3f474c33ebc2e2ca3fcb587d7de4375348f13373"},{"url":"https://git.kernel.org/stable/c/3c2d0de23ae4be22b6c18e8f0915be74d3b5fb21"},{"url":"https://git.kernel.org/stable/c/7ab3fbb01bc6d79091bc375e5235d360cd9b78be"}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H","baseScore":9.1,"baseSeverity":"CRITICAL"},"scenarios":[{"lang":"en","value":"AV:N - The vulnerable `DLM_QUERY_REGION` message is received over OCFS2 o2net TCP connections from cluster peers, so the code is reachable via network protocol traffic.\nAC:L - A malicious configured/heartbeating peer can create the DLM join state and send a crafted `qr_numregions` value; no race or condition outside the attacker's control is required once the cluster service is exposed.\nPR:N - The receiver performs cluster IP/heartbeat gating but no user authentication or target-local privilege check before dispatching the DLM message, so exploitation does not require an account or privileges on the victim.\nUI:N - No victim user action is needed after the OCFS2 cluster/DLM service is running; the attacker sends network messages.\nS:U - The impact remains within the kernel/OCFS2 cluster node security authority and does not cross a separate boundary such as guest-to-host or IOMMU isolation.\nC:H - The attacker-controlled count drives out-of-bounds reads past the fixed `qr_regions` buffer into adjacent kernel memory; under the higher-severity rule, this is a high confidentiality impact.\nI:N - The vulnerable loops perform reads and comparisons/logging only, with no out-of-bounds write or demonstrated control-flow/data modification primitive.\nA:H - The crafted message can force kernel out-of-bounds memory reads from the receive buffer path and can reasonably cause an oops/crash or repeated DLM join failure, so availability impact is high."}]}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-08-05T12:32:50.728Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.37","versionEndExcluding":"5.10.258"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.37","versionEndExcluding":"5.15.209"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.37","versionEndExcluding":"6.1.175"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.37","versionEndExcluding":"6.6.141"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.37","versionEndExcluding":"6.12.91"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.37","versionEndExcluding":"6.18.33"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.37","versionEndExcluding":"7.0.10"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.37","versionEndExcluding":"7.1"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}}}}}