CVE-2026-98025 (GCVE-0-2026-98025)

Vulnerability from cvelistv5 – Published: 2026-09-25 10:23 – Updated: 2026-09-25 10:23
VLAI
Title
net: usb: cx82310_eth: drop URB after 0xffff reboot sentinel to prevent partial_data heap overflow
Summary
In the Linux kernel, the following vulnerability has been resolved: net: usb: cx82310_eth: drop URB after 0xffff reboot sentinel to prevent partial_data heap overflow The 0xffff length sentinel detects a router reboot and schedules re-enabling of ethernet mode, but then falls through to the rest of the loop body. The next check is } else if (len > CX82310_MTU) { which is the else of the just-matched if -- it never fires for len == 0xffff. The MTU bound that normally caps the incomplete-packet save path is silently bypassed. With 0xffff > skb->len always true (rx_urb_size is 4096), the incomplete-packet branch saves dev->partial_len = skb->len bytes into dev->partial_data. partial_data is kmalloc(hard_mtu) = kmalloc(CX82310_MTU + 2) = 1516 bytes, but skb->len after the 2-byte header pull can be up to 4094. A device that sends a 4096-byte URB starting with [0xff 0xff] therefore copies 4094 device-provided bytes into a buffer allocated for 1516 bytes, exceeding its requested size by 2578 bytes. The next URB then reads dev->partial_len (4094) back from the same 1516-byte buffer and dev->partial_rem (65535 - 4094 = 61441) from the new URB's ~4KB skb, both well past their allocations, and delivers the spliced result as a 64KB "frame" to the network stack. Bail out of rx_fixup after scheduling the re-enable work; the remainder of a reboot-marker URB is not meaningful packet data. This restores the invariant that partial_len < CX82310_MTU + 2 on the save path, since every other route there has already passed the MTU check.
Severity
No CVSS data available.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: ca139d76b0d9e59d18f2d2ec8f0d81b82acd6808 , < 3bd689409bb1c93bdc6dd8ec6cbf5161bc4f0287 (git)
Affected: ca139d76b0d9e59d18f2d2ec8f0d81b82acd6808 , < 659654654eb140851467af41d610473c100c7975 (git)
Affected: ca139d76b0d9e59d18f2d2ec8f0d81b82acd6808 , < 237c9ae7145772af147e4665f158938350fa5658 (git)
Affected: ca139d76b0d9e59d18f2d2ec8f0d81b82acd6808 , < 5d50e90add8b4a978395e893e81954d19d58a7c5 (git)
Affected: 5adf7fbdfa3e9e425b04771e1d64c4e184ad8fdb (git)
Affected: c1b187a86a176e42f5e48066556980e3232b6cab (git)
Affected: 4.19.322 , < 4.20 (semver)
Affected: 5.4.284 , < 5.5 (semver)
guessed Create a notification for this product.
Linux Linux Affected: 5.10
Unaffected: 0 , < 5.10 (semver)
Unaffected: 6.12.111 , ≤ 6.12.* (semver)
Unaffected: 6.18.53 , ≤ 6.18.* (semver)
Unaffected: 7.2.7 , ≤ 7.2.* (semver)
Unaffected: 7.3-rc3 , ≤ * (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/usb/cx82310_eth.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "3bd689409bb1c93bdc6dd8ec6cbf5161bc4f0287",
              "status": "affected",
              "version": "ca139d76b0d9e59d18f2d2ec8f0d81b82acd6808",
              "versionType": "git"
            },
            {
              "lessThan": "659654654eb140851467af41d610473c100c7975",
              "status": "affected",
              "version": "ca139d76b0d9e59d18f2d2ec8f0d81b82acd6808",
              "versionType": "git"
            },
            {
              "lessThan": "237c9ae7145772af147e4665f158938350fa5658",
              "status": "affected",
              "version": "ca139d76b0d9e59d18f2d2ec8f0d81b82acd6808",
              "versionType": "git"
            },
            {
              "lessThan": "5d50e90add8b4a978395e893e81954d19d58a7c5",
              "status": "affected",
              "version": "ca139d76b0d9e59d18f2d2ec8f0d81b82acd6808",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "5adf7fbdfa3e9e425b04771e1d64c4e184ad8fdb",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "c1b187a86a176e42f5e48066556980e3232b6cab",
              "versionType": "git"
            },
            {
              "lessThan": "4.20",
              "status": "affected",
              "version": "4.19.322",
              "versionType": "semver"
            },
            {
              "lessThan": "5.5",
              "status": "affected",
              "version": "5.4.284",
              "versionType": "semver"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/net/usb/cx82310_eth.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "5.10"
            },
            {
              "lessThan": "5.10",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.111",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.53",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.2.*",
              "status": "unaffected",
              "version": "7.2.7",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.3-rc3",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.111",
                  "versionStartIncluding": "5.10",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.53",
                  "versionStartIncluding": "5.10",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2.7",
                  "versionStartIncluding": "5.10",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.3-rc3",
                  "versionStartIncluding": "5.10",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionStartIncluding": "4.19.322",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionStartIncluding": "5.4.284",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nnet: usb: cx82310_eth: drop URB after 0xffff reboot sentinel to prevent partial_data heap overflow\n\nThe 0xffff length sentinel detects a router reboot and schedules\nre-enabling of ethernet mode, but then falls through to the rest\nof the loop body.  The next check is\n\n\t} else if (len \u003e CX82310_MTU) {\n\nwhich is the else of the just-matched if -- it never fires for\nlen == 0xffff.  The MTU bound that normally caps the\nincomplete-packet save path is silently bypassed.\n\nWith 0xffff \u003e skb-\u003elen always true (rx_urb_size is 4096), the\nincomplete-packet branch saves dev-\u003epartial_len = skb-\u003elen bytes\ninto dev-\u003epartial_data.  partial_data is kmalloc(hard_mtu) =\nkmalloc(CX82310_MTU + 2) = 1516 bytes, but skb-\u003elen after the\n2-byte header pull can be up to 4094.  A device that sends a\n4096-byte URB starting with [0xff 0xff] therefore copies 4094\ndevice-provided bytes into a buffer allocated for 1516 bytes,\nexceeding its requested size by 2578 bytes.\n\nThe next URB then reads dev-\u003epartial_len (4094) back from the same\n1516-byte buffer and dev-\u003epartial_rem (65535 - 4094 = 61441) from\nthe new URB\u0027s ~4KB skb, both well past their allocations, and\ndelivers the spliced result as a 64KB \"frame\" to the network\nstack.\n\nBail out of rx_fixup after scheduling the re-enable work; the\nremainder of a reboot-marker URB is not meaningful packet data.\nThis restores the invariant that partial_len \u003c CX82310_MTU + 2 on\nthe save path, since every other route there has already passed\nthe MTU check."
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-09-25T10:23:43.906Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/3bd689409bb1c93bdc6dd8ec6cbf5161bc4f0287"
        },
        {
          "url": "https://git.kernel.org/stable/c/659654654eb140851467af41d610473c100c7975"
        },
        {
          "url": "https://git.kernel.org/stable/c/237c9ae7145772af147e4665f158938350fa5658"
        },
        {
          "url": "https://git.kernel.org/stable/c/5d50e90add8b4a978395e893e81954d19d58a7c5"
        }
      ],
      "title": "net: usb: cx82310_eth: drop URB after 0xffff reboot sentinel to prevent partial_data heap overflow",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-98025",
    "datePublished": "2026-09-25T10:23:43.906Z",
    "dateReserved": "2026-09-25T10:19:56.070Z",
    "dateUpdated": "2026-09-25T10:23:43.906Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "drivers/net/usb/cx82310_eth.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "3bd689409bb1c93bdc6dd8ec6cbf5161bc4f0287",
                    "status": "affected",
                    "version": "ca139d76b0d9e59d18f2d2ec8f0d81b82acd6808",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "659654654eb140851467af41d610473c100c7975",
                    "status": "affected",
                    "version": "ca139d76b0d9e59d18f2d2ec8f0d81b82acd6808",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "237c9ae7145772af147e4665f158938350fa5658",
                    "status": "affected",
                    "version": "ca139d76b0d9e59d18f2d2ec8f0d81b82acd6808",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "5d50e90add8b4a978395e893e81954d19d58a7c5",
                    "status": "affected",
                    "version": "ca139d76b0d9e59d18f2d2ec8f0d81b82acd6808",
                    "versionType": "git"
                  },
                  {
                    "status": "affected",
                    "version": "5adf7fbdfa3e9e425b04771e1d64c4e184ad8fdb",
                    "versionType": "git"
                  },
                  {
                    "status": "affected",
                    "version": "c1b187a86a176e42f5e48066556980e3232b6cab",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "4.20",
                    "status": "affected",
                    "version": "4.19.322",
                    "versionType": "semver"
                  },
                  {
                    "lessThan": "5.5",
                    "status": "affected",
                    "version": "5.4.284",
                    "versionType": "semver"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "drivers/net/usb/cx82310_eth.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "status": "affected",
                    "version": "5.10"
                  },
                  {
                    "lessThan": "5.10",
                    "status": "unaffected",
                    "version": "0",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.12.*",
                    "status": "unaffected",
                    "version": "6.12.111",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.18.*",
                    "status": "unaffected",
                    "version": "6.18.53",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "7.2.*",
                    "status": "unaffected",
                    "version": "7.2.7",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "*",
                    "status": "unaffected",
                    "version": "7.3-rc3",
                    "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: usb: cx82310_eth: drop URB after 0xffff reboot sentinel to prevent partial_data heap overflow\n\nThe 0xffff length sentinel detects a router reboot and schedules\nre-enabling of ethernet mode, but then falls through to the rest\nof the loop body.  The next check is\n\n\t} else if (len \u003e CX82310_MTU) {\n\nwhich is the else of the just-matched if -- it never fires for\nlen == 0xffff.  The MTU bound that normally caps the\nincomplete-packet save path is silently bypassed.\n\nWith 0xffff \u003e skb-\u003elen always true (rx_urb_size is 4096), the\nincomplete-packet branch saves dev-\u003epartial_len = skb-\u003elen bytes\ninto dev-\u003epartial_data.  partial_data is kmalloc(hard_mtu) =\nkmalloc(CX82310_MTU + 2) = 1516 bytes, but skb-\u003elen after the\n2-byte header pull can be up to 4094.  A device that sends a\n4096-byte URB starting with [0xff 0xff] therefore copies 4094\ndevice-provided bytes into a buffer allocated for 1516 bytes,\nexceeding its requested size by 2578 bytes.\n\nThe next URB then reads dev-\u003epartial_len (4094) back from the same\n1516-byte buffer and dev-\u003epartial_rem (65535 - 4094 = 61441) from\nthe new URB\u0027s ~4KB skb, both well past their allocations, and\ndelivers the spliced result as a 64KB \"frame\" to the network\nstack.\n\nBail out of rx_fixup after scheduling the re-enable work; the\nremainder of a reboot-marker URB is not meaningful packet data.\nThis restores the invariant that partial_len \u003c CX82310_MTU + 2 on\nthe save path, since every other route there has already passed\nthe MTU check."
          }
        ],
        "id": "CVE-2026-98025",
        "lastModified": "2026-09-25T11:17:31.110",
        "metrics": {},
        "published": "2026-09-25T11:17:31.110",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/237c9ae7145772af147e4665f158938350fa5658"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/3bd689409bb1c93bdc6dd8ec6cbf5161bc4f0287"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/5d50e90add8b4a978395e893e81954d19d58a7c5"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/659654654eb140851467af41d610473c100c7975"
          }
        ],
        "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "vulnStatus": "Received"
      }
    }
  }
}



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…