GCVE Workshop - 22 September 2026 (14:00-18:00), Luxembourg Before The Vulnopticon Conference - Registration

CVE-2026-90032 (GCVE-0-2026-90032)

Vulnerability from cvelistv5 – Published: 2026-09-16 10:33 – Updated: 2026-09-16 14:41
VLAI
Title
media: usbtv: keep device alive while ALSA card exists
Summary
In the Linux kernel, the following vulnerability has been resolved: media: usbtv: keep device alive while ALSA card exists The ALSA PCM callbacks store the driver state in pcm->private_data. An open PCM file can outlive USB disconnect because usbtv_audio_free() uses snd_card_free_when_closed(). The disconnect path can then drop the V4L2 device reference and free struct usbtv before ALSA releases the substream, so a later close dereferences freed memory in snd_usbtv_pcm_close(). Take a V4L2 device reference for the ALSA card and drop it from the card private_free callback. This keeps struct usbtv valid until ALSA has closed the remaining files and freed the card.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 63ddf68de52efaac40a9287e44266ac30e71dd36 , < 97b5e8b22b98e287481a97a9a4cfebbb348738a5 (git)
Affected: 63ddf68de52efaac40a9287e44266ac30e71dd36 , < 503be26ff888cb3576e55d251895d290e8146f27 (git)
Affected: 63ddf68de52efaac40a9287e44266ac30e71dd36 , < be0f7745f883386e5263b4e475686a81dfa87175 (git)
Affected: 63ddf68de52efaac40a9287e44266ac30e71dd36 , < 67374e3a00814dcdd46e9feca61f69f7f2d81957 (git)
Affected: 63ddf68de52efaac40a9287e44266ac30e71dd36 , < 239d1683e08b2aee2a15ef35706e1ea9a76681d8 (git)
Affected: 63ddf68de52efaac40a9287e44266ac30e71dd36 , < 7690a86b193271322cd31ab77349a87aa10858e4 (git)
Affected: 63ddf68de52efaac40a9287e44266ac30e71dd36 , < 1618257cb0aba4ce342ae8c0228368c24161f5fb (git)
Affected: 63ddf68de52efaac40a9287e44266ac30e71dd36 , < fc530fe168bb2b745a93f553ad21fc25fd9cba3d (git)
guessed Create a notification for this product.
Linux Linux Affected: 3.18
Unaffected: 0 , < 3.18 (semver)
Unaffected: 5.10.270 , ≤ 5.10.* (semver)
Unaffected: 5.15.221 , ≤ 5.15.* (semver)
Unaffected: 6.1.188 , ≤ 6.1.* (semver)
Unaffected: 6.6.157 , ≤ 6.6.* (semver)
Unaffected: 6.12.110 , ≤ 6.12.* (semver)
Unaffected: 6.18.51 , ≤ 6.18.* (semver)
Unaffected: 7.2.5 , ≤ 7.2.* (semver)
Unaffected: 7.3-rc1 , ≤ * (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/media/usb/usbtv/usbtv-audio.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "97b5e8b22b98e287481a97a9a4cfebbb348738a5",
              "status": "affected",
              "version": "63ddf68de52efaac40a9287e44266ac30e71dd36",
              "versionType": "git"
            },
            {
              "lessThan": "503be26ff888cb3576e55d251895d290e8146f27",
              "status": "affected",
              "version": "63ddf68de52efaac40a9287e44266ac30e71dd36",
              "versionType": "git"
            },
            {
              "lessThan": "be0f7745f883386e5263b4e475686a81dfa87175",
              "status": "affected",
              "version": "63ddf68de52efaac40a9287e44266ac30e71dd36",
              "versionType": "git"
            },
            {
              "lessThan": "67374e3a00814dcdd46e9feca61f69f7f2d81957",
              "status": "affected",
              "version": "63ddf68de52efaac40a9287e44266ac30e71dd36",
              "versionType": "git"
            },
            {
              "lessThan": "239d1683e08b2aee2a15ef35706e1ea9a76681d8",
              "status": "affected",
              "version": "63ddf68de52efaac40a9287e44266ac30e71dd36",
              "versionType": "git"
            },
            {
              "lessThan": "7690a86b193271322cd31ab77349a87aa10858e4",
              "status": "affected",
              "version": "63ddf68de52efaac40a9287e44266ac30e71dd36",
              "versionType": "git"
            },
            {
              "lessThan": "1618257cb0aba4ce342ae8c0228368c24161f5fb",
              "status": "affected",
              "version": "63ddf68de52efaac40a9287e44266ac30e71dd36",
              "versionType": "git"
            },
            {
              "lessThan": "fc530fe168bb2b745a93f553ad21fc25fd9cba3d",
              "status": "affected",
              "version": "63ddf68de52efaac40a9287e44266ac30e71dd36",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/media/usb/usbtv/usbtv-audio.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "3.18"
            },
            {
              "lessThan": "3.18",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.10.*",
              "status": "unaffected",
              "version": "5.10.270",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.15.*",
              "status": "unaffected",
              "version": "5.15.221",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.188",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.157",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.110",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.51",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.2.*",
              "status": "unaffected",
              "version": "7.2.5",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.3-rc1",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.10.270",
                  "versionStartIncluding": "3.18",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.15.221",
                  "versionStartIncluding": "3.18",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.188",
                  "versionStartIncluding": "3.18",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.157",
                  "versionStartIncluding": "3.18",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.110",
                  "versionStartIncluding": "3.18",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.51",
                  "versionStartIncluding": "3.18",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2.5",
                  "versionStartIncluding": "3.18",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.3-rc1",
                  "versionStartIncluding": "3.18",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nmedia: usbtv: keep device alive while ALSA card exists\n\nThe ALSA PCM callbacks store the driver state in pcm-\u003eprivate_data. An\nopen PCM file can outlive USB disconnect because usbtv_audio_free() uses\nsnd_card_free_when_closed(). The disconnect path can then drop the V4L2\ndevice reference and free struct usbtv before ALSA releases the substream,\nso a later close dereferences freed memory in snd_usbtv_pcm_close().\n\nTake a V4L2 device reference for the ALSA card and drop it from the card\nprivate_free callback. This keeps struct usbtv valid until ALSA has closed\nthe remaining files and freed the card."
        }
      ],
      "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 UAF is reached locally by opening the usbtv ALSA capture PCM, forcing usbtv_disconnect() via USBDEVFS_DISCONNECT or sysfs unbind on an already-bound USBTV007, then closing the PCM fd; there is no network or packet path. This matches AV:L scoring of analogous USB disconnect UAFs (CVE-2026-80971, CVE-2026-64585); physical unplug is only an extra path.\nAC:L - The attacker fully controls the sequence: open /dev/snd/pcmC*D*c so PCM callbacks pin pcm-\u003eprivate_data, issue USBDEVFS_DISCONNECT so snd_card_free_when_closed() returns without waiting, then close. That close deterministically hits freed struct usbtv in snd_usbtv_pcm_close(); no attacker-uncontrollable race or layout is required.\nPR:L - USBDEVFS_DISCONNECT has no capable() check, only write access to /dev/bus/usb that udev uaccess/plugdev rules grant seat users, and snd_pcm_open() has no capability gate on the capture PCM node (audio group/uaccess). An unprivileged local account suffices; init-namespace root is not required.\nUI:N - The attacker performs open, disconnect, and close on their own fds against an already-attached USBTV007 (capture kiosk, digitizer, or surveillance station). No separate victim action such as plugging a device or clicking is required during exploitation.\nS:U - The slab use-after-free of struct usbtv and the PCM close/trigger callbacks run entirely in the host kernel. This is ordinary local privilege escalation, not a VM, IOMMU, or sandbox boundary escape.\nC:H - snd_usbtv_pcm_close() and snd_usbtv_card_trigger() read fields of the kfree()\u0027d struct usbtv (snd_stream, snd_trigger, snd_bulk_urb). Reclaiming that slab lets the attacker supply pointer-rich state those paths then read, enabling kernel disclosure as with other heap UAFs.\nI:H - Close can atomic_set snd_stream and schedule_work() on the freed usbtv.snd_trigger work_struct, and snd_pcm_drop may call trigger STOP on the same freed object. A reclaimed fake usbtv plus workqueue execution is a control-flow hijack primitive, so integrity impact is High.\nA:H - Use-after-free of struct usbtv in snd_usbtv_pcm_close() (and in usbtv_audio_urb_received if capture was running when USB core kills the URB after disconnect) oopses or panics the kernel. The attacker can repeat disconnect/close to crash on demand, so availability impact is High."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-09-16T14:41:46.318Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/97b5e8b22b98e287481a97a9a4cfebbb348738a5"
        },
        {
          "url": "https://git.kernel.org/stable/c/503be26ff888cb3576e55d251895d290e8146f27"
        },
        {
          "url": "https://git.kernel.org/stable/c/be0f7745f883386e5263b4e475686a81dfa87175"
        },
        {
          "url": "https://git.kernel.org/stable/c/67374e3a00814dcdd46e9feca61f69f7f2d81957"
        },
        {
          "url": "https://git.kernel.org/stable/c/239d1683e08b2aee2a15ef35706e1ea9a76681d8"
        },
        {
          "url": "https://git.kernel.org/stable/c/7690a86b193271322cd31ab77349a87aa10858e4"
        },
        {
          "url": "https://git.kernel.org/stable/c/1618257cb0aba4ce342ae8c0228368c24161f5fb"
        },
        {
          "url": "https://git.kernel.org/stable/c/fc530fe168bb2b745a93f553ad21fc25fd9cba3d"
        }
      ],
      "title": "media: usbtv: keep device alive while ALSA card exists",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-90032",
    "datePublished": "2026-09-16T10:33:33.197Z",
    "dateReserved": "2026-09-11T19:38:34.782Z",
    "dateUpdated": "2026-09-16T14:41:46.318Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "nvd": "{\"cve\":{\"id\":\"CVE-2026-90032\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2026-09-16T11:17:16.310\",\"lastModified\":\"2026-09-16T15:18:26.280\",\"vulnStatus\":\"Received\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\nmedia: usbtv: keep device alive while ALSA card exists\\n\\nThe ALSA PCM callbacks store the driver state in pcm-\u003eprivate_data. An\\nopen PCM file can outlive USB disconnect because usbtv_audio_free() uses\\nsnd_card_free_when_closed(). The disconnect path can then drop the V4L2\\ndevice reference and free struct usbtv before ALSA releases the substream,\\nso a later close dereferences freed memory in snd_usbtv_pcm_close().\\n\\nTake a V4L2 device reference for the ALSA card and drop it from the card\\nprivate_free callback. This keeps struct usbtv valid until ALSA has closed\\nthe remaining files and freed the card.\"}],\"affected\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"affectedData\":[{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"unaffected\",\"programFiles\":[\"drivers/media/usb/usbtv/usbtv-audio.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"63ddf68de52efaac40a9287e44266ac30e71dd36\",\"lessThan\":\"97b5e8b22b98e287481a97a9a4cfebbb348738a5\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"63ddf68de52efaac40a9287e44266ac30e71dd36\",\"lessThan\":\"503be26ff888cb3576e55d251895d290e8146f27\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"63ddf68de52efaac40a9287e44266ac30e71dd36\",\"lessThan\":\"be0f7745f883386e5263b4e475686a81dfa87175\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"63ddf68de52efaac40a9287e44266ac30e71dd36\",\"lessThan\":\"67374e3a00814dcdd46e9feca61f69f7f2d81957\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"63ddf68de52efaac40a9287e44266ac30e71dd36\",\"lessThan\":\"239d1683e08b2aee2a15ef35706e1ea9a76681d8\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"63ddf68de52efaac40a9287e44266ac30e71dd36\",\"lessThan\":\"7690a86b193271322cd31ab77349a87aa10858e4\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"63ddf68de52efaac40a9287e44266ac30e71dd36\",\"lessThan\":\"1618257cb0aba4ce342ae8c0228368c24161f5fb\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"63ddf68de52efaac40a9287e44266ac30e71dd36\",\"lessThan\":\"fc530fe168bb2b745a93f553ad21fc25fd9cba3d\",\"versionType\":\"git\",\"status\":\"affected\"}]},{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"affected\",\"programFiles\":[\"drivers/media/usb/usbtv/usbtv-audio.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"3.18\",\"status\":\"affected\"},{\"version\":\"0\",\"lessThan\":\"3.18\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"5.10.270\",\"lessThanOrEqual\":\"5.10.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"5.15.221\",\"lessThanOrEqual\":\"5.15.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.1.188\",\"lessThanOrEqual\":\"6.1.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.6.157\",\"lessThanOrEqual\":\"6.6.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.12.110\",\"lessThanOrEqual\":\"6.12.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.18.51\",\"lessThanOrEqual\":\"6.18.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"7.2.5\",\"lessThanOrEqual\":\"7.2.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"7.3-rc1\",\"lessThanOrEqual\":\"*\",\"versionType\":\"original_commit_for_fix\",\"status\":\"unaffected\"}]}]}],\"metrics\":{\"cvssMetricV31\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"type\":\"Secondary\",\"cvssData\":{\"version\":\"3.1\",\"vectorString\":\"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H\",\"baseScore\":7.8,\"baseSeverity\":\"HIGH\",\"attackVector\":\"LOCAL\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"LOW\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"HIGH\",\"integrityImpact\":\"HIGH\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":1.8,\"impactScore\":5.9}]},\"references\":[{\"url\":\"https://git.kernel.org/stable/c/1618257cb0aba4ce342ae8c0228368c24161f5fb\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/239d1683e08b2aee2a15ef35706e1ea9a76681d8\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/503be26ff888cb3576e55d251895d290e8146f27\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/67374e3a00814dcdd46e9feca61f69f7f2d81957\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/7690a86b193271322cd31ab77349a87aa10858e4\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/97b5e8b22b98e287481a97a9a4cfebbb348738a5\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/be0f7745f883386e5263b4e475686a81dfa87175\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/fc530fe168bb2b745a93f553ad21fc25fd9cba3d\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}"
  }
}



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…