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

CVE-2023-54048 (GCVE-0-2023-54048)

Vulnerability from cvelistv5 – Published: 2025-12-24 12:22 – Updated: 2026-08-05 09:16
VLAI
Title
RDMA/bnxt_re: Prevent handling any completions after qp destroy
Summary
In the Linux kernel, the following vulnerability has been resolved: RDMA/bnxt_re: Prevent handling any completions after qp destroy HW may generate completions that indicates QP is destroyed. Driver should not be scheduling any more completion handlers for this QP, after the QP is destroyed. Since CQs are active during the QP destroy, driver may still schedule completion handlers. This can cause a race where the destroy_cq and poll_cq running simultaneously. Snippet of kernel panic while doing bnxt_re driver load unload in loop. This indicates a poll after the CQ is freed.  [77786.481636] Call Trace: [77786.481640]  <TASK> [77786.481644]  bnxt_re_poll_cq+0x14a/0x620 [bnxt_re] [77786.481658]  ? kvm_clock_read+0x14/0x30 [77786.481693]  __ib_process_cq+0x57/0x190 [ib_core] [77786.481728]  ib_cq_poll_work+0x26/0x80 [ib_core] [77786.481761]  process_one_work+0x1e5/0x3f0 [77786.481768]  worker_thread+0x50/0x3a0 [77786.481785]  ? __pfx_worker_thread+0x10/0x10 [77786.481790]  kthread+0xe2/0x110 [77786.481794]  ? __pfx_kthread+0x10/0x10 [77786.481797]  ret_from_fork+0x2c/0x50 To avoid this, complete all completion handlers before returning the destroy QP. If free_cq is called soon after destroy_qp, IB stack will cancel the CQ work before invoking the destroy_cq verb and this will prevent any race mentioned.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 1ac5a404797523cedaf424a3aaa3cf8f9548dff8 , < b79a0e71d6e8692e0b6da05f8aaa7d69191cf7e7 (git)
Affected: 1ac5a404797523cedaf424a3aaa3cf8f9548dff8 , < b8500538b8f5b2cd86b02754c8de83eaa7a2d6ba (git)
Affected: 1ac5a404797523cedaf424a3aaa3cf8f9548dff8 , < 7faa6097694164380ed19600c7a7993d071270b9 (git)
Affected: 1ac5a404797523cedaf424a3aaa3cf8f9548dff8 , < b5bbc6551297447d3cca55cf907079e206e9cd82 (git)
guessed Create a notification for this product.
Linux Linux Affected: 4.11
Unaffected: 0 , < 4.11 (semver)
Unaffected: 5.15.124 , ≤ 5.15.* (semver)
Unaffected: 6.1.43 , ≤ 6.1.* (semver)
Unaffected: 6.4.8 , ≤ 6.4.* (semver)
Unaffected: 6.5 , ≤ * (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/bnxt_re/ib_verbs.c",
            "drivers/infiniband/hw/bnxt_re/qplib_fp.c",
            "drivers/infiniband/hw/bnxt_re/qplib_fp.h"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "b79a0e71d6e8692e0b6da05f8aaa7d69191cf7e7",
              "status": "affected",
              "version": "1ac5a404797523cedaf424a3aaa3cf8f9548dff8",
              "versionType": "git"
            },
            {
              "lessThan": "b8500538b8f5b2cd86b02754c8de83eaa7a2d6ba",
              "status": "affected",
              "version": "1ac5a404797523cedaf424a3aaa3cf8f9548dff8",
              "versionType": "git"
            },
            {
              "lessThan": "7faa6097694164380ed19600c7a7993d071270b9",
              "status": "affected",
              "version": "1ac5a404797523cedaf424a3aaa3cf8f9548dff8",
              "versionType": "git"
            },
            {
              "lessThan": "b5bbc6551297447d3cca55cf907079e206e9cd82",
              "status": "affected",
              "version": "1ac5a404797523cedaf424a3aaa3cf8f9548dff8",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/infiniband/hw/bnxt_re/ib_verbs.c",
            "drivers/infiniband/hw/bnxt_re/qplib_fp.c",
            "drivers/infiniband/hw/bnxt_re/qplib_fp.h"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "4.11"
            },
            {
              "lessThan": "4.11",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.15.*",
              "status": "unaffected",
              "version": "5.15.124",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.43",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.4.*",
              "status": "unaffected",
              "version": "6.4.8",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.5",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.15.124",
                  "versionStartIncluding": "4.11",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.43",
                  "versionStartIncluding": "4.11",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.4.8",
                  "versionStartIncluding": "4.11",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.5",
                  "versionStartIncluding": "4.11",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nRDMA/bnxt_re: Prevent handling any completions after qp destroy\n\nHW may generate completions that indicates QP is destroyed.\nDriver should not be scheduling any more completion handlers\nfor this QP, after the QP is destroyed. Since CQs are active\nduring the QP destroy, driver may still schedule completion\nhandlers. This can cause a race where the destroy_cq and poll_cq\nrunning simultaneously.\n\nSnippet of kernel panic while doing bnxt_re driver load unload in loop.\nThis indicates a poll after the CQ is freed.\u00a0\n\n[77786.481636] Call Trace:\n[77786.481640] \u00a0\u003cTASK\u003e\n[77786.481644] \u00a0bnxt_re_poll_cq+0x14a/0x620 [bnxt_re]\n[77786.481658] \u00a0? kvm_clock_read+0x14/0x30\n[77786.481693] \u00a0__ib_process_cq+0x57/0x190 [ib_core]\n[77786.481728] \u00a0ib_cq_poll_work+0x26/0x80 [ib_core]\n[77786.481761] \u00a0process_one_work+0x1e5/0x3f0\n[77786.481768] \u00a0worker_thread+0x50/0x3a0\n[77786.481785] \u00a0? __pfx_worker_thread+0x10/0x10\n[77786.481790] \u00a0kthread+0xe2/0x110\n[77786.481794] \u00a0? __pfx_kthread+0x10/0x10\n[77786.481797] \u00a0ret_from_fork+0x2c/0x50\n\nTo avoid this, complete all completion handlers before returning the\ndestroy QP. If free_cq is called soon after destroy_qp,  IB stack\nwill cancel the CQ work before invoking the destroy_cq verb and\nthis will prevent any race mentioned."
        }
      ],
      "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 - The vulnerable destroy_qp/destroy_cq sequence is driven through the RDMA verbs interface on /dev/infiniband/uverbsN (or by a local kernel ULP), i.e. local syscall/ioctl access rather than network packets. A remote RDMA peer can only indirectly influence teardown timing on a target service, so the deterministic attack surface is local.\nAC:L - The attacker controls both sides of the race \u2014 they generate the RoCE traffic that produces in-flight CQ notifications and they choose when to issue destroy_qp followed immediately by destroy_cq \u2014 and can loop the sequence indefinitely until it lands. No condition outside attacker control is required.\nPR:L - uverbs_devnode() creates /dev/infiniband/uverbs* with mode 0666 and no capability check gates create_cq/create_qp/destroy_qp/destroy_cq, so an ordinary unprivileged local user on a host with a bnxt_re adapter can reach the path.\nUI:N - The attacker performs the entire create-traffic-destroy sequence themselves; no action by any other user or administrator is needed.\nS:U - The use-after-free corrupts kernel memory within the same kernel security authority; there is no crossing of a VM, IOMMU, or sandbox boundary.\nC:H - bnxt_re_poll_cq() reads a freed hardware queue and a freed cq-\u003ecql buffer, and bnxt_qplib_service_nq() dereferences a freed bnxt_re_cq; reclaiming that slab object turns the UAF into a kernel-memory disclosure primitive.\nI:H - The UAF gives write primitives \u2014 polled CQEs are written into the kfree()d cq-\u003ecql array and cq-\u003ecnq_events/arm_state are updated in freed memory \u2014 and bnxt_re_cqn_handler() calls cq-\u003eib_cq.comp_handler, a function pointer read out of the freed object, which is exploitable for control-flow hijack after heap spray.\nA:H - The commit message documents a reproducible kernel panic in bnxt_re_poll_cq+0x14a via ib_cq_poll_work after the CQ was freed; the race can be re-triggered at will to crash the host."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T09:16:46.428Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/b79a0e71d6e8692e0b6da05f8aaa7d69191cf7e7"
        },
        {
          "url": "https://git.kernel.org/stable/c/b8500538b8f5b2cd86b02754c8de83eaa7a2d6ba"
        },
        {
          "url": "https://git.kernel.org/stable/c/7faa6097694164380ed19600c7a7993d071270b9"
        },
        {
          "url": "https://git.kernel.org/stable/c/b5bbc6551297447d3cca55cf907079e206e9cd82"
        }
      ],
      "title": "RDMA/bnxt_re: Prevent handling any completions after qp destroy",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2023-54048",
    "datePublished": "2025-12-24T12:22:58.910Z",
    "dateReserved": "2025-12-24T12:21:05.089Z",
    "dateUpdated": "2026-08-05T09:16:46.428Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2023-54048",
      "date": "2026-09-15",
      "epss": "0.00195",
      "percentile": "0.09397"
    },
    "nvd": "{\"cve\":{\"id\":\"CVE-2023-54048\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2025-12-24T13:16:06.457\",\"lastModified\":\"2026-08-04T10:19:26.443\",\"vulnStatus\":\"Deferred\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\nRDMA/bnxt_re: Prevent handling any completions after qp destroy\\n\\nHW may generate completions that indicates QP is destroyed.\\nDriver should not be scheduling any more completion handlers\\nfor this QP, after the QP is destroyed. Since CQs are active\\nduring the QP destroy, driver may still schedule completion\\nhandlers. This can cause a race where the destroy_cq and poll_cq\\nrunning simultaneously.\\n\\nSnippet of kernel panic while doing bnxt_re driver load unload in loop.\\nThis indicates a poll after the CQ is freed.\u00a0\\n\\n[77786.481636] Call Trace:\\n[77786.481640] \u00a0\u003cTASK\u003e\\n[77786.481644] \u00a0bnxt_re_poll_cq+0x14a/0x620 [bnxt_re]\\n[77786.481658] \u00a0? kvm_clock_read+0x14/0x30\\n[77786.481693] \u00a0__ib_process_cq+0x57/0x190 [ib_core]\\n[77786.481728] \u00a0ib_cq_poll_work+0x26/0x80 [ib_core]\\n[77786.481761] \u00a0process_one_work+0x1e5/0x3f0\\n[77786.481768] \u00a0worker_thread+0x50/0x3a0\\n[77786.481785] \u00a0? __pfx_worker_thread+0x10/0x10\\n[77786.481790] \u00a0kthread+0xe2/0x110\\n[77786.481794] \u00a0? __pfx_kthread+0x10/0x10\\n[77786.481797] \u00a0ret_from_fork+0x2c/0x50\\n\\nTo avoid this, complete all completion handlers before returning the\\ndestroy QP. If free_cq is called soon after destroy_qp,  IB stack\\nwill cancel the CQ work before invoking the destroy_cq verb and\\nthis will prevent any race mentioned.\"}],\"affected\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"affectedData\":[{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"unaffected\",\"programFiles\":[\"drivers/infiniband/hw/bnxt_re/ib_verbs.c\",\"drivers/infiniband/hw/bnxt_re/qplib_fp.c\",\"drivers/infiniband/hw/bnxt_re/qplib_fp.h\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"1ac5a404797523cedaf424a3aaa3cf8f9548dff8\",\"lessThan\":\"b79a0e71d6e8692e0b6da05f8aaa7d69191cf7e7\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"1ac5a404797523cedaf424a3aaa3cf8f9548dff8\",\"lessThan\":\"b8500538b8f5b2cd86b02754c8de83eaa7a2d6ba\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"1ac5a404797523cedaf424a3aaa3cf8f9548dff8\",\"lessThan\":\"7faa6097694164380ed19600c7a7993d071270b9\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"1ac5a404797523cedaf424a3aaa3cf8f9548dff8\",\"lessThan\":\"b5bbc6551297447d3cca55cf907079e206e9cd82\",\"versionType\":\"git\",\"status\":\"affected\"}]},{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"affected\",\"programFiles\":[\"drivers/infiniband/hw/bnxt_re/ib_verbs.c\",\"drivers/infiniband/hw/bnxt_re/qplib_fp.c\",\"drivers/infiniband/hw/bnxt_re/qplib_fp.h\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"4.11\",\"status\":\"affected\"},{\"version\":\"0\",\"lessThan\":\"4.11\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"5.15.124\",\"lessThanOrEqual\":\"5.15.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.1.43\",\"lessThanOrEqual\":\"6.1.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.4.8\",\"lessThanOrEqual\":\"6.4.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.5\",\"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/7faa6097694164380ed19600c7a7993d071270b9\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/b5bbc6551297447d3cca55cf907079e206e9cd82\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/b79a0e71d6e8692e0b6da05f8aaa7d69191cf7e7\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/b8500538b8f5b2cd86b02754c8de83eaa7a2d6ba\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}",
    "redhat_vex": {
      "aggregate_severity": "Moderate",
      "current_release_date": "2026-08-04T19:13:57+00:00",
      "cve": "CVE-2023-54048",
      "id": "CVE-2023-54048",
      "initial_release_date": "2023-01-01T00:00:00+00:00",
      "product_status:fixed": "279",
      "product_status:known_affected": "98",
      "product_status:known_not_affected": "90",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: Linux kernel: Denial of Service in RDMA/bnxt_re driver due to race condition during QP destruction",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2023/cve-2023-54048.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2026-09-12T23:56:18Z",
      "cve": "CVE-2023-54048",
      "id": "CVE-2023-54048",
      "initial_release_date": "2025-12-25T00:56:52Z",
      "product_status:known_affected": "520",
      "product_status:known_not_affected": "103",
      "product_status:recommended": "474",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2023-54048",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2023-54048.json",
      "version": "41"
    }
  }
}



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…

Related by attack behaviour

Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.


Loading…