CVE-2026-72446 (GCVE-0-2026-72446)

Vulnerability from cvelistv5 – Published: 2026-08-15 05:56 – Updated: 2026-08-17 05:44
VLAI
Title
ALSA: usb-audio: qcom: reject stream disable with no active interface
Summary
In the Linux kernel, the following vulnerability has been resolved: ALSA: usb-audio: qcom: reject stream disable with no active interface handle_uaudio_stream_req() resolves an interface index with info_idx_from_ifnum(), which returns -EINVAL when no interface matches. The enable branch and the response: cleanup label both guard against a negative index, but the disable branch does not: it forms info = &uadev[pcm_card_num].info[info_idx] and dereferences it. uadev[].info is a pointer allocated only when a stream is first enabled, so a negative info_idx on the disable path is unsafe in two ways: - If the card was never enabled, .info is NULL and &info[-EINVAL] is a wild pointer; reading info->data_ep_pipe faults (kernel oops). - If the card was enabled at least once (.info allocated) and the disable names an interface that does not match, &info[-EINVAL] points before the allocation; info->data_ep_pipe / info->sync_ep_pipe are an out-of-bounds slab read and, when non-zero, an out-of-bounds 4-byte write (both pipe fields are cleared to 0). That is memory corruption, not just a NULL dereference. The request is reachable from unprivileged local userspace over AF_QIPCRTR. Reject a disable request with no resolved interface, matching the guard the enable path already has.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 326bbc348298ab0946c5560defe024a5f6ef28bb , < 25a867aa5e67a84333fa6e5c21292c5bcff86b90 (git)
Affected: 326bbc348298ab0946c5560defe024a5f6ef28bb , < a22356d1f731553e99aa2707dbd38c659bdd28d8 (git)
Affected: 326bbc348298ab0946c5560defe024a5f6ef28bb , < bdb640be82e645e2828731648f485224d0c2587b (git)
guessed Create a notification for this product.
Linux Linux Affected: 6.16
Unaffected: 0 , < 6.16 (semver)
Unaffected: 6.18.40 , ≤ 6.18.* (semver)
Unaffected: 7.1.5 , ≤ 7.1.* (semver)
Unaffected: 7.2 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "sound/usb/qcom/qc_audio_offload.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "25a867aa5e67a84333fa6e5c21292c5bcff86b90",
              "status": "affected",
              "version": "326bbc348298ab0946c5560defe024a5f6ef28bb",
              "versionType": "git"
            },
            {
              "lessThan": "a22356d1f731553e99aa2707dbd38c659bdd28d8",
              "status": "affected",
              "version": "326bbc348298ab0946c5560defe024a5f6ef28bb",
              "versionType": "git"
            },
            {
              "lessThan": "bdb640be82e645e2828731648f485224d0c2587b",
              "status": "affected",
              "version": "326bbc348298ab0946c5560defe024a5f6ef28bb",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "sound/usb/qcom/qc_audio_offload.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.16"
            },
            {
              "lessThan": "6.16",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.40",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.1.*",
              "status": "unaffected",
              "version": "7.1.5",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.2",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.40",
                  "versionStartIncluding": "6.16",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.1.5",
                  "versionStartIncluding": "6.16",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2",
                  "versionStartIncluding": "6.16",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nALSA: usb-audio: qcom: reject stream disable with no active interface\n\nhandle_uaudio_stream_req() resolves an interface index with\ninfo_idx_from_ifnum(), which returns -EINVAL when no interface matches.\nThe enable branch and the response: cleanup label both guard against a\nnegative index, but the disable branch does not: it forms\ninfo = \u0026uadev[pcm_card_num].info[info_idx] and dereferences it.\n\nuadev[].info is a pointer allocated only when a stream is first enabled,\nso a negative info_idx on the disable path is unsafe in two ways:\n\n - If the card was never enabled, .info is NULL and \u0026info[-EINVAL] is a\n   wild pointer; reading info-\u003edata_ep_pipe faults (kernel oops).\n\n - If the card was enabled at least once (.info allocated) and the\n   disable names an interface that does not match, \u0026info[-EINVAL] points\n   before the allocation; info-\u003edata_ep_pipe / info-\u003esync_ep_pipe are an\n   out-of-bounds slab read and, when non-zero, an out-of-bounds 4-byte\n   write (both pipe fields are cleared to 0). That is memory corruption,\n   not just a NULL dereference.\n\nThe request is reachable from unprivileged local userspace over\nAF_QIPCRTR. Reject a disable request with no resolved interface, matching\nthe guard the enable path already has."
        }
      ],
      "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 - Exploitation requires sending a crafted QMI stream-disable request via the AF_QIPCRTR local socket API into the kernel-registered UAUDIO QMI server; it is not reachable over the network or by plugging in USB alone.\nAC:L - An attacker can deterministically trigger the bug by sending enable=0 with a valid usb_token for a probed USB-audio card when no matching interface exists; no race or attacker-uncontrollable memory layout is required.\nPR:L - AF_QIPCRTR permits unprivileged local userspace to deliver QMI requests to the registered service without root or CAP_NET_ADMIN, and the fix commit explicitly states the path is reachable from unprivileged userspace.\nUI:N - Exploitation is a direct programmatic QMI disable request and does not require the victim to mount filesystems, open files, or perform any interactive action at trigger time.\nS:U - The flaw corrupts kernel heap memory within the same kernel security authority; it does not by itself cross a VM, IOMMU, or sandbox boundary to another security domain.\nC:H - When a card was previously enabled, a failed interface lookup yields a negative index that performs an out-of-bounds slab read of endpoint pipe fields before the allocated intf_info array, enabling kernel memory disclosure.\nI:H - The same out-of-bounds path can perform up to two conditional 4-byte writes clearing data_ep_pipe and sync_ep_pipe in adjacent slab memory, constituting exploitable kernel heap corruption rather than a benign crash.\nA:H - If the card was never enabled, info is NULL and indexing with -EINVAL dereferences a wild pointer reading data_ep_pipe, causing a kernel oops/panic and complete local denial of service."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-17T05:44:17.542Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/25a867aa5e67a84333fa6e5c21292c5bcff86b90"
        },
        {
          "url": "https://git.kernel.org/stable/c/a22356d1f731553e99aa2707dbd38c659bdd28d8"
        },
        {
          "url": "https://git.kernel.org/stable/c/bdb640be82e645e2828731648f485224d0c2587b"
        }
      ],
      "title": "ALSA: usb-audio: qcom: reject stream disable with no active interface",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-72446",
    "datePublished": "2026-08-15T05:56:56.470Z",
    "dateReserved": "2026-08-09T03:40:39.930Z",
    "dateUpdated": "2026-08-17T05:44:17.542Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-72446",
      "date": "2026-09-22",
      "epss": "0.00153",
      "percentile": "0.04858"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "sound/usb/qcom/qc_audio_offload.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "25a867aa5e67a84333fa6e5c21292c5bcff86b90",
                    "status": "affected",
                    "version": "326bbc348298ab0946c5560defe024a5f6ef28bb",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "a22356d1f731553e99aa2707dbd38c659bdd28d8",
                    "status": "affected",
                    "version": "326bbc348298ab0946c5560defe024a5f6ef28bb",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "bdb640be82e645e2828731648f485224d0c2587b",
                    "status": "affected",
                    "version": "326bbc348298ab0946c5560defe024a5f6ef28bb",
                    "versionType": "git"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "sound/usb/qcom/qc_audio_offload.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "status": "affected",
                    "version": "6.16"
                  },
                  {
                    "lessThan": "6.16",
                    "status": "unaffected",
                    "version": "0",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.18.*",
                    "status": "unaffected",
                    "version": "6.18.40",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "7.1.*",
                    "status": "unaffected",
                    "version": "7.1.5",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "*",
                    "status": "unaffected",
                    "version": "7.2",
                    "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\nALSA: usb-audio: qcom: reject stream disable with no active interface\n\nhandle_uaudio_stream_req() resolves an interface index with\ninfo_idx_from_ifnum(), which returns -EINVAL when no interface matches.\nThe enable branch and the response: cleanup label both guard against a\nnegative index, but the disable branch does not: it forms\ninfo = \u0026uadev[pcm_card_num].info[info_idx] and dereferences it.\n\nuadev[].info is a pointer allocated only when a stream is first enabled,\nso a negative info_idx on the disable path is unsafe in two ways:\n\n - If the card was never enabled, .info is NULL and \u0026info[-EINVAL] is a\n   wild pointer; reading info-\u003edata_ep_pipe faults (kernel oops).\n\n - If the card was enabled at least once (.info allocated) and the\n   disable names an interface that does not match, \u0026info[-EINVAL] points\n   before the allocation; info-\u003edata_ep_pipe / info-\u003esync_ep_pipe are an\n   out-of-bounds slab read and, when non-zero, an out-of-bounds 4-byte\n   write (both pipe fields are cleared to 0). That is memory corruption,\n   not just a NULL dereference.\n\nThe request is reachable from unprivileged local userspace over\nAF_QIPCRTR. Reject a disable request with no resolved interface, matching\nthe guard the enable path already has."
          }
        ],
        "id": "CVE-2026-72446",
        "lastModified": "2026-08-17T06:19:12.043",
        "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-08-15T06:22:18.500",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/25a867aa5e67a84333fa6e5c21292c5bcff86b90"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/a22356d1f731553e99aa2707dbd38c659bdd28d8"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/bdb640be82e645e2828731648f485224d0c2587b"
          }
        ],
        "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "vulnStatus": "Received"
      }
    },
    "redhat_vex": {
      "aggregate_severity": "Important",
      "current_release_date": "2026-09-17T07:35:39+00:00",
      "cve": "CVE-2026-72446",
      "id": "CVE-2026-72446",
      "initial_release_date": "2026-08-15T00:00:00+00:00",
      "product_status:known_affected": "184",
      "product_status:known_not_affected": "90",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: ALSA: usb-audio: qcom: reject stream disable with no active interface",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-72446.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "important",
      "current_release_date": "2026-09-01T17:13:39Z",
      "cve": "CVE-2026-72446",
      "id": "CVE-2026-72446",
      "initial_release_date": "2026-08-27T16:52:36Z",
      "product_status:known_not_affected": "362",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2026-72446",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2026-72446.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…

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…