{
  "affected": [
    {
      "ecosystem_specific": {
        "urgency": "not yet assigned"
      },
      "package": {
        "ecosystem": "Debian:12",
        "name": "linux"
      },
      "ranges": [
        {
          "events": [
            {
              "introduced": "0"
            }
          ],
          "type": "ECOSYSTEM"
        }
      ]
    },
    {
      "ecosystem_specific": {
        "urgency": "not yet assigned"
      },
      "package": {
        "ecosystem": "Debian:13",
        "name": "linux"
      },
      "ranges": [
        {
          "events": [
            {
              "introduced": "0"
            },
            {
              "fixed": "6.12.113-1"
            }
          ],
          "type": "ECOSYSTEM"
        }
      ]
    },
    {
      "ecosystem_specific": {
        "urgency": "not yet assigned"
      },
      "package": {
        "ecosystem": "Debian:14",
        "name": "linux"
      },
      "ranges": [
        {
          "events": [
            {
              "introduced": "0"
            },
            {
              "fixed": "7.2.10-1"
            }
          ],
          "type": "ECOSYSTEM"
        }
      ]
    }
  ],
  "details": "In the Linux kernel, the following vulnerability has been resolved:  ALSA: ua101: reject mismatched capture/playback packet sizes  detect_usb_format() cross-checks bSubframeSize, bBitResolution and tSamFreq between the capture and playback interfaces, but never relates the two endpoints' wMaxPacketSize and bNrChannels.  Each playback URB gets a buffer of ua-\u003eplayback.max_packet_bytes, while the number of bytes written into it is derived from the capture stream: capture_urb_complete() computes frames from the received capture packet and capture.frame_bytes, and start_usb_playback() and playback_work() multiply that by playback.frame_bytes.  A device declaring a large capture wMaxPacketSize with few capture channels and a small playback wMaxPacketSize with many playback channels therefore memset()s and memcpy()s past the end of the playback buffer, in open() of the PCM node the driver registers during probe. usb_submit_urb() rejects the over-long iso_frame_desc[0].length with -EMSGSIZE, but only after the write.  Reject such descriptors at probe time.  Genuine UA-101/UA-1000 hardware declares proportional packet sizes and is unaffected.    BUG: KASAN: slab-out-of-bounds in start_usb_playback (sound/usb/misc/ua101.c:586)   Write of size 2048 at addr ffff8881098f3c00 by task exploit/5021   Call Trace:    __asan_memset (mm/kasan/shadow.c:84)    start_usb_playback (sound/usb/misc/ua101.c:586)    playback_pcm_open (sound/usb/misc/ua101.c:679)    snd_pcm_open_substream (sound/core/pcm_native.c:2829)    snd_pcm_open (sound/core/pcm_native.c:2865 sound/core/pcm_native.c:2932)    snd_pcm_playback_open (sound/core/pcm_native.c:2891)    snd_open (sound/core/sound.c:166)    chrdev_open (fs/char_dev.c:411)    do_dentry_open (fs/open.c:996)    vfs_open (fs/open.c:1101)    path_openat (fs/namei.c:4837 fs/namei.c:5000)    do_file_open (fs/namei.c:5029)    do_sys_openat2 (fs/open.c:1417)    __x64_sys_openat (fs/open.c:1423 fs/open.c:1439 fs/open.c:1434)    do_syscall_64 (arch/x86/entry/syscall_64.c:61 arch/x86/entry/syscall_64.c:84)    entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:121)    The buggy address belongs to the object at ffff8881098f3c00    which belongs to the cache kmalloc-192 of size 192   The buggy address is located 0 bytes inside of    allocated 168-byte region [ffff8881098f3c00, ffff8881098f3ca8)",
  "id": "DEBIAN-CVE-2026-98741",
  "modified": "2026-10-19T04:47:42.680510422Z",
  "references": [
    {
      "type": "ADVISORY",
      "url": "https://security-tracker.debian.org/tracker/CVE-2026-98741"
    }
  ],
  "upstream": [
    "CVE-2026-98741"
  ]
}