GCVE Workshop - 22 September 2026 (14:00-18:00), Luxembourg Before The Vulnopticon Conference - Registration

CVE-2026-74390 (GCVE-0-2026-74390)

Vulnerability from cvelistv5 – Published: 2026-08-15 05:59 – Updated: 2026-08-17 05:46
VLAI
Title
RDMA/irdma: Fix out-of-bounds write in irdma_copy_user_pgaddrs
Summary
In the Linux kernel, the following vulnerability has been resolved: RDMA/irdma: Fix out-of-bounds write in irdma_copy_user_pgaddrs The irdma_copy_user_pgaddrs function loops through all of the umem DMA blocks to populate the PBLEs and will stop when either the last DMA block is reached or palloc->total_cnt is reached. The issue is that the logic for checking palloc->total_cnt would only work for non-zero values. When irdma_setup_pbles is called with lvl==0, it calls irdma_copy_user_pgaddrs with palloc->total_cnt==0, which means the only way to break out of the loop is to reach the last umem DMA block, which means it could end up going beyond the fixed size of 4 iwmr->pgaddrmem array that is used in the lvl==0 case. In the case of QP/CQ/SRQ rings, the value of lvl is determined by a separate input (for example, req.cq_pages in the case of a CQ). So, we must perform explicit checking to ensure we don't overflow the pgaddrmem array if the user provides a umem that consists of more blocks than their provided req.cq_pages.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: b48c24c2d710cf34810c555dcef883a3d35a9c08 , < 4780f58672ee6328accd54a95f9c00683477e499 (git)
Affected: b48c24c2d710cf34810c555dcef883a3d35a9c08 , < 79a20a8e201a779224b4bf115250a7713bde72c0 (git)
Affected: b48c24c2d710cf34810c555dcef883a3d35a9c08 , < 9f8f0d2099e3de1194e37dc933ae0c4206b09aaf (git)
Affected: b48c24c2d710cf34810c555dcef883a3d35a9c08 , < 192a3be0e3759daa24af2841208b074ca6dbaabc (git)
Affected: b48c24c2d710cf34810c555dcef883a3d35a9c08 , < 424d51d33c7541a86934067c2c0538124687fc90 (git)
Affected: b48c24c2d710cf34810c555dcef883a3d35a9c08 , < abd27a977b419d584efa659488c22d2306987b29 (git)
Affected: b48c24c2d710cf34810c555dcef883a3d35a9c08 , < 5ebb3ed757be3e04cf803026004aa0beaeb13e9b (git)
guessed Create a notification for this product.
Linux Linux Affected: 5.14
Unaffected: 0 , < 5.14 (semver)
Unaffected: 5.15.212 , ≤ 5.15.* (semver)
Unaffected: 6.1.178 , ≤ 6.1.* (semver)
Unaffected: 6.6.145 , ≤ 6.6.* (semver)
Unaffected: 6.12.97 , ≤ 6.12.* (semver)
Unaffected: 6.18.40 , ≤ 6.18.* (semver)
Unaffected: 7.1.5 , ≤ 7.1.* (semver)
Unaffected: 7.2 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/infiniband/hw/irdma/verbs.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "4780f58672ee6328accd54a95f9c00683477e499",
              "status": "affected",
              "version": "b48c24c2d710cf34810c555dcef883a3d35a9c08",
              "versionType": "git"
            },
            {
              "lessThan": "79a20a8e201a779224b4bf115250a7713bde72c0",
              "status": "affected",
              "version": "b48c24c2d710cf34810c555dcef883a3d35a9c08",
              "versionType": "git"
            },
            {
              "lessThan": "9f8f0d2099e3de1194e37dc933ae0c4206b09aaf",
              "status": "affected",
              "version": "b48c24c2d710cf34810c555dcef883a3d35a9c08",
              "versionType": "git"
            },
            {
              "lessThan": "192a3be0e3759daa24af2841208b074ca6dbaabc",
              "status": "affected",
              "version": "b48c24c2d710cf34810c555dcef883a3d35a9c08",
              "versionType": "git"
            },
            {
              "lessThan": "424d51d33c7541a86934067c2c0538124687fc90",
              "status": "affected",
              "version": "b48c24c2d710cf34810c555dcef883a3d35a9c08",
              "versionType": "git"
            },
            {
              "lessThan": "abd27a977b419d584efa659488c22d2306987b29",
              "status": "affected",
              "version": "b48c24c2d710cf34810c555dcef883a3d35a9c08",
              "versionType": "git"
            },
            {
              "lessThan": "5ebb3ed757be3e04cf803026004aa0beaeb13e9b",
              "status": "affected",
              "version": "b48c24c2d710cf34810c555dcef883a3d35a9c08",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/infiniband/hw/irdma/verbs.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "5.14"
            },
            {
              "lessThan": "5.14",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.15.*",
              "status": "unaffected",
              "version": "5.15.212",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.178",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.145",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.97",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.40",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.1.*",
              "status": "unaffected",
              "version": "7.1.5",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.2",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.15.212",
                  "versionStartIncluding": "5.14",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.178",
                  "versionStartIncluding": "5.14",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.145",
                  "versionStartIncluding": "5.14",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.97",
                  "versionStartIncluding": "5.14",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.40",
                  "versionStartIncluding": "5.14",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.1.5",
                  "versionStartIncluding": "5.14",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2",
                  "versionStartIncluding": "5.14",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nRDMA/irdma: Fix out-of-bounds write in irdma_copy_user_pgaddrs\n\nThe irdma_copy_user_pgaddrs function loops through all of the umem DMA\nblocks to populate the PBLEs and will stop when either the last DMA\nblock is reached or palloc-\u003etotal_cnt is reached. The issue is that\nthe logic for checking palloc-\u003etotal_cnt would only work for non-zero\nvalues.\n\nWhen irdma_setup_pbles is called with lvl==0, it\ncalls irdma_copy_user_pgaddrs with palloc-\u003etotal_cnt==0, which means\nthe only way to break out of the loop is to reach the last umem DMA\nblock, which means it could end up going beyond the fixed size of 4\niwmr-\u003epgaddrmem array that is used in the lvl==0 case.\n\nIn the case of QP/CQ/SRQ rings, the value of lvl is determined by a\nseparate input (for example, req.cq_pages in the case of a CQ). So,\nwe must perform explicit checking to ensure we don\u0027t overflow the\npgaddrmem array if the user provides a umem that consists of more\nblocks than their provided req.cq_pages."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7.8,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - Exploitation requires a local ioctl on /dev/infiniband/uverbs to register CQ/QP/SRQ memory via irdma_reg_user_mr; the bug is not reachable from remote iWARP/RoCE packet handling.\nAC:L - An attacker fully controls reg_type, cq_pages/sq_pages/rq_pages, and umem size; triggering lvl==0 with many DMA blocks is deterministic and needs no races or special memory layout.\nPR:L - Any unprivileged local user who can open the uverbs device (mode 0666) and use the RDMA NIC\u2014typical on cloud/HPC RDMA nodes\u2014can invoke the vulnerable MR registration path without real root.\nUI:N - No victim interaction is required; the attacker triggers the overflow directly through their own RDMA verbs memory registration calls.\nS:U - Impact is kernel heap corruption and privilege escalation within the host kernel security boundary, not a cross-VM or cross-IOMMU sandbox escape.\nC:H - The out-of-bounds write of attacker-influenced DMA addresses into adjacent irdma_mr/iwpbl heap metadata can be leveraged for arbitrary kernel memory read primitives, not merely a bounded leak.\nI:H - Controlled out-of-bounds u64 writes past pgaddrmem[4] corrupt adjacent kernel heap structures and are suitable for control-flow or arbitrary kernel write exploitation.\nA:H - Heap corruption in a kzalloc\u0027d irdma_mr can cause immediate kernel oops/panic during registration or on subsequent use of corrupted queue memory metadata."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-17T05:46:38.735Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/4780f58672ee6328accd54a95f9c00683477e499"
        },
        {
          "url": "https://git.kernel.org/stable/c/79a20a8e201a779224b4bf115250a7713bde72c0"
        },
        {
          "url": "https://git.kernel.org/stable/c/9f8f0d2099e3de1194e37dc933ae0c4206b09aaf"
        },
        {
          "url": "https://git.kernel.org/stable/c/192a3be0e3759daa24af2841208b074ca6dbaabc"
        },
        {
          "url": "https://git.kernel.org/stable/c/424d51d33c7541a86934067c2c0538124687fc90"
        },
        {
          "url": "https://git.kernel.org/stable/c/abd27a977b419d584efa659488c22d2306987b29"
        },
        {
          "url": "https://git.kernel.org/stable/c/5ebb3ed757be3e04cf803026004aa0beaeb13e9b"
        }
      ],
      "title": "RDMA/irdma: Fix out-of-bounds write in irdma_copy_user_pgaddrs",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-74390",
    "datePublished": "2026-08-15T05:59:04.479Z",
    "dateReserved": "2026-08-15T05:44:03.891Z",
    "dateUpdated": "2026-08-17T05:46:38.735Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-74390",
      "date": "2026-09-05",
      "epss": "0.0013",
      "percentile": "0.0291"
    },
    "nvd": "{\"cve\":{\"id\":\"CVE-2026-74390\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2026-08-15T06:22:40.947\",\"lastModified\":\"2026-08-17T06:19:34.037\",\"vulnStatus\":\"Received\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\nRDMA/irdma: Fix out-of-bounds write in irdma_copy_user_pgaddrs\\n\\nThe irdma_copy_user_pgaddrs function loops through all of the umem DMA\\nblocks to populate the PBLEs and will stop when either the last DMA\\nblock is reached or palloc-\u003etotal_cnt is reached. The issue is that\\nthe logic for checking palloc-\u003etotal_cnt would only work for non-zero\\nvalues.\\n\\nWhen irdma_setup_pbles is called with lvl==0, it\\ncalls irdma_copy_user_pgaddrs with palloc-\u003etotal_cnt==0, which means\\nthe only way to break out of the loop is to reach the last umem DMA\\nblock, which means it could end up going beyond the fixed size of 4\\niwmr-\u003epgaddrmem array that is used in the lvl==0 case.\\n\\nIn the case of QP/CQ/SRQ rings, the value of lvl is determined by a\\nseparate input (for example, req.cq_pages in the case of a CQ). So,\\nwe must perform explicit checking to ensure we don\u0027t overflow the\\npgaddrmem array if the user provides a umem that consists of more\\nblocks than their provided req.cq_pages.\"}],\"affected\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"affectedData\":[{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"unaffected\",\"programFiles\":[\"drivers/infiniband/hw/irdma/verbs.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"b48c24c2d710cf34810c555dcef883a3d35a9c08\",\"lessThan\":\"4780f58672ee6328accd54a95f9c00683477e499\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"b48c24c2d710cf34810c555dcef883a3d35a9c08\",\"lessThan\":\"79a20a8e201a779224b4bf115250a7713bde72c0\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"b48c24c2d710cf34810c555dcef883a3d35a9c08\",\"lessThan\":\"9f8f0d2099e3de1194e37dc933ae0c4206b09aaf\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"b48c24c2d710cf34810c555dcef883a3d35a9c08\",\"lessThan\":\"192a3be0e3759daa24af2841208b074ca6dbaabc\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"b48c24c2d710cf34810c555dcef883a3d35a9c08\",\"lessThan\":\"424d51d33c7541a86934067c2c0538124687fc90\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"b48c24c2d710cf34810c555dcef883a3d35a9c08\",\"lessThan\":\"abd27a977b419d584efa659488c22d2306987b29\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"b48c24c2d710cf34810c555dcef883a3d35a9c08\",\"lessThan\":\"5ebb3ed757be3e04cf803026004aa0beaeb13e9b\",\"versionType\":\"git\",\"status\":\"affected\"}]},{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"affected\",\"programFiles\":[\"drivers/infiniband/hw/irdma/verbs.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"5.14\",\"status\":\"affected\"},{\"version\":\"0\",\"lessThan\":\"5.14\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"5.15.212\",\"lessThanOrEqual\":\"5.15.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.1.178\",\"lessThanOrEqual\":\"6.1.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.6.145\",\"lessThanOrEqual\":\"6.6.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.12.97\",\"lessThanOrEqual\":\"6.12.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.18.40\",\"lessThanOrEqual\":\"6.18.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"7.1.5\",\"lessThanOrEqual\":\"7.1.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"7.2\",\"lessThanOrEqual\":\"*\",\"versionType\":\"original_commit_for_fix\",\"status\":\"unaffected\"}]}]}],\"metrics\":{\"cvssMetricV31\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"type\":\"Secondary\",\"cvssData\":{\"version\":\"3.1\",\"vectorString\":\"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H\",\"baseScore\":7.8,\"baseSeverity\":\"HIGH\",\"attackVector\":\"LOCAL\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"LOW\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"HIGH\",\"integrityImpact\":\"HIGH\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":1.8,\"impactScore\":5.9}]},\"references\":[{\"url\":\"https://git.kernel.org/stable/c/192a3be0e3759daa24af2841208b074ca6dbaabc\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/424d51d33c7541a86934067c2c0538124687fc90\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/4780f58672ee6328accd54a95f9c00683477e499\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/5ebb3ed757be3e04cf803026004aa0beaeb13e9b\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/79a20a8e201a779224b4bf115250a7713bde72c0\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/9f8f0d2099e3de1194e37dc933ae0c4206b09aaf\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/abd27a977b419d584efa659488c22d2306987b29\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}",
    "redhat_vex": {
      "aggregate_severity": "Moderate",
      "current_release_date": "2026-08-20T20:53:56+00:00",
      "cve": "CVE-2026-74390",
      "id": "CVE-2026-74390",
      "initial_release_date": "2026-08-15T00:00:00+00:00",
      "product_status:known_affected": "232",
      "product_status:known_not_affected": "42",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: RDMA/irdma: Fix out-of-bounds write in irdma_copy_user_pgaddrs",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-74390.json",
      "version": "3"
    }
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Detection rules are retrieved from Rulezet.

Loading…

Loading…

Loading…