{
  "schema_version": "1.6.1",
  "id": "RPI-CVE-2024-41079",
  "modified": "2026-10-09T11:39:44Z",
  "upstream": [
    "CVE-2024-41079"
  ],
  "published": "2024-07-29T15:04:35Z",
  "summary": "nvmet: always initialize cqe.result",
  "details": "In the Linux kernel, the following vulnerability has been resolved:\n\nnvmet: always initialize cqe.result\n\nThe spec doesn't mandate that the first two double words (aka results)\nfor the command queue entry need to be set to 0 when they are not\nused (not specified). Though, the target implemention returns 0 for TCP\nand FC but not for RDMA.\n\nLet's make RDMA behave the same and thus explicitly initializing the\nresult field. This prevents leaking any data from the stack.",
  "severity": [
    {
      "type": "CVSS_V3",
      "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N"
    }
  ],
  "affected": [
    {
      "package": {
        "ecosystem": "Raspberry Pi OS:12",
        "name": "linux"
      },
      "versions": [
        "1:6.1.47-1+rpt4"
      ],
      "ecosystem_specific": {
        "binaries": [
          {
            "binary_name": "linux-image-6.1.0-rpi3-rpi-2712",
            "binary_version": "1:6.1.47-1+rpt4"
          },
          {
            "binary_name": "linux-image-6.1.0-rpi3-rpi-v6",
            "binary_version": "1:6.1.47-1+rpt4"
          },
          {
            "binary_name": "linux-image-6.1.0-rpi3-rpi-v7",
            "binary_version": "1:6.1.47-1+rpt4"
          },
          {
            "binary_name": "linux-image-6.1.0-rpi3-rpi-v7l",
            "binary_version": "1:6.1.47-1+rpt4"
          },
          {
            "binary_name": "linux-image-6.1.0-rpi3-rpi-v8",
            "binary_version": "1:6.1.47-1+rpt4"
          }
        ]
      },
      "database_specific": {
        "per_version": {
          "1:6.1.47-1+rpt4": {
            "linux_commit": "655fc658a15ae7a6f37103754adb39ba52a9a14e",
            "upstream_version": "6.1.47",
            "assessment": "commit ancestry (strak rule)",
            "upstream_fixed": "6.1.101",
            "compiled_filter": false
          }
        }
      }
    }
  ],
  "references": [
    {
      "type": "ADVISORY",
      "url": "https://www.cve.org/CVERecord?id=CVE-2024-41079"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/c6a2cf8b0764f3ba7d9bff58c8775a6d4476bb29"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/30d35b24b7957922f81cfdaa66f2e1b1e9b9aed2"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/10967873b80742261527a071954be8b54f0f8e4d"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/0990e8a863645496b9e3f91cfcfd63cd95c80319"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/cd0c1b8e045a8d2785342b385cb2684d9b48e426"
    }
  ],
  "database_specific": {
    "source": "https://git.kernel.org/pub/scm/linux/security/vulns.git",
    "upstream_modified": "2026-08-05T11:52:36Z",
    "severity": {
      "source": "kernel CNA",
      "cvss_v3_score": 7.5,
      "cvss_v3_severity": "High",
      "scenario": "AV:N - nvmet is the in-kernel NVMe-over-Fabrics target; the leaked CQE is delivered to a remote initiator over RDMA (RoCEv2 over UDP/IP, iWARP over TCP, and soft-RoCE/siw over ordinary Ethernet are all IP-routable) on the standard NVMe-oF port. The defect itself is in transport-generic `nvmet_req_init()`, and NVMe-oF targets are explicitly network-facing services.\nAC:L - The leak is fully deterministic \u2014 establish an RDMA CM connection and send any command capsule, and the uninitialized 8-byte result field is returned every time. There is no race, no timing window, and no memory-layout precondition required to obtain the disclosure.\nPR:N - The response buffers are allocated directly from the RDMA CM connect request, and any command sent before Connect completes (`req->sq->ctrl == NULL`) is rejected by `nvmet_parse_connect_cmd()` and completed with the uninitialized CQE \u2014 no host NQN validation, no DH-HMAC-CHAP authentication, and no valid NVMe Connect is needed. This is a purely pre-authentication code path.\nUI:N - Exploitation requires only that the attacker connect to the exported NVMe-oF target and issue commands; no action by any local user or administrator is involved.\nS:U - The disclosed data and the vulnerable code are both within the target kernel's security authority, with no crossing of a VM, IOMMU, or sandbox boundary.\nC:H - Each response leaks 8 bytes of uninitialized kmalloc-16 slab memory, and the attacker controls the volume without bound \u2014 `hsqsize` is uncapped for I/O queues (up to ~131072 fresh CQEs per queue) and `nvmet_rdma_get_rsp()` allocates and frees a brand-new CQE per in-flight command past the free list, giving a repeatable spray-and-harvest oracle over recently-freed heap objects that readily yields kernel pointers and other sensitive residue.\nI:N - The bug only causes stale, non-attacker-chosen bytes to be emitted in the completion entry; no kernel data structure, file content, or target state is modified as a result.\nA:N - Reading uninitialized memory within a validly allocated 16-byte object causes no crash, hang, or resource exhaustion \u2014 the target continues operating normally while leaking."
    }
  }
}
