CVE-2026-63874 (GCVE-0-2026-63874)

Vulnerability from cvelistv5 – Published: 2026-07-19 14:18 – Updated: 2026-08-05 12:36
VLAI
Title
net: mctp: usb: fix race between urb completion and rx_retry cancellation
Summary
In the Linux kernel, the following vulnerability has been resolved: net: mctp: usb: fix race between urb completion and rx_retry cancellation It's possible that sequencing between setting ->stopped and cancelling the rx_retry work (in ndo_stop) could leave us with an urb queued: T1: ndo_stop T2: rx_retry_work ------------ ---------------- LD: ->stopped => false ST: ->stopped <= true usb_kill_urb() mctp_usb_rx_queue() usb_submit_urb() cancel_delayed_work_sync() That urb completion can then re-schedule rx_retry_work. Strenghen the sequencing between the stop (preventing another requeue) and the cancel by updating both atomically under a new rx lock. After setting ->rx_stopped, and cancelling pending work, we know that the requeue cannot occur, so all that's left is killing any pending urb.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 0791c0327a6e4e7691d6fc5ad334c215de04dcc9 , < 9c46f3ee1837f6881cb99a52ffecb2760f11dc73 (git)
Affected: 0791c0327a6e4e7691d6fc5ad334c215de04dcc9 , < d90feaa3f74bea8dafb6494631a194c70e547d94 (git)
Affected: 0791c0327a6e4e7691d6fc5ad334c215de04dcc9 , < 54665dce982689e2fd99b32e9a0dcc204fda8a51 (git)
guessed Create a notification for this product.
Linux Linux Affected: 6.15
Unaffected: 0 , < 6.15 (semver)
Unaffected: 6.18.36 , ≤ 6.18.* (semver)
Unaffected: 7.0.13 , ≤ 7.0.* (semver)
Unaffected: 7.1 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/net/mctp/mctp-usb.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "9c46f3ee1837f6881cb99a52ffecb2760f11dc73",
              "status": "affected",
              "version": "0791c0327a6e4e7691d6fc5ad334c215de04dcc9",
              "versionType": "git"
            },
            {
              "lessThan": "d90feaa3f74bea8dafb6494631a194c70e547d94",
              "status": "affected",
              "version": "0791c0327a6e4e7691d6fc5ad334c215de04dcc9",
              "versionType": "git"
            },
            {
              "lessThan": "54665dce982689e2fd99b32e9a0dcc204fda8a51",
              "status": "affected",
              "version": "0791c0327a6e4e7691d6fc5ad334c215de04dcc9",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/net/mctp/mctp-usb.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.15"
            },
            {
              "lessThan": "6.15",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.36",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.0.*",
              "status": "unaffected",
              "version": "7.0.13",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.1",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.36",
                  "versionStartIncluding": "6.15",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.0.13",
                  "versionStartIncluding": "6.15",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.1",
                  "versionStartIncluding": "6.15",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nnet: mctp: usb: fix race between urb completion and rx_retry cancellation\n\nIt\u0027s possible that sequencing between setting -\u003estopped and cancelling\nthe rx_retry work (in ndo_stop) could leave us with an urb queued:\n\n    T1: ndo_stop                  T2: rx_retry_work\n    ------------                  ----------------\n                                  LD: -\u003estopped =\u003e false\n    ST: -\u003estopped \u003c= true\n    usb_kill_urb()\n                                  mctp_usb_rx_queue()\n                                    usb_submit_urb()\n    cancel_delayed_work_sync()\n\nThat urb completion can then re-schedule rx_retry_work.\n\nStrenghen the sequencing between the stop (preventing another requeue)\nand the cancel by updating both atomically under a new rx lock. After\nsetting -\u003erx_stopped, and cancelling pending work, we know that the\nrequeue cannot occur, so all that\u0027s left is killing any pending urb."
        }
      ],
      "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 race is hit in `mctp_usb_stop()` (`ndo_stop`) during netdev teardown, which is reachable via local RTNETLINK (`ip link set down`) or USB disconnect; it is not reachable from remote network input. Per the uncertainty rule, Local is chosen over Physical.\nAC:L - An attacker can control both sides of the race by inducing RX ENOMEM to schedule `rx_retry_work` (memory pressure) and concurrently triggering netdev stop/disconnect, retrying timing until the window between `stopped=true` and `cancel_delayed_work_sync()` is won.\nPR:L - Triggering `ndo_stop` through RTNETLINK requires `CAP_NET_ADMIN`, which is obtainable in an unprivileged user namespace; a physical USB disconnect path needs no software privileges, but PR:L is the higher-severity choice when uncertain.\nUI:N - Exploitation does not require any victim user action beyond the attacker\u2019s own interface teardown/disconnect and memory-pressure timing.\nS:U - Impact is kernel memory corruption/UAF within the same kernel security boundary, not a cross-boundary escape such as guest-to-host or sandbox breakout.\nC:H - Winning the race leaves RX URBs/completions running after `usb_free_urb()` and `free_netdev()`, producing a use-after-free on `net_device`, `urb`, and `sk_buff` objects that can be turned into arbitrary kernel memory disclosure.\nI:H - The post-teardown UAF on heap-allocated driver/netdev/USB objects provides exploitable write primitives (re-submitted URBs, corrupted completion handlers) suitable for control-flow hijack and privilege escalation.\nA:H - The bug reliably causes kernel crashes (oops/panic) when freed URBs/netdevs are touched by completion handlers or rescheduled `rx_retry_work`, even before full exploitation."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T12:36:47.817Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/9c46f3ee1837f6881cb99a52ffecb2760f11dc73"
        },
        {
          "url": "https://git.kernel.org/stable/c/d90feaa3f74bea8dafb6494631a194c70e547d94"
        },
        {
          "url": "https://git.kernel.org/stable/c/54665dce982689e2fd99b32e9a0dcc204fda8a51"
        }
      ],
      "title": "net: mctp: usb: fix race between urb completion and rx_retry cancellation",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-63874",
    "datePublished": "2026-07-19T14:18:41.907Z",
    "dateReserved": "2026-07-19T07:54:57.017Z",
    "dateUpdated": "2026-08-05T12:36:47.817Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-63874",
      "date": "2026-09-21",
      "epss": "0.00173",
      "percentile": "0.07051"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "drivers/net/mctp/mctp-usb.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "9c46f3ee1837f6881cb99a52ffecb2760f11dc73",
                    "status": "affected",
                    "version": "0791c0327a6e4e7691d6fc5ad334c215de04dcc9",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "d90feaa3f74bea8dafb6494631a194c70e547d94",
                    "status": "affected",
                    "version": "0791c0327a6e4e7691d6fc5ad334c215de04dcc9",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "54665dce982689e2fd99b32e9a0dcc204fda8a51",
                    "status": "affected",
                    "version": "0791c0327a6e4e7691d6fc5ad334c215de04dcc9",
                    "versionType": "git"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "drivers/net/mctp/mctp-usb.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "status": "affected",
                    "version": "6.15"
                  },
                  {
                    "lessThan": "6.15",
                    "status": "unaffected",
                    "version": "0",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.18.*",
                    "status": "unaffected",
                    "version": "6.18.36",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "7.0.*",
                    "status": "unaffected",
                    "version": "7.0.13",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "*",
                    "status": "unaffected",
                    "version": "7.1",
                    "versionType": "original_commit_for_fix"
                  }
                ]
              }
            ],
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
          }
        ],
        "cveTags": [],
        "descriptions": [
          {
            "lang": "en",
            "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nnet: mctp: usb: fix race between urb completion and rx_retry cancellation\n\nIt\u0027s possible that sequencing between setting -\u003estopped and cancelling\nthe rx_retry work (in ndo_stop) could leave us with an urb queued:\n\n    T1: ndo_stop                  T2: rx_retry_work\n    ------------                  ----------------\n                                  LD: -\u003estopped =\u003e false\n    ST: -\u003estopped \u003c= true\n    usb_kill_urb()\n                                  mctp_usb_rx_queue()\n                                    usb_submit_urb()\n    cancel_delayed_work_sync()\n\nThat urb completion can then re-schedule rx_retry_work.\n\nStrenghen the sequencing between the stop (preventing another requeue)\nand the cancel by updating both atomically under a new rx lock. After\nsetting -\u003erx_stopped, and cancelling pending work, we know that the\nrequeue cannot occur, so all that\u0027s left is killing any pending urb."
          }
        ],
        "id": "CVE-2026-63874",
        "lastModified": "2026-07-27T17:44:23.777",
        "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"
            }
          ]
        },
        "published": "2026-07-19T15:16:54.450",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/54665dce982689e2fd99b32e9a0dcc204fda8a51"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/9c46f3ee1837f6881cb99a52ffecb2760f11dc73"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/d90feaa3f74bea8dafb6494631a194c70e547d94"
          }
        ],
        "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "vulnStatus": "Awaiting Analysis"
      }
    },
    "redhat_vex": {
      "aggregate_severity": "None",
      "current_release_date": "2026-08-05T14:05:53+00:00",
      "cve": "CVE-2026-63874",
      "id": "CVE-2026-63874",
      "initial_release_date": "2026-07-19T00:00:00+00:00",
      "product_status:known_not_affected": "274",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: net: mctp: usb: fix race between urb completion and rx_retry cancellation",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-63874.json",
      "version": "3"
    }
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Detection rules are retrieved from Rulezet.

Loading…

Loading…

Related by attack behaviour

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


Loading…