{"id":21303,"date":"2026-09-12T04:31:00","date_gmt":"2026-09-11T20:31:00","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-80970"},"modified":"2026-09-12T04:31:00","modified_gmt":"2026-09-11T20:31:00","slug":"cve-2026-80970","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-80970","title":{"rendered":"CVE-2026-80970 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nALSA: FCP: do not cop"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>ALSA: FCP: do not copy out an uninitialised init response<\/p>\n<p>fcp_ioctl_init() allocates its response buffer with kmalloc() and copies<br \/>\nthe whole buffer back to userspace:<\/p>\n<p>\tbuf_size = init.step0_resp_size + init.step2_resp_size;<\/p>\n<p>\tvoid *resp __free(kfree) =<br \/>\n\t\tkmalloc(buf_size, GFP_KERNEL);<br \/>\n\t&#8230;<br \/>\n\tif (copy_to_user(arg-&gt;resp, resp, buf_size))<br \/>\n\t\treturn -EFAULT;<\/p>\n<p>Nothing clears the buffer, and the only writer of its leading<br \/>\nstep0_resp_size bytes is the step-0 control transfer:<\/p>\n<p>\terr = snd_usb_ctl_msg(dev, usb_rcvctrlpipe(dev, 0),<br \/>\n\t\tFCP_USB_REQ_STEP0,<br \/>\n\t\tUSB_RECIP_INTERFACE | USB_TYPE_CLASS | USB_DIR_IN,<br \/>\n\t\t0, private-&gt;bInterfaceNumber,<br \/>\n\t\tstep0_resp, private-&gt;step0_resp_size);<br \/>\n\tif (err &lt; 0)<br \/>\n\t\treturn err;<\/p>\n<p>usb_fill_control_urb() does not set URB_SHORT_NOT_OK, so a short or<br \/>\nzero-length data stage completes with status 0 and snd_usb_ctl_msg()<br \/>\nreturns a small actual_length.  The only check is err &lt; 0, so a short<br \/>\ntransfer is accepted as success.<\/p>\n<p>snd_usb_ctl_msg() copies the full size back unconditionally:<\/p>\n<p>\tbuf = kmemdup(data, size, GFP_KERNEL);<br \/>\n\t&#8230;<br \/>\n\tmemcpy(data, buf, size);<\/p>\n<p>Bytes the device never wrote are therefore restored into resp unchanged<br \/>\nand copied to userspace.  step0_resp_size and step2_resp_size are each<br \/>\nvalidated only to 1..255, so the caller also picks the slab cache, from<br \/>\nkmalloc-8 up to kmalloc-512.<\/p>\n<p>On 7.2.0-rc5 (arm64), device answering step 0 with a zero-length data<br \/>\nstage, s0 = s2 = 255:<\/p>\n<p>  # init_on_alloc off, no spray<br \/>\n  step0 window [0,255): nonzero=94\/255<br \/>\n  000: 00 80 60 06 00 00 ff ff 18 00 00 00 57 01 ea 01<br \/>\n  010: 08 78 22 13 00 00 ff ff a8 c4 5f 80 00 80 ff ff<\/p>\n<p>  # same kernel, kmalloc-512 pre-seeded with an 8-byte tag<br \/>\n  step0 window [0,255): nonzero=219\/255  tagbytes=232<\/p>\n<p>  # identical run, init_on_alloc=1<br \/>\n  step0 window [0,255): nonzero=0\/255  tagbytes=0<\/p>\n<p>  # all three runs<br \/>\n  step2 window [255,510): device words matched=62\/62<\/p>\n<p>a8 c4 5f 80 00 80 ff ff is the little-endian kernel text address<br \/>\nffff8000805fc4a8.  The step-2 window is unaffected, so the disclosure is<br \/>\nexactly the step-0 region.<\/p>\n<p>Zero the buffer, and require the step-0 transfer to deliver the full<br \/>\nstep0_resp_size bytes so a short data stage is reported as an error.<\/p>\n<p>Discovered by XBOW, triaged by Baul Lee <\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>ALSA: FCP: do not copy out an uninitialised init response<\/p>\n<p>fcp_ioctl_init() allocates its response buffer with kmalloc() and copies<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-21303","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/21303","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=21303"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=21303"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=21303"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}