CVE-2024-42071 (GCVE-0-2024-42071)

Vulnerability from cvelistv5 – Published: 2024-07-29 15:52 – Updated: 2026-08-05 11:35
VLAI
Title
ionic: use dev_consume_skb_any outside of napi
Summary
In the Linux kernel, the following vulnerability has been resolved: ionic: use dev_consume_skb_any outside of napi If we're not in a NAPI softirq context, we need to be careful about how we call napi_consume_skb(), specifically we need to call it with budget==0 to signal to it that we're not in a safe context. This was found while running some configuration stress testing of traffic and a change queue config loop running, and this curious note popped out: [ 4371.402645] BUG: using smp_processor_id() in preemptible [00000000] code: ethtool/20545 [ 4371.402897] caller is napi_skb_cache_put+0x16/0x80 [ 4371.403120] CPU: 25 PID: 20545 Comm: ethtool Kdump: loaded Tainted: G OE 6.10.0-rc3-netnext+ #8 [ 4371.403302] Hardware name: HPE ProLiant DL360 Gen10/ProLiant DL360 Gen10, BIOS U32 01/23/2021 [ 4371.403460] Call Trace: [ 4371.403613] <TASK> [ 4371.403758] dump_stack_lvl+0x4f/0x70 [ 4371.403904] check_preemption_disabled+0xc1/0xe0 [ 4371.404051] napi_skb_cache_put+0x16/0x80 [ 4371.404199] ionic_tx_clean+0x18a/0x240 [ionic] [ 4371.404354] ionic_tx_cq_service+0xc4/0x200 [ionic] [ 4371.404505] ionic_tx_flush+0x15/0x70 [ionic] [ 4371.404653] ? ionic_lif_qcq_deinit.isra.23+0x5b/0x70 [ionic] [ 4371.404805] ionic_txrx_deinit+0x71/0x190 [ionic] [ 4371.404956] ionic_reconfigure_queues+0x5f5/0xff0 [ionic] [ 4371.405111] ionic_set_ringparam+0x2e8/0x3e0 [ionic] [ 4371.405265] ethnl_set_rings+0x1f1/0x300 [ 4371.405418] ethnl_default_set_doit+0xbb/0x160 [ 4371.405571] genl_family_rcv_msg_doit+0xff/0x130 [...] I found that ionic_tx_clean() calls napi_consume_skb() which calls napi_skb_cache_put(), but before that last call is the note /* Zero budget indicate non-NAPI context called us, like netpoll */ and DEBUG_NET_WARN_ON_ONCE(!in_softirq()); Those are pretty big hints that we're doing it wrong. We can pass a context hint down through the calls to let ionic_tx_clean() know what we're doing so it can call napi_consume_skb() correctly.
SSVC
Exploitation: none Automatable: no Technical Impact: partial
CISA Coordinator · CISA-ADP (v2.0.3)
Decision recorded 2024-09-10 16:19 UTC
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 386e69865311044b576ff536c99c6ee9cc98a228 , < ef7646ed49fff962e97b276f4ab91327a67eeb5a (git)
Affected: 386e69865311044b576ff536c99c6ee9cc98a228 , < 84b767f9e34fdb143c09e66a2a20722fc2921821 (git)
guessed Create a notification for this product.
Linux Linux Affected: 6.9
Unaffected: 0 , < 6.9 (semver)
Unaffected: 6.9.8 , ≤ 6.9.* (semver)
Unaffected: 6.10 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "adp": [
      {
        "providerMetadata": {
          "dateUpdated": "2024-08-02T04:54:32.247Z",
          "orgId": "af854a3a-2127-422b-91ae-364da2661108",
          "shortName": "CVE"
        },
        "references": [
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/ef7646ed49fff962e97b276f4ab91327a67eeb5a"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/84b767f9e34fdb143c09e66a2a20722fc2921821"
          }
        ],
        "title": "CVE Program Container"
      },
      {
        "metrics": [
          {
            "other": {
              "content": {
                "id": "CVE-2024-42071",
                "options": [
                  {
                    "Exploitation": "none"
                  },
                  {
                    "Automatable": "no"
                  },
                  {
                    "Technical Impact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2024-09-10T16:19:43.105233Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2024-09-11T17:33:58.060Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "title": "CISA ADP Vulnrichment"
      }
    ],
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/net/ethernet/pensando/ionic/ionic_dev.h",
            "drivers/net/ethernet/pensando/ionic/ionic_lif.c",
            "drivers/net/ethernet/pensando/ionic/ionic_txrx.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "ef7646ed49fff962e97b276f4ab91327a67eeb5a",
              "status": "affected",
              "version": "386e69865311044b576ff536c99c6ee9cc98a228",
              "versionType": "git"
            },
            {
              "lessThan": "84b767f9e34fdb143c09e66a2a20722fc2921821",
              "status": "affected",
              "version": "386e69865311044b576ff536c99c6ee9cc98a228",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/net/ethernet/pensando/ionic/ionic_dev.h",
            "drivers/net/ethernet/pensando/ionic/ionic_lif.c",
            "drivers/net/ethernet/pensando/ionic/ionic_txrx.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.9"
            },
            {
              "lessThan": "6.9",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.9.*",
              "status": "unaffected",
              "version": "6.9.8",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.10",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.9.8",
                  "versionStartIncluding": "6.9",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.10",
                  "versionStartIncluding": "6.9",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nionic: use dev_consume_skb_any outside of napi\n\nIf we\u0027re not in a NAPI softirq context, we need to be careful\nabout how we call napi_consume_skb(), specifically we need to\ncall it with budget==0 to signal to it that we\u0027re not in a\nsafe context.\n\nThis was found while running some configuration stress testing\nof traffic and a change queue config loop running, and this\ncurious note popped out:\n\n[ 4371.402645] BUG: using smp_processor_id() in preemptible [00000000] code: ethtool/20545\n[ 4371.402897] caller is napi_skb_cache_put+0x16/0x80\n[ 4371.403120] CPU: 25 PID: 20545 Comm: ethtool Kdump: loaded Tainted: G           OE      6.10.0-rc3-netnext+ #8\n[ 4371.403302] Hardware name: HPE ProLiant DL360 Gen10/ProLiant DL360 Gen10, BIOS U32 01/23/2021\n[ 4371.403460] Call Trace:\n[ 4371.403613]  \u003cTASK\u003e\n[ 4371.403758]  dump_stack_lvl+0x4f/0x70\n[ 4371.403904]  check_preemption_disabled+0xc1/0xe0\n[ 4371.404051]  napi_skb_cache_put+0x16/0x80\n[ 4371.404199]  ionic_tx_clean+0x18a/0x240 [ionic]\n[ 4371.404354]  ionic_tx_cq_service+0xc4/0x200 [ionic]\n[ 4371.404505]  ionic_tx_flush+0x15/0x70 [ionic]\n[ 4371.404653]  ? ionic_lif_qcq_deinit.isra.23+0x5b/0x70 [ionic]\n[ 4371.404805]  ionic_txrx_deinit+0x71/0x190 [ionic]\n[ 4371.404956]  ionic_reconfigure_queues+0x5f5/0xff0 [ionic]\n[ 4371.405111]  ionic_set_ringparam+0x2e8/0x3e0 [ionic]\n[ 4371.405265]  ethnl_set_rings+0x1f1/0x300\n[ 4371.405418]  ethnl_default_set_doit+0xbb/0x160\n[ 4371.405571]  genl_family_rcv_msg_doit+0xff/0x130\n\t[...]\n\nI found that ionic_tx_clean() calls napi_consume_skb() which calls\nnapi_skb_cache_put(), but before that last call is the note\n    /* Zero budget indicate non-NAPI context called us, like netpoll */\nand\n    DEBUG_NET_WARN_ON_ONCE(!in_softirq());\n\nThose are pretty big hints that we\u0027re doing it wrong.  We can pass a\ncontext hint down through the calls to let ionic_tx_clean() know what\nwe\u0027re doing so it can call napi_consume_skb() correctly."
        }
      ],
      "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 path is only reached through local administrative netdev operations \u2014 ethtool netlink/ioctl (`ETHTOOL_MSG_RINGS_SET`, `ETHTOOL_MSG_CHANNELS_SET`), `ip link set down`, or MTU/XDP changes \u2014 all issued from the local system. Remote packets cannot invoke `ionic_txrx_deinit()`.\nAC:L - The attacker controls both sides of the race: they generate the TX traffic that leaves skbs pending on the queue and the softirq load on the CPU, and they issue the reconfiguration/down operations in a loop (exactly the \"traffic plus queue-config loop\" stress the reporter used). The path can be retriggered indefinitely with no attacker-uncontrollable precondition.\nPR:L - The gates are `GENL_UNS_ADMIN_PERM` / `ns_capable(net-\u003euser_ns, CAP_NET_ADMIN)`, which are namespace-scoped rather than requiring real root \u2014 an unprivileged user with CAP_NET_ADMIN in a user namespace owning a netns that holds an ionic SR-IOV VF (a common SmartNIC container/Kubernetes deployment) can reach it. Per kernel scoring guidance, namespace-reachable CAP_NET_ADMIN is Low, not High.\nUI:N - The attacker performs the queue reconfiguration and traffic generation entirely on their own; no action by any other user or administrator is required.\nS:U - The corruption is confined to kernel per-CPU allocator state within the same security authority; no VM, IOMMU, or sandbox boundary is crossed.\nC:H - Corrupting the unlocked per-CPU `napi_alloc_cache` lets a stale or duplicated `sk_buff` pointer be reissued by `napi_skb_cache_get()`, producing a use-after-free on an object whose contents are attacker-controlled network data \u2014 a reliable kernel memory disclosure primitive.\nI:H - The same race yields either a double-free/UAF of `sk_buff` objects or, when the `skb_count == NAPI_SKB_CACHE_SIZE` equality check is stepped over, out-of-bounds pointer writes past the end of `skb_cache[]` into adjacent per-CPU data \u2014 both are established arbitrary-write/control-flow-hijack primitives.\nA:H - Handing an already-freed or garbage skb pointer back into the network stack, or freeing pointers via `kmem_cache_free_bulk()` from a corrupted array, reliably oopses or panics the kernel; with `panic_on_warn` the accompanying `DEBUG_NET_WARN_ON_ONCE(!in_softirq())` splat alone halts the machine."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T11:35:29.256Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/ef7646ed49fff962e97b276f4ab91327a67eeb5a"
        },
        {
          "url": "https://git.kernel.org/stable/c/84b767f9e34fdb143c09e66a2a20722fc2921821"
        }
      ],
      "title": "ionic: use dev_consume_skb_any outside of napi",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2024-42071",
    "datePublished": "2024-07-29T15:52:34.714Z",
    "dateReserved": "2024-07-29T15:50:41.168Z",
    "dateUpdated": "2026-08-05T11:35:29.256Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2024-42071",
      "date": "2026-09-27",
      "epss": "0.00216",
      "percentile": "0.10825"
    },
    "fkie_nvd": {
      "configurations": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "matchCriteriaId": "18FE1EAE-C36C-49FC-A5E0-0A661CDC561E",
                  "versionEndExcluding": "6.9",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "matchCriteriaId": "1557DCF8-46D3-4910-8B19-5C77412AB681",
                  "versionEndExcluding": "6.9.8",
                  "versionStartIncluding": "6.9.1",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nionic: use dev_consume_skb_any outside of napi\n\nIf we\u0027re not in a NAPI softirq context, we need to be careful\nabout how we call napi_consume_skb(), specifically we need to\ncall it with budget==0 to signal to it that we\u0027re not in a\nsafe context.\n\nThis was found while running some configuration stress testing\nof traffic and a change queue config loop running, and this\ncurious note popped out:\n\n[ 4371.402645] BUG: using smp_processor_id() in preemptible [00000000] code: ethtool/20545\n[ 4371.402897] caller is napi_skb_cache_put+0x16/0x80\n[ 4371.403120] CPU: 25 PID: 20545 Comm: ethtool Kdump: loaded Tainted: G           OE      6.10.0-rc3-netnext+ #8\n[ 4371.403302] Hardware name: HPE ProLiant DL360 Gen10/ProLiant DL360 Gen10, BIOS U32 01/23/2021\n[ 4371.403460] Call Trace:\n[ 4371.403613]  \u003cTASK\u003e\n[ 4371.403758]  dump_stack_lvl+0x4f/0x70\n[ 4371.403904]  check_preemption_disabled+0xc1/0xe0\n[ 4371.404051]  napi_skb_cache_put+0x16/0x80\n[ 4371.404199]  ionic_tx_clean+0x18a/0x240 [ionic]\n[ 4371.404354]  ionic_tx_cq_service+0xc4/0x200 [ionic]\n[ 4371.404505]  ionic_tx_flush+0x15/0x70 [ionic]\n[ 4371.404653]  ? ionic_lif_qcq_deinit.isra.23+0x5b/0x70 [ionic]\n[ 4371.404805]  ionic_txrx_deinit+0x71/0x190 [ionic]\n[ 4371.404956]  ionic_reconfigure_queues+0x5f5/0xff0 [ionic]\n[ 4371.405111]  ionic_set_ringparam+0x2e8/0x3e0 [ionic]\n[ 4371.405265]  ethnl_set_rings+0x1f1/0x300\n[ 4371.405418]  ethnl_default_set_doit+0xbb/0x160\n[ 4371.405571]  genl_family_rcv_msg_doit+0xff/0x130\n\t[...]\n\nI found that ionic_tx_clean() calls napi_consume_skb() which calls\nnapi_skb_cache_put(), but before that last call is the note\n    /* Zero budget indicate non-NAPI context called us, like netpoll */\nand\n    DEBUG_NET_WARN_ON_ONCE(!in_softirq());\n\nThose are pretty big hints that we\u0027re doing it wrong.  We can pass a\ncontext hint down through the calls to let ionic_tx_clean() know what\nwe\u0027re doing so it can call napi_consume_skb() correctly."
        },
        {
          "lang": "es",
          "value": "En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: ionic: usa dev_consume_skb_any fuera de napi. Si no estamos en un contexto de softirq de NAPI, debemos tener cuidado con c\u00f3mo llamamos a napi_consume_skb(), espec\u00edficamente debemos llamarlo con Budget==0 para indicarle que no estamos en un contexto seguro. Esto se encontr\u00f3 mientras se ejecutaban algunas pruebas de estr\u00e9s de configuraci\u00f3n del tr\u00e1fico y se ejecutaba un bucle de configuraci\u00f3n de cola de cambios, y apareci\u00f3 esta nota curiosa: [4371.402645] ERROR: usar smp_processor_id() en c\u00f3digo interrumpible [00000000]: ethtool/20545 [4371.402897] la persona que llama es napi_skb_cache_put+0x16/0x80 [ 4371.403120] CPU: 25 PID: 20545 Comm: ethtool Kdump: loaded Tainted: G OE 6.10.0-rc3-netnext+ #8 [ 4371.403302] Nombre de hardware: HPE ProLiant DL360 Gen10/ProLiant DL360 Gen 10, BIOSU32 23/01/2021 [ 4371.403460] Seguimiento de llamadas: [ 4371.403613]  [ 4371.403758] dump_stack_lvl+0x4f/0x70 [ 4371.403904] check_preemption_disabled+0xc1/0xe0 [ 4371.40405 1] napi_skb_cache_put+0x16/0x80 [ 4371.404199] ionic_tx_clean+0x18a/0x240 [ i\u00f3nico] [4371.404354] ionic_tx_cq_service+0xc4/0x200 [i\u00f3nico] [4371.404505] ionic_tx_flush+0x15/0x70 [i\u00f3nico] [4371.404653]? ionic_lif_qcq_deinit.isra.23+0x5b/0x70 [ionic] [ 4371.404805] ionic_txrx_deinit+0x71/0x190 [ionic] [ 4371.404956] ionic_reconfigure_queues+0x5f5/0xff0 [ionic] [ 4371.4051 11] ionic_set_ringparam+0x2e8/0x3e0 [ionic] [4371.405265] ethnl_set_rings+ 0x1f1/0x300 [ 4371.405418] ethnl_default_set_doit+0xbb/0x160 [ 4371.405571] genl_family_rcv_msg_doit+0xff/0x130 [...] encontr\u00e9 que ionic_tx_clean() llama a napi_consume_skb() que llama a napi_skb_cache_put() , pero antes de esa \u00faltima llamada est\u00e1 la nota /* El presupuesto cero indica que nos llam\u00f3 un contexto que no es NAPI, como netpoll */ y DEBUG_NET_WARN_ON_ONCE(!in_softirq()); Esos son indicios bastante importantes de que lo estamos haciendo mal. Podemos pasar una sugerencia de contexto a trav\u00e9s de las llamadas para que ionic_tx_clean() sepa lo que estamos haciendo para que pueda llamar a napi_consume_skb() correctamente."
        }
      ],
      "id": "CVE-2024-42071",
      "lastModified": "2024-11-21T09:33:31.883",
      "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-07-29T16:15:06.623",
      "references": [
        {
          "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
          "tags": [
            "Patch"
          ],
          "url": "https://git.kernel.org/stable/c/84b767f9e34fdb143c09e66a2a20722fc2921821"
        },
        {
          "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
          "tags": [
            "Patch"
          ],
          "url": "https://git.kernel.org/stable/c/ef7646ed49fff962e97b276f4ab91327a67eeb5a"
        },
        {
          "source": "af854a3a-2127-422b-91ae-364da2661108",
          "tags": [
            "Patch"
          ],
          "url": "https://git.kernel.org/stable/c/84b767f9e34fdb143c09e66a2a20722fc2921821"
        },
        {
          "source": "af854a3a-2127-422b-91ae-364da2661108",
          "tags": [
            "Patch"
          ],
          "url": "https://git.kernel.org/stable/c/ef7646ed49fff962e97b276f4ab91327a67eeb5a"
        }
      ],
      "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      "vulnStatus": "Modified",
      "weaknesses": [
        {
          "description": [
            {
              "lang": "en",
              "value": "CWE-834"
            }
          ],
          "source": "nvd@nist.gov",
          "type": "Primary"
        }
      ]
    },
    "microsoft_vex": {
      "current_release_date": "2026-02-18T02:59:09.000Z",
      "cve": "CVE-2024-42071",
      "id": "msrc_CVE-2024-42071",
      "initial_release_date": "2024-07-01T07:00:00.000Z",
      "product_status:fixed": "5",
      "product_status:known_affected": "5",
      "source": "Microsoft CSAF VEX",
      "status": "final",
      "title": "ionic: use dev_consume_skb_any outside of napi",
      "url": "https://msrc.microsoft.com/csaf/vex/2024/msrc_cve-2024-42071.json",
      "version": "5"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "drivers/net/ethernet/pensando/ionic/ionic_dev.h",
                  "drivers/net/ethernet/pensando/ionic/ionic_lif.c",
                  "drivers/net/ethernet/pensando/ionic/ionic_txrx.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "ef7646ed49fff962e97b276f4ab91327a67eeb5a",
                    "status": "affected",
                    "version": "386e69865311044b576ff536c99c6ee9cc98a228",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "84b767f9e34fdb143c09e66a2a20722fc2921821",
                    "status": "affected",
                    "version": "386e69865311044b576ff536c99c6ee9cc98a228",
                    "versionType": "git"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "drivers/net/ethernet/pensando/ionic/ionic_dev.h",
                  "drivers/net/ethernet/pensando/ionic/ionic_lif.c",
                  "drivers/net/ethernet/pensando/ionic/ionic_txrx.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "status": "affected",
                    "version": "6.9"
                  },
                  {
                    "lessThan": "6.9",
                    "status": "unaffected",
                    "version": "0",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.9.*",
                    "status": "unaffected",
                    "version": "6.9.8",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "*",
                    "status": "unaffected",
                    "version": "6.10",
                    "versionType": "original_commit_for_fix"
                  }
                ]
              }
            ],
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
          }
        ],
        "configurations": [
          {
            "nodes": [
              {
                "cpeMatch": [
                  {
                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                    "matchCriteriaId": "18FE1EAE-C36C-49FC-A5E0-0A661CDC561E",
                    "versionEndExcluding": "6.9",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                    "matchCriteriaId": "1557DCF8-46D3-4910-8B19-5C77412AB681",
                    "versionEndExcluding": "6.9.8",
                    "versionStartIncluding": "6.9.1",
                    "vulnerable": true
                  }
                ],
                "negate": false,
                "operator": "OR"
              }
            ]
          }
        ],
        "cveTags": [],
        "descriptions": [
          {
            "lang": "en",
            "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nionic: use dev_consume_skb_any outside of napi\n\nIf we\u0027re not in a NAPI softirq context, we need to be careful\nabout how we call napi_consume_skb(), specifically we need to\ncall it with budget==0 to signal to it that we\u0027re not in a\nsafe context.\n\nThis was found while running some configuration stress testing\nof traffic and a change queue config loop running, and this\ncurious note popped out:\n\n[ 4371.402645] BUG: using smp_processor_id() in preemptible [00000000] code: ethtool/20545\n[ 4371.402897] caller is napi_skb_cache_put+0x16/0x80\n[ 4371.403120] CPU: 25 PID: 20545 Comm: ethtool Kdump: loaded Tainted: G           OE      6.10.0-rc3-netnext+ #8\n[ 4371.403302] Hardware name: HPE ProLiant DL360 Gen10/ProLiant DL360 Gen10, BIOS U32 01/23/2021\n[ 4371.403460] Call Trace:\n[ 4371.403613]  \u003cTASK\u003e\n[ 4371.403758]  dump_stack_lvl+0x4f/0x70\n[ 4371.403904]  check_preemption_disabled+0xc1/0xe0\n[ 4371.404051]  napi_skb_cache_put+0x16/0x80\n[ 4371.404199]  ionic_tx_clean+0x18a/0x240 [ionic]\n[ 4371.404354]  ionic_tx_cq_service+0xc4/0x200 [ionic]\n[ 4371.404505]  ionic_tx_flush+0x15/0x70 [ionic]\n[ 4371.404653]  ? ionic_lif_qcq_deinit.isra.23+0x5b/0x70 [ionic]\n[ 4371.404805]  ionic_txrx_deinit+0x71/0x190 [ionic]\n[ 4371.404956]  ionic_reconfigure_queues+0x5f5/0xff0 [ionic]\n[ 4371.405111]  ionic_set_ringparam+0x2e8/0x3e0 [ionic]\n[ 4371.405265]  ethnl_set_rings+0x1f1/0x300\n[ 4371.405418]  ethnl_default_set_doit+0xbb/0x160\n[ 4371.405571]  genl_family_rcv_msg_doit+0xff/0x130\n\t[...]\n\nI found that ionic_tx_clean() calls napi_consume_skb() which calls\nnapi_skb_cache_put(), but before that last call is the note\n    /* Zero budget indicate non-NAPI context called us, like netpoll */\nand\n    DEBUG_NET_WARN_ON_ONCE(!in_softirq());\n\nThose are pretty big hints that we\u0027re doing it wrong.  We can pass a\ncontext hint down through the calls to let ionic_tx_clean() know what\nwe\u0027re doing so it can call napi_consume_skb() correctly."
          },
          {
            "lang": "es",
            "value": "En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: ionic: usa dev_consume_skb_any fuera de napi. Si no estamos en un contexto de softirq de NAPI, debemos tener cuidado con c\u00f3mo llamamos a napi_consume_skb(), espec\u00edficamente debemos llamarlo con Budget==0 para indicarle que no estamos en un contexto seguro. Esto se encontr\u00f3 mientras se ejecutaban algunas pruebas de estr\u00e9s de configuraci\u00f3n del tr\u00e1fico y se ejecutaba un bucle de configuraci\u00f3n de cola de cambios, y apareci\u00f3 esta nota curiosa: [4371.402645] ERROR: usar smp_processor_id() en c\u00f3digo interrumpible [00000000]: ethtool/20545 [4371.402897] la persona que llama es napi_skb_cache_put+0x16/0x80 [ 4371.403120] CPU: 25 PID: 20545 Comm: ethtool Kdump: loaded Tainted: G OE 6.10.0-rc3-netnext+ #8 [ 4371.403302] Nombre de hardware: HPE ProLiant DL360 Gen10/ProLiant DL360 Gen 10, BIOSU32 23/01/2021 [ 4371.403460] Seguimiento de llamadas: [ 4371.403613]  [ 4371.403758] dump_stack_lvl+0x4f/0x70 [ 4371.403904] check_preemption_disabled+0xc1/0xe0 [ 4371.40405 1] napi_skb_cache_put+0x16/0x80 [ 4371.404199] ionic_tx_clean+0x18a/0x240 [ i\u00f3nico] [4371.404354] ionic_tx_cq_service+0xc4/0x200 [i\u00f3nico] [4371.404505] ionic_tx_flush+0x15/0x70 [i\u00f3nico] [4371.404653]? ionic_lif_qcq_deinit.isra.23+0x5b/0x70 [ionic] [ 4371.404805] ionic_txrx_deinit+0x71/0x190 [ionic] [ 4371.404956] ionic_reconfigure_queues+0x5f5/0xff0 [ionic] [ 4371.4051 11] ionic_set_ringparam+0x2e8/0x3e0 [ionic] [4371.405265] ethnl_set_rings+ 0x1f1/0x300 [ 4371.405418] ethnl_default_set_doit+0xbb/0x160 [ 4371.405571] genl_family_rcv_msg_doit+0xff/0x130 [...] encontr\u00e9 que ionic_tx_clean() llama a napi_consume_skb() que llama a napi_skb_cache_put() , pero antes de esa \u00faltima llamada est\u00e1 la nota /* El presupuesto cero indica que nos llam\u00f3 un contexto que no es NAPI, como netpoll */ y DEBUG_NET_WARN_ON_ONCE(!in_softirq()); Esos son indicios bastante importantes de que lo estamos haciendo mal. Podemos pasar una sugerencia de contexto a trav\u00e9s de las llamadas para que ionic_tx_clean() sepa lo que estamos haciendo para que pueda llamar a napi_consume_skb() correctamente."
          }
        ],
        "id": "CVE-2024-42071",
        "lastModified": "2026-08-04T11:19:31.393",
        "metrics": {
          "cvssMetricV31": [
            {
              "cvssData": {
                "attackComplexity": "LOW",
                "attackVector": "LOCAL",
                "availabilityImpact": "HIGH",
                "baseScore": 7.8,
                "baseSeverity": "HIGH",
                "confidentialityImpact": "HIGH",
                "integrityImpact": "HIGH",
                "privilegesRequired": "LOW",
                "scope": "UNCHANGED",
                "userInteraction": "NONE",
                "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
                "version": "3.1"
              },
              "exploitabilityScore": 1.8,
              "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-42071",
                "options": [
                  {
                    "exploitation": "none"
                  },
                  {
                    "automatable": "no"
                  },
                  {
                    "technicalImpact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2024-09-10T16:19:43.105233Z",
                "version": "2.0.3"
              }
            }
          ]
        },
        "published": "2024-07-29T16:15:06.623",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "tags": [
              "Patch"
            ],
            "url": "https://git.kernel.org/stable/c/84b767f9e34fdb143c09e66a2a20722fc2921821"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "tags": [
              "Patch"
            ],
            "url": "https://git.kernel.org/stable/c/ef7646ed49fff962e97b276f4ab91327a67eeb5a"
          },
          {
            "source": "af854a3a-2127-422b-91ae-364da2661108",
            "tags": [
              "Patch"
            ],
            "url": "https://git.kernel.org/stable/c/84b767f9e34fdb143c09e66a2a20722fc2921821"
          },
          {
            "source": "af854a3a-2127-422b-91ae-364da2661108",
            "tags": [
              "Patch"
            ],
            "url": "https://git.kernel.org/stable/c/ef7646ed49fff962e97b276f4ab91327a67eeb5a"
          }
        ],
        "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "vulnStatus": "Modified",
        "weaknesses": [
          {
            "description": [
              {
                "lang": "en",
                "value": "CWE-834"
              }
            ],
            "source": "nvd@nist.gov",
            "type": "Primary"
          }
        ]
      }
    },
    "redhat_vex": {
      "aggregate_severity": "Low",
      "current_release_date": "2026-08-04T22:43:03+00:00",
      "cve": "CVE-2024-42071",
      "id": "CVE-2024-42071",
      "initial_release_date": "2024-07-29T00:00:00+00:00",
      "product_status:known_affected": "108",
      "product_status:known_not_affected": "90",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: ionic: use dev_consume_skb_any outside of napi",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2024/cve-2024-42071.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2026-09-04T00:27:57Z",
      "cve": "CVE-2024-42071",
      "id": "CVE-2024-42071",
      "initial_release_date": "2024-08-06T02:00:27Z",
      "product_status:known_not_affected": "379",
      "product_status:recommended": "47",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2024-42071",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2024-42071.json",
      "version": "20"
    },
    "vulnrichment": {
      "containers": {
        "adp": [
          {
            "providerMetadata": {
              "dateUpdated": "2024-08-02T04:54:32.247Z",
              "orgId": "af854a3a-2127-422b-91ae-364da2661108",
              "shortName": "CVE"
            },
            "references": [
              {
                "tags": [
                  "x_transferred"
                ],
                "url": "https://git.kernel.org/stable/c/ef7646ed49fff962e97b276f4ab91327a67eeb5a"
              },
              {
                "tags": [
                  "x_transferred"
                ],
                "url": "https://git.kernel.org/stable/c/84b767f9e34fdb143c09e66a2a20722fc2921821"
              }
            ],
            "title": "CVE Program Container"
          },
          {
            "metrics": [
              {
                "other": {
                  "content": {
                    "id": "CVE-2024-42071",
                    "options": [
                      {
                        "Exploitation": "none"
                      },
                      {
                        "Automatable": "no"
                      },
                      {
                        "Technical Impact": "partial"
                      }
                    ],
                    "role": "CISA Coordinator",
                    "timestamp": "2024-09-10T16:19:43.105233Z",
                    "version": "2.0.3"
                  },
                  "type": "ssvc"
                }
              }
            ],
            "providerMetadata": {
              "dateUpdated": "2024-09-11T12:42:19.901Z",
              "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
              "shortName": "CISA-ADP"
            },
            "title": "CISA ADP Vulnrichment"
          }
        ],
        "cna": {
          "affected": [
            {
              "defaultStatus": "unaffected",
              "product": "Linux",
              "programFiles": [
                "drivers/net/ethernet/pensando/ionic/ionic_dev.h",
                "drivers/net/ethernet/pensando/ionic/ionic_lif.c",
                "drivers/net/ethernet/pensando/ionic/ionic_txrx.c"
              ],
              "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
              "vendor": "Linux",
              "versions": [
                {
                  "lessThan": "ef7646ed49fff962e97b276f4ab91327a67eeb5a",
                  "status": "affected",
                  "version": "386e69865311044b576ff536c99c6ee9cc98a228",
                  "versionType": "git"
                },
                {
                  "lessThan": "84b767f9e34fdb143c09e66a2a20722fc2921821",
                  "status": "affected",
                  "version": "386e69865311044b576ff536c99c6ee9cc98a228",
                  "versionType": "git"
                }
              ]
            },
            {
              "defaultStatus": "affected",
              "product": "Linux",
              "programFiles": [
                "drivers/net/ethernet/pensando/ionic/ionic_dev.h",
                "drivers/net/ethernet/pensando/ionic/ionic_lif.c",
                "drivers/net/ethernet/pensando/ionic/ionic_txrx.c"
              ],
              "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
              "vendor": "Linux",
              "versions": [
                {
                  "status": "affected",
                  "version": "6.9"
                },
                {
                  "lessThan": "6.9",
                  "status": "unaffected",
                  "version": "0",
                  "versionType": "semver"
                },
                {
                  "lessThanOrEqual": "6.9.*",
                  "status": "unaffected",
                  "version": "6.9.8",
                  "versionType": "semver"
                },
                {
                  "lessThanOrEqual": "*",
                  "status": "unaffected",
                  "version": "6.10",
                  "versionType": "original_commit_for_fix"
                }
              ]
            }
          ],
          "cpeApplicability": [
            {
              "nodes": [
                {
                  "cpeMatch": [
                    {
                      "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                      "versionEndExcluding": "6.9.8",
                      "versionStartIncluding": "6.9",
                      "vulnerable": true
                    },
                    {
                      "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                      "versionEndExcluding": "6.10",
                      "versionStartIncluding": "6.9",
                      "vulnerable": true
                    }
                  ],
                  "negate": false,
                  "operator": "OR"
                }
              ]
            }
          ],
          "descriptions": [
            {
              "lang": "en",
              "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nionic: use dev_consume_skb_any outside of napi\n\nIf we\u0027re not in a NAPI softirq context, we need to be careful\nabout how we call napi_consume_skb(), specifically we need to\ncall it with budget==0 to signal to it that we\u0027re not in a\nsafe context.\n\nThis was found while running some configuration stress testing\nof traffic and a change queue config loop running, and this\ncurious note popped out:\n\n[ 4371.402645] BUG: using smp_processor_id() in preemptible [00000000] code: ethtool/20545\n[ 4371.402897] caller is napi_skb_cache_put+0x16/0x80\n[ 4371.403120] CPU: 25 PID: 20545 Comm: ethtool Kdump: loaded Tainted: G           OE      6.10.0-rc3-netnext+ #8\n[ 4371.403302] Hardware name: HPE ProLiant DL360 Gen10/ProLiant DL360 Gen10, BIOS U32 01/23/2021\n[ 4371.403460] Call Trace:\n[ 4371.403613]  \u003cTASK\u003e\n[ 4371.403758]  dump_stack_lvl+0x4f/0x70\n[ 4371.403904]  check_preemption_disabled+0xc1/0xe0\n[ 4371.404051]  napi_skb_cache_put+0x16/0x80\n[ 4371.404199]  ionic_tx_clean+0x18a/0x240 [ionic]\n[ 4371.404354]  ionic_tx_cq_service+0xc4/0x200 [ionic]\n[ 4371.404505]  ionic_tx_flush+0x15/0x70 [ionic]\n[ 4371.404653]  ? ionic_lif_qcq_deinit.isra.23+0x5b/0x70 [ionic]\n[ 4371.404805]  ionic_txrx_deinit+0x71/0x190 [ionic]\n[ 4371.404956]  ionic_reconfigure_queues+0x5f5/0xff0 [ionic]\n[ 4371.405111]  ionic_set_ringparam+0x2e8/0x3e0 [ionic]\n[ 4371.405265]  ethnl_set_rings+0x1f1/0x300\n[ 4371.405418]  ethnl_default_set_doit+0xbb/0x160\n[ 4371.405571]  genl_family_rcv_msg_doit+0xff/0x130\n\t[...]\n\nI found that ionic_tx_clean() calls napi_consume_skb() which calls\nnapi_skb_cache_put(), but before that last call is the note\n    /* Zero budget indicate non-NAPI context called us, like netpoll */\nand\n    DEBUG_NET_WARN_ON_ONCE(!in_softirq());\n\nThose are pretty big hints that we\u0027re doing it wrong.  We can pass a\ncontext hint down through the calls to let ionic_tx_clean() know what\nwe\u0027re doing so it can call napi_consume_skb() correctly."
            }
          ],
          "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 path is only reached through local administrative netdev operations \u2014 ethtool netlink/ioctl (`ETHTOOL_MSG_RINGS_SET`, `ETHTOOL_MSG_CHANNELS_SET`), `ip link set down`, or MTU/XDP changes \u2014 all issued from the local system. Remote packets cannot invoke `ionic_txrx_deinit()`.\nAC:L - The attacker controls both sides of the race: they generate the TX traffic that leaves skbs pending on the queue and the softirq load on the CPU, and they issue the reconfiguration/down operations in a loop (exactly the \"traffic plus queue-config loop\" stress the reporter used). The path can be retriggered indefinitely with no attacker-uncontrollable precondition.\nPR:L - The gates are `GENL_UNS_ADMIN_PERM` / `ns_capable(net-\u003euser_ns, CAP_NET_ADMIN)`, which are namespace-scoped rather than requiring real root \u2014 an unprivileged user with CAP_NET_ADMIN in a user namespace owning a netns that holds an ionic SR-IOV VF (a common SmartNIC container/Kubernetes deployment) can reach it. Per kernel scoring guidance, namespace-reachable CAP_NET_ADMIN is Low, not High.\nUI:N - The attacker performs the queue reconfiguration and traffic generation entirely on their own; no action by any other user or administrator is required.\nS:U - The corruption is confined to kernel per-CPU allocator state within the same security authority; no VM, IOMMU, or sandbox boundary is crossed.\nC:H - Corrupting the unlocked per-CPU `napi_alloc_cache` lets a stale or duplicated `sk_buff` pointer be reissued by `napi_skb_cache_get()`, producing a use-after-free on an object whose contents are attacker-controlled network data \u2014 a reliable kernel memory disclosure primitive.\nI:H - The same race yields either a double-free/UAF of `sk_buff` objects or, when the `skb_count == NAPI_SKB_CACHE_SIZE` equality check is stepped over, out-of-bounds pointer writes past the end of `skb_cache[]` into adjacent per-CPU data \u2014 both are established arbitrary-write/control-flow-hijack primitives.\nA:H - Handing an already-freed or garbage skb pointer back into the network stack, or freeing pointers via `kmem_cache_free_bulk()` from a corrupted array, reliably oopses or panics the kernel; with `panic_on_warn` the accompanying `DEBUG_NET_WARN_ON_ONCE(!in_softirq())` splat alone halts the machine."
                }
              ]
            }
          ],
          "providerMetadata": {
            "dateUpdated": "2026-08-05T11:35:29.256Z",
            "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "shortName": "Linux"
          },
          "references": [
            {
              "url": "https://git.kernel.org/stable/c/ef7646ed49fff962e97b276f4ab91327a67eeb5a"
            },
            {
              "url": "https://git.kernel.org/stable/c/84b767f9e34fdb143c09e66a2a20722fc2921821"
            }
          ],
          "title": "ionic: use dev_consume_skb_any outside of napi",
          "x_generator": {
            "engine": "bippy-1.2.0"
          }
        }
      },
      "cveMetadata": {
        "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "assignerShortName": "Linux",
        "cveId": "CVE-2024-42071",
        "datePublished": "2024-07-29T15:52:34.714Z",
        "dateReserved": "2024-07-29T15:50:41.168Z",
        "dateUpdated": "2026-08-05T11:35:29.256Z",
        "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…