Skip to main content

Linux Kernel EUVDEUVD-2026-64577

| CVE-2026-74640 HIGH
2026-08-22 Linux GHSA-m9m2-qw72-cj43
7.8
CVSS 3.1 · Vendor: Linux
Share

Severity by source

Vendor (Linux) PRIMARY
7.8 HIGH
AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
vuln.today AI
7.8 HIGH

Local attack vector confirmed by /dev/snd/controlC0 device access; PR:L reflects the low-privilege trigger phase, with setup requiring CAP_SYS_RAWIO captured as a contextual condition rather than a CVSS metric; full C/I/A impact consistent with kernel slab corruption primitives.

3.1 AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
4.0 AV:L/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (Linux).

CVSS VectorVendor: Linux

CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Attack Vector
Local
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

5
Analysis Generated
Aug 25, 2026 - 06:54 vuln.today
CVSS changed
Aug 25, 2026 - 06:22 NVD
7.8 (HIGH)
Patch available
Aug 22, 2026 - 16:01 EUVD
CVE Published
Aug 22, 2026 - 15:32 cve.org
HIGH 7.8
CVE Published
Aug 22, 2026 - 15:32 cve.org
UNKNOWN (no severity yet)

DescriptionCVE.org

In the Linux kernel, the following vulnerability has been resolved:

ALSA: FCP: fix OOB write in fcp_meter_ctl_get()

fcp_ioctl_set_meter_map() bounds the user-supplied Level Meter map size by the driver's own limit of 255

if (map.map_size < 1 || map.map_size > 255 || map.meter_slots < 1 || map.meter_slots > 255) return -EINVAL;

and passes it to fcp_add_new_ctl() as the control's channel count, where it is stored as elem->channels.

Every control read writes into struct snd_ctl_elem_value, whose integer array is declared long value[128], so the limit is 128, not 255. fcp_meter_ctl_get() stores one 64-bit word per channel into that array with no bound of its own:

for (i = 0; i < elem->channels; i++) { int idx = private->meter_level_map[i]; int value = idx < 0 ? 0 : le32_to_cpu(resp[idx]);

ucontrol->value.integer.value[i] = value; }

snd_ctl_elem_read_user() serves that object from memdup_user(_control, sizeof(*control)), 1224 bytes on LP64 out of kmalloc-2048. offsetof(struct snd_ctl_elem_value, value) is 72, so element i is written at byte 72 + 8 * i and element 144 already lands past the allocation. At map_size 255 the last store ends at byte 2112, 888 bytes past the object and 64 bytes into the adjacent slab object. The stored words come from the device and meter_level_map[] selects which word lands in which slot, so extent and contents are both controlled.

The core does not catch this. snd_ctl_check_elem_info() is reached only from __snd_ctl_elem_info(), which snd_ctl_elem_read() calls under CONFIG_SND_CTL_DEBUG; without that option snd_ctl_skip_validation() is a compile-time true. __snd_ctl_add_replace() validates kcontrol->count and never inspects elem->channels.

Installing an oversized map needs CAP_SYS_RAWIO, but the control outlives the hwdep descriptor that created it, so the out-of-bounds stores are issued by any process able to read controls on /dev/snd/controlC0.

KASAN on 7.2.0-rc5 (arm64), triggered by an unprivileged control read:

BUG: KASAN: slab-out-of-bounds in fcp_meter_ctl_get Write of size 8 at addr ffff000017af04c8 by task fcp_trigger/185 __asan_store8 fcp_meter_ctl_get snd_ctl_elem_read snd_ctl_ioctl Allocated by task 185: memdup_user snd_ctl_ioctl The buggy address is located 0 bytes to the right of allocated 1224-byte region [ffff000017af0000, ffff000017af04c8)

Bound the map size by the ABI limit rather than by 255, and bound the store loop at the sink so it cannot run past the value array whatever elem->channels holds.

Discovered by XBOW, triaged by Baul Lee <baul.lee@xbow.com>

AnalysisAI

Out-of-bounds slab write in the Linux kernel ALSA FCP (FireWire Control Protocol) driver allows local unprivileged processes to corrupt up to 888 bytes of adjacent kernel heap memory by reading audio controls on /dev/snd/controlC0, once a privileged actor has installed an oversized Level Meter map. The mismatch between the driver's 255-entry map limit and the 128-entry ABI array in struct snd_ctl_elem_value creates a persistent, exploitable write primitive reachable by any process with device read access. …

Unlock full vulnerability intelligence

  • Risk assessment & exploitation conditions
  • Attack chain visualization
  • Remediation with exact patch versions
  • Threat intelligence from 22 sources
  • Personal watchlist & email alerts

Free forever · No credit card required

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata

Recon
Acquire CAP_SYS_RAWIO on target host
Delivery
Open FCP hwdep device with FireWire audio present
Exploit
Install oversized meter map via fcp_ioctl_set_meter_map() (map_size 129-255)
Install
Close hwdep fd (malformed ALSA control persists in kernel)
C2
Unprivileged process reads /dev/snd/controlC0 control
Execute
fcp_meter_ctl_get() writes 888 bytes past slab allocation
Impact
Corrupt adjacent kernel object for privilege escalation

Vulnerability AssessmentAI

Exploitation Phase 1 (setup, privileged): CAP_SYS_RAWIO capability is required to call fcp_ioctl_set_meter_map() and install a Level Meter map with map_size between 129 and 255. … Additional conditions and limiting factors are described in the full assessment.
Risk Assessment The CVSS 7.8 vector (AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H) accurately captures the local, low-privilege trigger phase: once an oversized FCP meter control exists on the system, any unprivileged process opening /dev/snd/controlC0 for a routine control read will issue the OOB writes. … Full risk analysis with EPSS, KEV, and SSVC signal comparison available after sign-in.
Exploit Scenario A local attacker or compromised privileged process with CAP_SYS_RAWIO opens the FCP hwdep device and calls fcp_ioctl_set_meter_map() with map_size set to 200, persisting a malformed ALSA control. After closing the hwdep descriptor, any subsequent unprivileged process - such as a sound server daemon running as a low-privilege user - performs a routine ALSA control enumeration on /dev/snd/controlC0, triggering fcp_meter_ctl_get() to write 1600 bytes starting at offset 72 of a 1224-byte allocation, corrupting 376 bytes of an adjacent slab object and potentially enabling privilege escalation through controlled heap layout manipulation.
Remediation The primary fix is to upgrade to Linux 7.2, 7.1.9, or 6.18.45, which contain the upstream patches bounding the map size to the ABI limit of 128 and adding a loop guard in fcp_meter_ctl_get(). … Detailed patch versions, workarounds, and compensating controls in full report.

Recommended ActionAI

Within 24 hours: Inventory all Linux systems with ALSA audio drivers enabled and identify which are running kernels before 7.2, 7.1.9, or 6.18.45. …

Sign in for detailed remediation steps and compensating controls.

Threat intelligence, references, and detailed analysis are available after sign-in.

Share

EUVD-2026-64577 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy