CVE-2024-45013 (GCVE-0-2024-45013)

Vulnerability from cvelistv5 – Published: 2024-09-11 15:13 – Updated: 2026-08-05 11:37
VLAI
Title
nvme: move stopping keep-alive into nvme_uninit_ctrl()
Summary
In the Linux kernel, the following vulnerability has been resolved: nvme: move stopping keep-alive into nvme_uninit_ctrl() Commit 4733b65d82bd ("nvme: start keep-alive after admin queue setup") moves starting keep-alive from nvme_start_ctrl() into nvme_init_ctrl_finish(), but don't move stopping keep-alive into nvme_uninit_ctrl(), so keep-alive work can be started and keep pending after failing to start controller, finally use-after-free is triggered if nvme host driver is unloaded. This patch fixes kernel panic when running nvme/004 in case that connection failure is triggered, by moving stopping keep-alive into nvme_uninit_ctrl(). This way is reasonable because keep-alive is now started in nvme_init_ctrl_finish().
SSVC
Exploitation: none Automatable: no Technical Impact: partial
CISA Coordinator · CISA-ADP (v2.0.3)
Decision recorded 2024-09-29 15:50 UTC
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 3af755a46881c32fecaecfdeaf3a8f0a869deca5 , < 4101af98ab573554c4225e328d506fec2a74bc54 (git)
Affected: 3af755a46881c32fecaecfdeaf3a8f0a869deca5 , < a54a93d0e3599b05856971734e15418ac551a14c (git)
guessed Create a notification for this product.
Linux Linux Affected: 6.7
Unaffected: 0 , < 6.7 (semver)
Unaffected: 6.10.7 , ≤ 6.10.* (semver)
Unaffected: 6.11 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "adp": [
      {
        "metrics": [
          {
            "other": {
              "content": {
                "id": "CVE-2024-45013",
                "options": [
                  {
                    "Exploitation": "none"
                  },
                  {
                    "Automatable": "no"
                  },
                  {
                    "Technical Impact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2024-09-29T15:50:07.552201Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2024-09-29T15:50:22.500Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "title": "CISA ADP Vulnrichment"
      }
    ],
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/nvme/host/core.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "4101af98ab573554c4225e328d506fec2a74bc54",
              "status": "affected",
              "version": "3af755a46881c32fecaecfdeaf3a8f0a869deca5",
              "versionType": "git"
            },
            {
              "lessThan": "a54a93d0e3599b05856971734e15418ac551a14c",
              "status": "affected",
              "version": "3af755a46881c32fecaecfdeaf3a8f0a869deca5",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/nvme/host/core.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.7"
            },
            {
              "lessThan": "6.7",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.10.*",
              "status": "unaffected",
              "version": "6.10.7",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.11",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.10.7",
                  "versionStartIncluding": "6.7",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.11",
                  "versionStartIncluding": "6.7",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nnvme: move stopping keep-alive into nvme_uninit_ctrl()\n\nCommit 4733b65d82bd (\"nvme: start keep-alive after admin queue setup\")\nmoves starting keep-alive from nvme_start_ctrl() into\nnvme_init_ctrl_finish(), but don\u0027t move stopping keep-alive into\nnvme_uninit_ctrl(), so keep-alive work can be started and keep pending\nafter failing to start controller, finally use-after-free is triggered if\nnvme host driver is unloaded.\n\nThis patch fixes kernel panic when running nvme/004 in case that connection\nfailure is triggered, by moving stopping keep-alive into nvme_uninit_ctrl().\n\nThis way is reasonable because keep-alive is now started in\nnvme_init_ctrl_finish()."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 9.8,
            "baseSeverity": "CRITICAL",
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:N - The affected code is the NVMe-over-Fabrics host driver (nvme-tcp/nvme-rdma), which is bound to the network stack and drives controller setup from responses supplied by a remote NVMe-oF target; a malicious, compromised, or spoofed target on the network fully controls whether setup fails after nvme_init_ctrl_finish() and when the keep-alive completion lands. NVMe/TCP has no mandatory authentication or encryption in typical deployments, so the attacker set extends to the network.\nAC:L - The remote target controls both sides of the interleaving \u2014 it chooses when to answer the keep-alive command and when to fail or stall the I/O-queue connect \u2014 and hosts retry connection setup automatically, giving unlimited attempts; the nvme-loop variant (loop.c:468-476, 573-618) has no race at all and leaks ka_work deterministically.\nPR:N - The attacker acts as the NVMe-oF target (or spoofs/MITMs the unauthenticated TCP connection) and needs no account, credentials, or privileges of any kind on the victim host. The vulnerable path runs during connection establishment, before any optional DH-HMAC-CHAP authentication is a factor.\nUI:N - Production NVMe-oF hosts connect automatically via nvmf-autoconnect at boot and via discovery-controller AEN-driven auto-connect (nvme-stas), so an attacker controlling the discovery/target endpoint can trigger repeated nvme_tcp_create_ctrl() attempts with no human action; the nvme-loop reset path (nvme_loop_reset_ctrl_work) is likewise entered automatically on controller error.\nS:U - The use-after-free occurs on kernel heap memory and is exploited within the kernel\u0027s own security authority; no VM, IOMMU, or sandbox boundary is crossed.\nC:H - The freed nvme_tcp_ctrl/nvme_loop_ctrl object can be reclaimed and re-sprayed by the attacker, and the stale timer/work dereference over that memory yields a controllable read and, once control flow is hijacked via work-\u003efunc, arbitrary kernel memory disclosure.\nI:H - The armed delayed_work lives inside the kfree()d controller, so timer expiry calls timer-\u003efunction and the worker calls work-\u003efunc from freed heap; reallocating that slab object gives the attacker a kernel function pointer under their control, i.e. arbitrary code execution and unrestricted modification of kernel state.\nA:H - Even without successful exploitation the stale delayed work fires on freed memory and reliably panics the kernel \u2014 this is exactly the reported crash from blktests nvme/004 \u2014 which is a complete denial of service on the storage host."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T11:37:40.579Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/4101af98ab573554c4225e328d506fec2a74bc54"
        },
        {
          "url": "https://git.kernel.org/stable/c/a54a93d0e3599b05856971734e15418ac551a14c"
        }
      ],
      "title": "nvme: move stopping keep-alive into nvme_uninit_ctrl()",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2024-45013",
    "datePublished": "2024-09-11T15:13:50.210Z",
    "dateReserved": "2024-08-21T05:34:56.681Z",
    "dateUpdated": "2026-08-05T11:37:40.579Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2024-45013",
      "date": "2026-09-28",
      "epss": "0.00379",
      "percentile": "0.2926"
    },
    "fkie_nvd": {
      "configurations": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "matchCriteriaId": "D2AFDFD1-D95A-4EB7-843B-5E7659518B67",
                  "versionEndExcluding": "6.10.7",
                  "versionStartIncluding": "6.7",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:6.11:rc1:*:*:*:*:*:*",
                  "matchCriteriaId": "8B3CE743-2126-47A3-8B7C-822B502CF119",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:6.11:rc2:*:*:*:*:*:*",
                  "matchCriteriaId": "4DEB27E7-30AA-45CC-8934-B89263EF3551",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:6.11:rc3:*:*:*:*:*:*",
                  "matchCriteriaId": "E0005AEF-856E-47EB-BFE4-90C46899394D",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:6.11:rc4:*:*:*:*:*:*",
                  "matchCriteriaId": "39889A68-6D34-47A6-82FC-CD0BF23D6754",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nnvme: move stopping keep-alive into nvme_uninit_ctrl()\n\nCommit 4733b65d82bd (\"nvme: start keep-alive after admin queue setup\")\nmoves starting keep-alive from nvme_start_ctrl() into\nnvme_init_ctrl_finish(), but don\u0027t move stopping keep-alive into\nnvme_uninit_ctrl(), so keep-alive work can be started and keep pending\nafter failing to start controller, finally use-after-free is triggered if\nnvme host driver is unloaded.\n\nThis patch fixes kernel panic when running nvme/004 in case that connection\nfailure is triggered, by moving stopping keep-alive into nvme_uninit_ctrl().\n\nThis way is reasonable because keep-alive is now started in\nnvme_init_ctrl_finish()."
        },
        {
          "lang": "es",
          "value": "En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: nvme: mover la detenci\u00f3n de keep-alive a nvme_uninit_ctrl() el commit 4733b65d82bd (\"nvme: iniciar keep-alive despu\u00e9s de la configuraci\u00f3n de la cola de administraci\u00f3n\") mueve el inicio de keep-alive de nvme_start_ctrl() a nvme_init_ctrl_finish(), pero no mueve la detenci\u00f3n de keep-alive a nvme_uninit_ctrl(), por lo que el trabajo de keep-alive se puede iniciar y mantener pendiente despu\u00e9s de un error al iniciar el controlador, finalmente, se activa el use-after-free si se descarga el controlador del host nvme. Este parche corrige el p\u00e1nico del kernel al ejecutar nvme/004 en caso de que se active una falla de conexi\u00f3n, moviendo la detenci\u00f3n de keep-alive a nvme_uninit_ctrl(). Esta forma es razonable porque keep-alive ahora se inicia en nvme_init_ctrl_finish()."
        }
      ],
      "id": "CVE-2024-45013",
      "lastModified": "2024-09-13T16:35:42.490",
      "metrics": {
        "cvssMetricV31": [
          {
            "cvssData": {
              "attackComplexity": "LOW",
              "attackVector": "LOCAL",
              "availabilityImpact": "HIGH",
              "baseScore": 5.5,
              "baseSeverity": "MEDIUM",
              "confidentialityImpact": "NONE",
              "integrityImpact": "NONE",
              "privilegesRequired": "LOW",
              "scope": "UNCHANGED",
              "userInteraction": "NONE",
              "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H",
              "version": "3.1"
            },
            "exploitabilityScore": 1.8,
            "impactScore": 3.6,
            "source": "nvd@nist.gov",
            "type": "Primary"
          }
        ]
      },
      "published": "2024-09-11T16:15:06.663",
      "references": [
        {
          "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
          "tags": [
            "Patch"
          ],
          "url": "https://git.kernel.org/stable/c/4101af98ab573554c4225e328d506fec2a74bc54"
        },
        {
          "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
          "tags": [
            "Patch"
          ],
          "url": "https://git.kernel.org/stable/c/a54a93d0e3599b05856971734e15418ac551a14c"
        }
      ],
      "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      "vulnStatus": "Analyzed",
      "weaknesses": [
        {
          "description": [
            {
              "lang": "en",
              "value": "CWE-416"
            }
          ],
          "source": "nvd@nist.gov",
          "type": "Primary"
        }
      ]
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "drivers/nvme/host/core.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "4101af98ab573554c4225e328d506fec2a74bc54",
                    "status": "affected",
                    "version": "3af755a46881c32fecaecfdeaf3a8f0a869deca5",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "a54a93d0e3599b05856971734e15418ac551a14c",
                    "status": "affected",
                    "version": "3af755a46881c32fecaecfdeaf3a8f0a869deca5",
                    "versionType": "git"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "drivers/nvme/host/core.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "status": "affected",
                    "version": "6.7"
                  },
                  {
                    "lessThan": "6.7",
                    "status": "unaffected",
                    "version": "0",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.10.*",
                    "status": "unaffected",
                    "version": "6.10.7",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "*",
                    "status": "unaffected",
                    "version": "6.11",
                    "versionType": "original_commit_for_fix"
                  }
                ]
              }
            ],
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
          }
        ],
        "configurations": [
          {
            "nodes": [
              {
                "cpeMatch": [
                  {
                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                    "matchCriteriaId": "D2AFDFD1-D95A-4EB7-843B-5E7659518B67",
                    "versionEndExcluding": "6.10.7",
                    "versionStartIncluding": "6.7",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:o:linux:linux_kernel:6.11:rc1:*:*:*:*:*:*",
                    "matchCriteriaId": "8B3CE743-2126-47A3-8B7C-822B502CF119",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:o:linux:linux_kernel:6.11:rc2:*:*:*:*:*:*",
                    "matchCriteriaId": "4DEB27E7-30AA-45CC-8934-B89263EF3551",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:o:linux:linux_kernel:6.11:rc3:*:*:*:*:*:*",
                    "matchCriteriaId": "E0005AEF-856E-47EB-BFE4-90C46899394D",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:o:linux:linux_kernel:6.11:rc4:*:*:*:*:*:*",
                    "matchCriteriaId": "39889A68-6D34-47A6-82FC-CD0BF23D6754",
                    "vulnerable": true
                  }
                ],
                "negate": false,
                "operator": "OR"
              }
            ]
          }
        ],
        "cveTags": [],
        "descriptions": [
          {
            "lang": "en",
            "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nnvme: move stopping keep-alive into nvme_uninit_ctrl()\n\nCommit 4733b65d82bd (\"nvme: start keep-alive after admin queue setup\")\nmoves starting keep-alive from nvme_start_ctrl() into\nnvme_init_ctrl_finish(), but don\u0027t move stopping keep-alive into\nnvme_uninit_ctrl(), so keep-alive work can be started and keep pending\nafter failing to start controller, finally use-after-free is triggered if\nnvme host driver is unloaded.\n\nThis patch fixes kernel panic when running nvme/004 in case that connection\nfailure is triggered, by moving stopping keep-alive into nvme_uninit_ctrl().\n\nThis way is reasonable because keep-alive is now started in\nnvme_init_ctrl_finish()."
          },
          {
            "lang": "es",
            "value": "En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: nvme: mover la detenci\u00f3n de keep-alive a nvme_uninit_ctrl() el commit 4733b65d82bd (\"nvme: iniciar keep-alive despu\u00e9s de la configuraci\u00f3n de la cola de administraci\u00f3n\") mueve el inicio de keep-alive de nvme_start_ctrl() a nvme_init_ctrl_finish(), pero no mueve la detenci\u00f3n de keep-alive a nvme_uninit_ctrl(), por lo que el trabajo de keep-alive se puede iniciar y mantener pendiente despu\u00e9s de un error al iniciar el controlador, finalmente, se activa el use-after-free si se descarga el controlador del host nvme. Este parche corrige el p\u00e1nico del kernel al ejecutar nvme/004 en caso de que se active una falla de conexi\u00f3n, moviendo la detenci\u00f3n de keep-alive a nvme_uninit_ctrl(). Esta forma es razonable porque keep-alive ahora se inicia en nvme_init_ctrl_finish()."
          }
        ],
        "id": "CVE-2024-45013",
        "lastModified": "2026-08-04T11:20:10.173",
        "metrics": {
          "cvssMetricV31": [
            {
              "cvssData": {
                "attackComplexity": "LOW",
                "attackVector": "NETWORK",
                "availabilityImpact": "HIGH",
                "baseScore": 9.8,
                "baseSeverity": "CRITICAL",
                "confidentialityImpact": "HIGH",
                "integrityImpact": "HIGH",
                "privilegesRequired": "NONE",
                "scope": "UNCHANGED",
                "userInteraction": "NONE",
                "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
                "version": "3.1"
              },
              "exploitabilityScore": 3.9,
              "impactScore": 5.9,
              "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
              "type": "Secondary"
            },
            {
              "cvssData": {
                "attackComplexity": "LOW",
                "attackVector": "LOCAL",
                "availabilityImpact": "HIGH",
                "baseScore": 5.5,
                "baseSeverity": "MEDIUM",
                "confidentialityImpact": "NONE",
                "integrityImpact": "NONE",
                "privilegesRequired": "LOW",
                "scope": "UNCHANGED",
                "userInteraction": "NONE",
                "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H",
                "version": "3.1"
              },
              "exploitabilityScore": 1.8,
              "impactScore": 3.6,
              "source": "nvd@nist.gov",
              "type": "Primary"
            }
          ],
          "ssvcV203": [
            {
              "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
              "ssvcData": {
                "id": "CVE-2024-45013",
                "options": [
                  {
                    "exploitation": "none"
                  },
                  {
                    "automatable": "no"
                  },
                  {
                    "technicalImpact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2024-09-29T15:50:07.552201Z",
                "version": "2.0.3"
              }
            }
          ]
        },
        "published": "2024-09-11T16:15:06.663",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "tags": [
              "Patch"
            ],
            "url": "https://git.kernel.org/stable/c/4101af98ab573554c4225e328d506fec2a74bc54"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "tags": [
              "Patch"
            ],
            "url": "https://git.kernel.org/stable/c/a54a93d0e3599b05856971734e15418ac551a14c"
          }
        ],
        "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "vulnStatus": "Modified",
        "weaknesses": [
          {
            "description": [
              {
                "lang": "en",
                "value": "CWE-416"
              }
            ],
            "source": "nvd@nist.gov",
            "type": "Primary"
          }
        ]
      }
    },
    "redhat_vex": {
      "aggregate_severity": "Moderate",
      "current_release_date": "2026-09-13T08:46:20+00:00",
      "cve": "CVE-2024-45013",
      "id": "CVE-2024-45013",
      "initial_release_date": "2024-09-11T00:00:00+00:00",
      "product_status:known_affected": "136",
      "product_status:known_not_affected": "62",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: nvme: move stopping keep-alive into nvme_uninit_ctrl()",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2024/cve-2024-45013.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2026-09-12T16:58:59Z",
      "cve": "CVE-2024-45013",
      "id": "CVE-2024-45013",
      "initial_release_date": "2024-09-12T02:51:33Z",
      "product_status:known_affected": "321",
      "product_status:known_not_affected": "282",
      "product_status:recommended": "763",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2024-45013",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2024-45013.json",
      "version": "68"
    },
    "vulnrichment": {
      "containers": {
        "adp": [
          {
            "metrics": [
              {
                "other": {
                  "content": {
                    "id": "CVE-2024-45013",
                    "options": [
                      {
                        "Exploitation": "none"
                      },
                      {
                        "Automatable": "no"
                      },
                      {
                        "Technical Impact": "partial"
                      }
                    ],
                    "role": "CISA Coordinator",
                    "timestamp": "2024-09-29T15:50:07.552201Z",
                    "version": "2.0.3"
                  },
                  "type": "ssvc"
                }
              }
            ],
            "providerMetadata": {
              "dateUpdated": "2024-09-29T15:50:11.764Z",
              "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
              "shortName": "CISA-ADP"
            },
            "title": "CISA ADP Vulnrichment"
          }
        ],
        "cna": {
          "affected": [
            {
              "defaultStatus": "unaffected",
              "product": "Linux",
              "programFiles": [
                "drivers/nvme/host/core.c"
              ],
              "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
              "vendor": "Linux",
              "versions": [
                {
                  "lessThan": "4101af98ab573554c4225e328d506fec2a74bc54",
                  "status": "affected",
                  "version": "3af755a46881c32fecaecfdeaf3a8f0a869deca5",
                  "versionType": "git"
                },
                {
                  "lessThan": "a54a93d0e3599b05856971734e15418ac551a14c",
                  "status": "affected",
                  "version": "3af755a46881c32fecaecfdeaf3a8f0a869deca5",
                  "versionType": "git"
                }
              ]
            },
            {
              "defaultStatus": "affected",
              "product": "Linux",
              "programFiles": [
                "drivers/nvme/host/core.c"
              ],
              "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
              "vendor": "Linux",
              "versions": [
                {
                  "status": "affected",
                  "version": "6.7"
                },
                {
                  "lessThan": "6.7",
                  "status": "unaffected",
                  "version": "0",
                  "versionType": "semver"
                },
                {
                  "lessThanOrEqual": "6.10.*",
                  "status": "unaffected",
                  "version": "6.10.7",
                  "versionType": "semver"
                },
                {
                  "lessThanOrEqual": "*",
                  "status": "unaffected",
                  "version": "6.11",
                  "versionType": "original_commit_for_fix"
                }
              ]
            }
          ],
          "cpeApplicability": [
            {
              "nodes": [
                {
                  "cpeMatch": [
                    {
                      "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                      "versionEndExcluding": "6.10.7",
                      "versionStartIncluding": "6.7",
                      "vulnerable": true
                    },
                    {
                      "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                      "versionEndExcluding": "6.11",
                      "versionStartIncluding": "6.7",
                      "vulnerable": true
                    }
                  ],
                  "negate": false,
                  "operator": "OR"
                }
              ]
            }
          ],
          "descriptions": [
            {
              "lang": "en",
              "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nnvme: move stopping keep-alive into nvme_uninit_ctrl()\n\nCommit 4733b65d82bd (\"nvme: start keep-alive after admin queue setup\")\nmoves starting keep-alive from nvme_start_ctrl() into\nnvme_init_ctrl_finish(), but don\u0027t move stopping keep-alive into\nnvme_uninit_ctrl(), so keep-alive work can be started and keep pending\nafter failing to start controller, finally use-after-free is triggered if\nnvme host driver is unloaded.\n\nThis patch fixes kernel panic when running nvme/004 in case that connection\nfailure is triggered, by moving stopping keep-alive into nvme_uninit_ctrl().\n\nThis way is reasonable because keep-alive is now started in\nnvme_init_ctrl_finish()."
            }
          ],
          "metrics": [
            {
              "cvssV3_1": {
                "baseScore": 9.8,
                "baseSeverity": "CRITICAL",
                "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
                "version": "3.1"
              },
              "scenarios": [
                {
                  "lang": "en",
                  "value": "AV:N - The affected code is the NVMe-over-Fabrics host driver (nvme-tcp/nvme-rdma), which is bound to the network stack and drives controller setup from responses supplied by a remote NVMe-oF target; a malicious, compromised, or spoofed target on the network fully controls whether setup fails after nvme_init_ctrl_finish() and when the keep-alive completion lands. NVMe/TCP has no mandatory authentication or encryption in typical deployments, so the attacker set extends to the network.\nAC:L - The remote target controls both sides of the interleaving \u2014 it chooses when to answer the keep-alive command and when to fail or stall the I/O-queue connect \u2014 and hosts retry connection setup automatically, giving unlimited attempts; the nvme-loop variant (loop.c:468-476, 573-618) has no race at all and leaks ka_work deterministically.\nPR:N - The attacker acts as the NVMe-oF target (or spoofs/MITMs the unauthenticated TCP connection) and needs no account, credentials, or privileges of any kind on the victim host. The vulnerable path runs during connection establishment, before any optional DH-HMAC-CHAP authentication is a factor.\nUI:N - Production NVMe-oF hosts connect automatically via nvmf-autoconnect at boot and via discovery-controller AEN-driven auto-connect (nvme-stas), so an attacker controlling the discovery/target endpoint can trigger repeated nvme_tcp_create_ctrl() attempts with no human action; the nvme-loop reset path (nvme_loop_reset_ctrl_work) is likewise entered automatically on controller error.\nS:U - The use-after-free occurs on kernel heap memory and is exploited within the kernel\u0027s own security authority; no VM, IOMMU, or sandbox boundary is crossed.\nC:H - The freed nvme_tcp_ctrl/nvme_loop_ctrl object can be reclaimed and re-sprayed by the attacker, and the stale timer/work dereference over that memory yields a controllable read and, once control flow is hijacked via work-\u003efunc, arbitrary kernel memory disclosure.\nI:H - The armed delayed_work lives inside the kfree()d controller, so timer expiry calls timer-\u003efunction and the worker calls work-\u003efunc from freed heap; reallocating that slab object gives the attacker a kernel function pointer under their control, i.e. arbitrary code execution and unrestricted modification of kernel state.\nA:H - Even without successful exploitation the stale delayed work fires on freed memory and reliably panics the kernel \u2014 this is exactly the reported crash from blktests nvme/004 \u2014 which is a complete denial of service on the storage host."
                }
              ]
            }
          ],
          "providerMetadata": {
            "dateUpdated": "2026-08-05T11:37:40.579Z",
            "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "shortName": "Linux"
          },
          "references": [
            {
              "url": "https://git.kernel.org/stable/c/4101af98ab573554c4225e328d506fec2a74bc54"
            },
            {
              "url": "https://git.kernel.org/stable/c/a54a93d0e3599b05856971734e15418ac551a14c"
            }
          ],
          "title": "nvme: move stopping keep-alive into nvme_uninit_ctrl()",
          "x_generator": {
            "engine": "bippy-1.2.0"
          }
        }
      },
      "cveMetadata": {
        "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "assignerShortName": "Linux",
        "cveId": "CVE-2024-45013",
        "datePublished": "2024-09-11T15:13:50.210Z",
        "dateReserved": "2024-08-21T05:34:56.681Z",
        "dateUpdated": "2026-08-05T11:37:40.579Z",
        "state": "PUBLISHED"
      },
      "dataType": "CVE_RECORD",
      "dataVersion": "5.2"
    }
  }
}



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…

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…