« Back to list

CVE-2026-90145

Status: ReceivedHigh (7.1)—

In the Linux kernel, the following vulnerability has been resolved:

hinic3: Fix skb linearization mismatch and drop skb when skb_checksum_help() failed

Previously, hinic3_send_one_skb() cached the skb fragment count before calling hinic3_tx_offload(). If hinic3_tx_csum() falls back to skb_checksum_help() for unsupported tunnel packets, the skb may be linearized. Continuing to build the TX descriptor with the stale fragment count leads to a descriptor mismatch, which can trigger out-of-bounds DMA reads or IOMMU faults.

Furthermore, the old code ignored the return value of skb_checksum_help(), transmitting corrupted packets with incomplete checksums upon failure.

Read full descriptionShow less

Fix this by: 1. Moving the hinic3_tx_offload() call before calculating 'num_sge' to ensure the correct fragment count is used if the SKB is linearized. 2. Propagating skb_checksum_help() errors and returning HINIC3_TX_OFFLOAD_INVALID to properly drop the skb.

CVSS

Exploitation probability (EPSS)

EPSS (Exploit Prediction Scoring System, FIRST) estimates how likely a vulnerability is to be exploited in the wild within 30 days. It complements CVSS (impact) and CISA KEV (confirmed exploitation).

🎯 ATT&CK techniques

How this vulnerability is exploited and what the attacker gains, in MITRE ATT&CK terms.

Vuln. local (AV:L/PR:L) en driver kernel permite DoS/crash por mismatch DMA. Acceso local con privilegios escalados (T1068). Impacto: denial of service (T1499.004) e integridad de datos (T1565.001) por checksums incompletos.

Inferred by our analysis agent from the official description, CVSS vector and CWE, and checked by a supervisor. May contain errors.

🛡️ ATT&CK mitigations that cover these techniques

Affected technologies (1)

⚠ AI-inferred from the description — NVD hasn't analyzed this CVE yet, these aren't verified CPEs.

References

Raw JSON (NVD)

Show
{
  "id": "CVE-2026-90145",
  "cveTags": [],
  "metrics": {
    "cvssMetricV31": [
      {
        "type": "Secondary",
        "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "cvssData": {
          "scope": "UNCHANGED",
          "version": "3.1",
          "baseScore": 7.1,
          "attackVector": "LOCAL",
          "baseSeverity": "HIGH",
          "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H",
          "integrityImpact": "NONE",
          "userInteraction": "NONE",
          "attackComplexity": "LOW",
          "availabilityImpact": "HIGH",
          "privilegesRequired": "LOW",
          "confidentialityImpact": "HIGH"
        },
        "impactScore": 5.2,
        "exploitabilityScore": 1.8
      }
    ]
  },
  "affected": [
    {
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      "affectedData": [
        {
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "product": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "17fcb3dc12bbee8ec3e32ca1f60898f252e06b2d",
              "lessThan": "e794cdc5c369c1b06359e2fe03a8d9270f56bead",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "17fcb3dc12bbee8ec3e32ca1f60898f252e06b2d",
              "lessThan": "96c3959770386b2913c62005f0d0c3151e0c01c3",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "17fcb3dc12bbee8ec3e32ca1f60898f252e06b2d",
              "lessThan": "d0c2bed6927cbfa2cb51f240b4812bf6916bce0e",
              "versionType": "git"
            }
          ],
          "programFiles": [
            "drivers/net/ethernet/huawei/hinic3/hinic3_tx.c"
          ],
          "defaultStatus": "unaffected"
        },
        {
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "product": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.16"
            },
            {
              "status": "unaffected",
              "version": "0",
              "lessThan": "6.16",
              "versionType": "semver"
            },
            {
              "status": "unaffected",
              "version": "6.18.52",
              "versionType": "semver",
              "lessThanOrEqual": "6.18.*"
            },
            {
              "status": "unaffected",
              "version": "7.2.6",
              "versionType": "semver",
              "lessThanOrEqual": "7.2.*"
            },
            {
              "status": "unaffected",
              "version": "7.3-rc1",
              "versionType": "original_commit_for_fix",
              "lessThanOrEqual": "*"
            }
          ],
          "programFiles": [
            "drivers/net/ethernet/huawei/hinic3/hinic3_tx.c"
          ],
          "defaultStatus": "affected"
        }
      ]
    }
  ],
  "published": "2026-09-17T17:17:07.350",
  "references": [
    {
      "url": "https://git.kernel.org/stable/c/96c3959770386b2913c62005f0d0c3151e0c01c3",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/d0c2bed6927cbfa2cb51f240b4812bf6916bce0e",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/e794cdc5c369c1b06359e2fe03a8d9270f56bead",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    }
  ],
  "vulnStatus": "Received",
  "descriptions": [
    {
      "lang": "en",
      "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nhinic3: Fix skb linearization mismatch and drop skb when skb_checksum_help() failed\n\nPreviously, hinic3_send_one_skb() cached the skb fragment count before\ncalling hinic3_tx_offload(). If hinic3_tx_csum() falls back to\nskb_checksum_help() for unsupported tunnel packets, the skb may be\nlinearized. Continuing to build the TX descriptor with the stale\nfragment count leads to a descriptor mismatch, which can trigger\nout-of-bounds DMA reads or IOMMU faults.\n\nFurthermore, the old code ignored the return value of skb_checksum_help(),\ntransmitting corrupted packets with incomplete checksums upon failure.\n\nFix this by:\n1. Moving the hinic3_tx_offload() call before calculating 'num_sge' to\n   ensure the correct fragment count is used if the SKB is linearized.\n2. Propagating skb_checksum_help() errors and returning\n   HINIC3_TX_OFFLOAD_INVALID to properly drop the skb."
    }
  ],
  "lastModified": "2026-09-18T18:17:43.853",
  "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
}