{
  "affected": [
    {
      "ecosystem_specific": {
        "urgency": "not yet assigned"
      },
      "package": {
        "ecosystem": "Debian:12",
        "name": "linux"
      },
      "ranges": [
        {
          "events": [
            {
              "introduced": "0"
            },
            {
              "fixed": "6.1.176-1"
            }
          ],
          "type": "ECOSYSTEM"
        }
      ]
    },
    {
      "ecosystem_specific": {
        "urgency": "not yet assigned"
      },
      "package": {
        "ecosystem": "Debian:13",
        "name": "linux"
      },
      "ranges": [
        {
          "events": [
            {
              "introduced": "0"
            },
            {
              "fixed": "6.12.85-1"
            }
          ],
          "type": "ECOSYSTEM"
        }
      ]
    },
    {
      "ecosystem_specific": {
        "urgency": "not yet assigned"
      },
      "package": {
        "ecosystem": "Debian:14",
        "name": "linux"
      },
      "ranges": [
        {
          "events": [
            {
              "introduced": "0"
            },
            {
              "fixed": "6.19.14-1"
            }
          ],
          "type": "ECOSYSTEM"
        }
      ]
    }
  ],
  "details": "In the Linux kernel, the following vulnerability has been resolved:  ALSA: 6fire: fix use-after-free on disconnect  In usb6fire_chip_abort(), the chip struct is allocated as the card's private data (via snd_card_new with sizeof(struct sfire_chip)).  When snd_card_free_when_closed() is called and no file handles are open, the card and embedded chip are freed synchronously.  The subsequent chip-\u003ecard = NULL write then hits freed slab memory.  Call trace:   usb6fire_chip_abort sound/usb/6fire/chip.c:59 [inline]   usb6fire_chip_disconnect+0x348/0x358 sound/usb/6fire/chip.c:182   usb_unbind_interface+0x1a8/0x88c drivers/usb/core/driver.c:458   ...   hub_event+0x1a04/0x4518 drivers/usb/core/hub.c:5953  Fix by moving the card lifecycle out of usb6fire_chip_abort() and into usb6fire_chip_disconnect().  The card pointer is saved in a local before any teardown, snd_card_disconnect() is called first to prevent new opens, URBs are aborted while chip is still valid, and snd_card_free_when_closed() is called last so chip is never accessed after the card may be freed.",
  "id": "DEBIAN-CVE-2026-31581",
  "modified": "2026-09-14T16:47:34.933616502Z",
  "published": "2026-04-24T15:16:32.797Z",
  "references": [
    {
      "type": "ADVISORY",
      "url": "https://security-tracker.debian.org/tracker/CVE-2026-31581"
    }
  ],
  "severity": [
    {
      "score": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
      "type": "CVSS_V3"
    }
  ],
  "upstream": [
    "CVE-2026-31581"
  ]
}