CVE-2024-57932 (GCVE-0-2024-57932)

Vulnerability from cvelistv5 – Published: 2025-01-21 12:01 – Updated: 2026-08-05 11:46
VLAI
Title
gve: guard XDP xmit NDO on existence of xdp queues
Summary
In the Linux kernel, the following vulnerability has been resolved: gve: guard XDP xmit NDO on existence of xdp queues In GVE, dedicated XDP queues only exist when an XDP program is installed and the interface is up. As such, the NDO XDP XMIT callback should return early if either of these conditions are false. In the case of no loaded XDP program, priv->num_xdp_queues=0 which can cause a divide-by-zero error, and in the case of interface down, num_xdp_queues remains untouched to persist XDP queue count for the next interface up, but the TX pointer itself would be NULL. The XDP xmit callback also needs to synchronize with a device transitioning from open to close. This synchronization will happen via the GVE_PRIV_FLAGS_NAPI_ENABLED bit along with a synchronize_net() call, which waits for any RCU critical sections at call-time to complete.
Assigner
Impacted products
Vendor Product Version
Linux Linux Affected: 39a7f4aa3e4a7947614cf1d5c27abba3300adb1e , < cbe9eb2c39d09f3c8574febcfa39d8c09d0c7cb5 (git)
Affected: 39a7f4aa3e4a7947614cf1d5c27abba3300adb1e , < 35f44eed5828cf1bc7e760d1993ed8549ba41c7b (git)
Affected: 39a7f4aa3e4a7947614cf1d5c27abba3300adb1e , < ff7c2dea9dd1a436fc79d6273adffdcc4a7ffea3 (git)
Create a notification for this product.
Linux Linux Affected: 6.4
Unaffected: 0 , < 6.4 (semver)
Unaffected: 6.6.70 , ≤ 6.6.* (semver)
Unaffected: 6.12.9 , ≤ 6.12.* (semver)
Unaffected: 6.13 , ≤ * (original_commit_for_fix)
Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/net/ethernet/google/gve/gve_main.c",
            "drivers/net/ethernet/google/gve/gve_tx.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "cbe9eb2c39d09f3c8574febcfa39d8c09d0c7cb5",
              "status": "affected",
              "version": "39a7f4aa3e4a7947614cf1d5c27abba3300adb1e",
              "versionType": "git"
            },
            {
              "lessThan": "35f44eed5828cf1bc7e760d1993ed8549ba41c7b",
              "status": "affected",
              "version": "39a7f4aa3e4a7947614cf1d5c27abba3300adb1e",
              "versionType": "git"
            },
            {
              "lessThan": "ff7c2dea9dd1a436fc79d6273adffdcc4a7ffea3",
              "status": "affected",
              "version": "39a7f4aa3e4a7947614cf1d5c27abba3300adb1e",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/net/ethernet/google/gve/gve_main.c",
            "drivers/net/ethernet/google/gve/gve_tx.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.4"
            },
            {
              "lessThan": "6.4",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.70",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.9",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.13",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.70",
                  "versionStartIncluding": "6.4",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.9",
                  "versionStartIncluding": "6.4",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.13",
                  "versionStartIncluding": "6.4",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\ngve: guard XDP xmit NDO on existence of xdp queues\n\nIn GVE, dedicated XDP queues only exist when an XDP program is installed\nand the interface is up. As such, the NDO XDP XMIT callback should\nreturn early if either of these conditions are false.\n\nIn the case of no loaded XDP program, priv-\u003enum_xdp_queues=0 which can\ncause a divide-by-zero error, and in the case of interface down,\nnum_xdp_queues remains untouched to persist XDP queue count for the next\ninterface up, but the TX pointer itself would be NULL.\n\nThe XDP xmit callback also needs to synchronize with a device\ntransitioning from open to close. This synchronization will happen via\nthe GVE_PRIV_FLAGS_NAPI_ENABLED bit along with a synchronize_net() call,\nwhich waits for any RCU critical sections at call-time to complete."
        }
      ],
      "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 vulnerable NDO is reached purely from the receive softirq path \u2014 a remote frame arrives on any NIC, the XDP program calls bpf_redirect_map() to the gve interface, and xdp_do_redirect()/bq_xmit_all() invokes gve_xdp_xmit(); no local access is needed by the attacker, only network traffic sent to the host.\nAC:L - The divide-by-zero variant is fully deterministic and needs no race \u2014 gve advertises NETDEV_XDP_ACT_NDO_XMIT at probe time regardless of whether an XDP program is loaded, so the first redirected packet crashes the host; for the close/unload race the attacker drives one side by saturating the redirect path and can retry indefinitely.\nPR:N - The trigger is an unauthenticated packet on the wire; the attacker needs no account, credentials, or any privilege on the target \u2014 the XDP redirect configuration is a property of the victim host, not something the attacker must possess.\nUI:N - No victim action is required; the crash or use-after-free happens automatically in NAPI context when the redirected frame is processed.\nS:U - The corruption and crash are confined to the host kernel\u0027s own memory and security authority, with no crossing into a hypervisor, IOMMU, or other trust boundary.\nC:H - The unsynchronized close/XDP-unload race (the reason the fix adds synchronize_net()) leaves gve_xdp_xmit writing to and reading from a freed gve_tx_ring, freed tx-\u003edesc/q_resources DMA memory, and a freed queue-page-list FIFO; such a use-after-free on reallocated kernel memory yields a disclosure primitive.\nI:H - The use-after-free window lets attacker-controlled packet bytes be memcpy\u0027d into freed, reallocatable QPL pages (memcpy(tx-\u003etx_fifo.base + iov_offset, data, len)) along with descriptor and doorbell writes into freed DMA-coherent memory \u2014 an attacker-influenced write into arbitrary reused kernel allocations.\nA:H - Both the smp_processor_id() % 0 divide-by-zero and the priv-\u003etx == NULL dereference occur in softirq context, where oops_end() escalates to panic(\"Fatal exception in interrupt\"), producing an immediate whole-system crash that a remote attacker can trigger repeatedly."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T11:46:58.733Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/cbe9eb2c39d09f3c8574febcfa39d8c09d0c7cb5"
        },
        {
          "url": "https://git.kernel.org/stable/c/35f44eed5828cf1bc7e760d1993ed8549ba41c7b"
        },
        {
          "url": "https://git.kernel.org/stable/c/ff7c2dea9dd1a436fc79d6273adffdcc4a7ffea3"
        }
      ],
      "title": "gve: guard XDP xmit NDO on existence of xdp queues",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2024-57932",
    "datePublished": "2025-01-21T12:01:29.212Z",
    "dateReserved": "2025-01-19T11:50:08.377Z",
    "dateUpdated": "2026-08-05T11:46:58.733Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2024-57932",
      "date": "2026-08-06",
      "epss": "0.00443",
      "percentile": "0.36393"
    },
    "nvd": "{\"cve\":{\"id\":\"CVE-2024-57932\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2025-01-21T12:15:26.837\",\"lastModified\":\"2026-08-04T11:22:32.273\",\"vulnStatus\":\"Modified\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\ngve: guard XDP xmit NDO on existence of xdp queues\\n\\nIn GVE, dedicated XDP queues only exist when an XDP program is installed\\nand the interface is up. As such, the NDO XDP XMIT callback should\\nreturn early if either of these conditions are false.\\n\\nIn the case of no loaded XDP program, priv-\u003enum_xdp_queues=0 which can\\ncause a divide-by-zero error, and in the case of interface down,\\nnum_xdp_queues remains untouched to persist XDP queue count for the next\\ninterface up, but the TX pointer itself would be NULL.\\n\\nThe XDP xmit callback also needs to synchronize with a device\\ntransitioning from open to close. This synchronization will happen via\\nthe GVE_PRIV_FLAGS_NAPI_ENABLED bit along with a synchronize_net() call,\\nwhich waits for any RCU critical sections at call-time to complete.\"},{\"lang\":\"es\",\"value\":\"En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: gve: guard XDP xmit NDO on existing xdp queues En GVE, las colas XDP dedicadas solo existen cuando se instala un programa XDP y la interfaz est\u00e1 activa. Como tal, la devoluci\u00f3n de llamada NDO XDP XMIT debe regresar temprano si alguna de estas condiciones es falsa. En el caso de que no haya un programa XDP cargado, priv-\u0026gt;num_xdp_queues=0 que puede causar un error de divisi\u00f3n por cero, y en el caso de que la interfaz est\u00e9 inactiva, num_xdp_queues permanece intacto para persistir el conteo de colas XDP para la siguiente interfaz activa, pero el puntero TX en s\u00ed ser\u00eda NULL. La devoluci\u00f3n de llamada XDP xmit tambi\u00e9n necesita sincronizarse con un dispositivo que est\u00e9 pasando de abierto a cerrado. Esta sincronizaci\u00f3n ocurrir\u00e1 a trav\u00e9s del bit GVE_PRIV_FLAGS_NAPI_ENABLED junto con una llamadasynchronous_net(), que espera a que se completen las secciones cr\u00edticas de RCU en el momento de la llamada.\"}],\"affected\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"affectedData\":[{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"unaffected\",\"programFiles\":[\"drivers/net/ethernet/google/gve/gve_main.c\",\"drivers/net/ethernet/google/gve/gve_tx.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"39a7f4aa3e4a7947614cf1d5c27abba3300adb1e\",\"lessThan\":\"cbe9eb2c39d09f3c8574febcfa39d8c09d0c7cb5\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"39a7f4aa3e4a7947614cf1d5c27abba3300adb1e\",\"lessThan\":\"35f44eed5828cf1bc7e760d1993ed8549ba41c7b\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"39a7f4aa3e4a7947614cf1d5c27abba3300adb1e\",\"lessThan\":\"ff7c2dea9dd1a436fc79d6273adffdcc4a7ffea3\",\"versionType\":\"git\",\"status\":\"affected\"}]},{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"affected\",\"programFiles\":[\"drivers/net/ethernet/google/gve/gve_main.c\",\"drivers/net/ethernet/google/gve/gve_tx.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"6.4\",\"status\":\"affected\"},{\"version\":\"0\",\"lessThan\":\"6.4\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.6.70\",\"lessThanOrEqual\":\"6.6.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.12.9\",\"lessThanOrEqual\":\"6.12.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.13\",\"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:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H\",\"baseScore\":9.8,\"baseSeverity\":\"CRITICAL\",\"attackVector\":\"NETWORK\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"NONE\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"HIGH\",\"integrityImpact\":\"HIGH\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":3.9,\"impactScore\":5.9},{\"source\":\"nvd@nist.gov\",\"type\":\"Primary\",\"cvssData\":{\"version\":\"3.1\",\"vectorString\":\"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H\",\"baseScore\":5.5,\"baseSeverity\":\"MEDIUM\",\"attackVector\":\"LOCAL\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"LOW\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"NONE\",\"integrityImpact\":\"NONE\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":1.8,\"impactScore\":3.6}]},\"weaknesses\":[{\"source\":\"nvd@nist.gov\",\"type\":\"Primary\",\"description\":[{\"lang\":\"en\",\"value\":\"CWE-369\"}]}],\"configurations\":[{\"nodes\":[{\"operator\":\"OR\",\"negate\":false,\"cpeMatch\":[{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"6.4\",\"versionEndExcluding\":\"6.6.70\",\"matchCriteriaId\":\"515082D3-9A59-4AD1-9D63-8CA1BA25CE47\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"6.7\",\"versionEndExcluding\":\"6.12.9\",\"matchCriteriaId\":\"1D13AF97-FFED-4B68-906D-CFE38D0B88DD\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:6.13:rc1:*:*:*:*:*:*\",\"matchCriteriaId\":\"62567B3C-6CEE-46D0-BC2E-B3717FBF7D13\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:6.13:rc2:*:*:*:*:*:*\",\"matchCriteriaId\":\"5A073481-106D-4B15-B4C7-FB0213B8E1D4\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:6.13:rc3:*:*:*:*:*:*\",\"matchCriteriaId\":\"DE491969-75AE-4A6B-9A58-8FC5AF98798F\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:6.13:rc4:*:*:*:*:*:*\",\"matchCriteriaId\":\"93C0660D-7FB8-4FBA-892A-B064BA71E49E\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:6.13:rc5:*:*:*:*:*:*\",\"matchCriteriaId\":\"034C36A6-C481-41F3-AE9A-D116E5BE6895\"}]}]}],\"references\":[{\"url\":\"https://git.kernel.org/stable/c/35f44eed5828cf1bc7e760d1993ed8549ba41c7b\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/cbe9eb2c39d09f3c8574febcfa39d8c09d0c7cb5\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/ff7c2dea9dd1a436fc79d6273adffdcc4a7ffea3\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]}]}}",
    "redhat_vex": {
      "aggregate_severity": "Moderate",
      "current_release_date": "2026-08-04T14:03:21+00:00",
      "cve": "CVE-2024-57932",
      "id": "CVE-2024-57932",
      "initial_release_date": "2024-01-01T00:00:00+00:00",
      "product_status:known_affected": "274",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: gve: guard XDP xmit NDO on existence of xdp queues",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2024/cve-2024-57932.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2026-07-25T01:13:34Z",
      "cve": "CVE-2024-57932",
      "id": "CVE-2024-57932",
      "initial_release_date": "2025-01-22T03:48:59Z",
      "product_status:known_affected": "536",
      "product_status:known_not_affected": "156",
      "product_status:recommended": "389",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2024-57932",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2024-57932.json",
      "version": "66"
    }
  }
}



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…