* [CVE-2026-74640][IMPORTANT] ALSA: FCP: fix OOB write in fcp_meter_ctl_get()
@ 2026-08-22 22:07 AL-KERNEL
0 siblings, 0 replies; only message in thread
From: AL-KERNEL @ 2026-08-22 22:07 UTC (permalink / raw)
To: kernel-cve
CVE: CVE-2026-74640
Priority: IMPORTANT
AL-KERNEL base severity: IMPORTANT
KPANIC flag: YES
Patch: ALSA: FCP: fix OOB write in fcp_meter_ctl_get()
Commit: bb30e35c36ed00f24fa39aded811f64230a913b0
Upstream patch: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=bb30e35c36ed00f24fa39aded811f64230a913b0
Original CVE announcement: https://lore.kernel.org/linux-cve-announce/?q=CVE-2026-74640
Analysis date: Sat, 22 Aug 2026 18:07:43 -0400
ActionableScore: 7
ActionableScore lower bound: 5
Actionable bucket: Strong Important candidate / Actionable Moderate at minimum
Manual review required: YES
Summary:
An ALSA FCP meter control bug allows an oversized device meter map to make `fcp_meter_ctl_get()` write past the fixed 128-entry `snd_ctl_elem_value` array during a control read, causing kernel heap corruption and possible local privilege escalation after privileged setup.
======================================================================
ABOUT THIS REPORT
======================================================================
The original Linux kernel CVE announcement for CVE-2026-74640 is available here:
https://lore.kernel.org/linux-cve-announce/?q=CVE-2026-74640
The original announcement does not normally provide a security severity
estimate, CVSS assessment, or enough information to determine whether the
reported kernel bug represents a practically relevant security issue.
This report was generated by AL-KERNEL, an AI-assisted Linux kernel
vulnerability analysis system developed by Alexander Larkin. It combines
an autonomous classifier with LLM-assisted technical analysis and a
separate ActionableScore mechanism.
The purpose of this report is to prioritize Linux kernel CVEs before
manual review, identify cases that require prompt investigation, and
support automatic closure of issues that are unlikely to have meaningful
security impact.
Published priority for this report: IMPORTANT
Manual review required: YES
A detailed explanation of the methodology and priority rules is included
at the end of this message.
======================================================================
AL-KERNEL CLASSIFICATION RESULT
======================================================================
CVE-2026-74640 IMPORTANT CHECK WITH IMPACT FROM ORIG NN IMPORTANT Maybe valid. Check manually. Hints by AL-KERNEL: The best (paranoid) CVSS is 'AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H';*CWE-787;CWE-122;*CWE-20;Other CVSS 'AV:L/AC:H/PR:H/UI:N/S:U/C:H/I:H/A:H';BEST CVSS score: '7';DESCR 'An out-of-bounds write in the ALSA/FCP meter control path occurs because fcp_meter_ctl_get() writes one long value per elem channel into struct snd_ctl_elem_value, but the ABI array has only 128 entries while the driver allowed a meter map size up to 255. A local attacker who can cause an oversized meter map and then read the affected ALSA control can trigger slab memory corruption during the control read path. For the CVSS the PR:L is selected in the paranoid score because after an oversized meter map exists, any local process able to read ALSA controls can trigger the vulnerable get callback, even though installing the map normally requires CAP_SYS_RAWIO. The issue is not network reachable. Impact is at least local denial of service via kernel memory corruption and in the worst case may allow privilege escalation because the overwrite length and stored values are influenced by the meter map and device supplied data.';YES REQUIRES MANUAL CHECK; ,and ActionableScore result is Strong Important candidate / Actionable Moderate at minimum (with actual score 7) YES WRITE KASAN OOB USB HARDWARE LINUS KPANIC YES NO checked
======================================================================
ACTIONABLESCORE ANALYSIS
======================================================================
ActionableScore=7
ActionableScoreLower=5
## 1. ActionableScore
* Conservative score: **5**
* Paranoid score: **7**
* Final recommended bucket: **Strong Important candidate / Actionable Moderate at minimum**::
## 2. Signal breakdown
**Triggered positive signals:**
* **Local unprivileged trigger: +1**
The oversized meter map installation requires `CAP_SYS_RAWIO`, but the vulnerable OOB write is later triggered by ordinary ALSA control reads on `/dev/snd/controlC0` once the malformed control exists.
* **Memory corruption, strong corruption primitive: +2**
This is a concrete slab out-of-bounds write in `fcp_meter_ctl_get()`, writing beyond `struct snd_ctl_elem_value.value.integer.value[128]`.
* **Privilege escalation plausible: +2**
The overwrite is not merely a NULL dereference or invalid read. The extent is controlled by `elem->channels`, and the written values are influenced by device-provided meter data and `meter_level_map[]`. This makes LPE technically plausible, although not demonstrated.
* **Reliable kernel crash / strong DoS: +1**
KASAN reports a reproducible slab-out-of-bounds write from an unprivileged control read.
* **Integrity impact plausible: +1**
Kernel heap corruption can corrupt adjacent slab objects. Integrity impact is plausible in the paranoid interpretation.
* **Firmware/device-mediated external influence: +1**
The stored words come from device responses, so a malicious or compromised device can influence the written payload.
**Triggered negative signals:**
* **Requires admin/root/CAP_* for setup: -1 conservative / reduced penalty in paranoid view**
Installing the oversized map requires `CAP_SYS_RAWIO`, but the vulnerable control outlives the creating descriptor and can later be triggered by less privileged readers. Therefore a full `-2` penalty would understate the reduced-privilege trigger condition.
* **Rare hardware/device-specific exposure: -1**
The bug is limited to ALSA FCP / Focusrite Control Protocol hardware and is not a generic ALSA core path.
## 3. Reachability analysis
The setup phase requires access to the FCP hwdep ioctl and normally `CAP_SYS_RAWIO` to install an oversized meter map. However, after such a malformed control exists, the actual OOB write occurs during an ALSA control read and can be triggered by any process allowed to read `/dev/snd/controlC0`.
This is **not network reachable**. It requires local access and an affected ALSA FCP USB device or equivalent device path. Containers and namespaces depend on device passthrough and `/dev/snd` exposure. If a container or service has access to the sound control device but not full host privileges, the practical PR can be closer to low privilege than full root.
Call-site confidence: **high**, because the patch and commit text include the relevant sink, the object size, the write loop, and the user-triggered read path.
## 4. Severity interpretation
This behaves more like an **Important candidate** than an ordinary Moderate issue. The bug is a concrete OOB write into a kmalloc-backed object, not a warning, resource leak, or DoS-only validation bug.
Realistic exploitation is constrained by the need to install an oversized map, typically requiring `CAP_SYS_RAWIO`, and by device-specific exposure. However, the later trigger path is available to less privileged ALSA control readers, and the overwrite size and data source make this unsuitable for auto-closure. The conservative score is Actionable Moderate, while the paranoid score reaches Strong Important candidate.
## 5. One-sentence report phrase
An ALSA FCP meter control bug allows an oversized device meter map to make `fcp_meter_ctl_get()` write past the fixed 128-entry `snd_ctl_elem_value` array during a control read, causing kernel heap corruption and possible local privilege escalation after privileged setup.
## 6. Manual review recommendation
**MANUAL CHECK REQUIRED**
This is a real slab OOB write with partially controlled extent and payload, reachable through an unprivileged read path after privileged setup. It should not be auto-closed.
======================================================================
UPSTREAM PATCH SUMMARY
======================================================================
Patch: ALSA: FCP: fix OOB write in fcp_meter_ctl_get()
Commit: bb30e35c36ed00f24fa39aded811f64230a913b0
Upstream URL: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=bb30e35c36ed00f24fa39aded811f64230a913b0
Commit description:
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 <[email protected]>
Fixes: 46757a3 ("ALSA: FCP: Add Focusrite Control Protocol driver")
Reported-by: Federico Kirschbaum <[email protected]>
Reported-by: Baul Lee <[email protected]>
Cc: [email protected]
Signed-off-by: Baul Lee <[email protected]>
Link: https://patch.msgid.link/[email protected]
Signed-off-by: Takashi Iwai <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
Changed files:
sound/usb/fcp.c
Diff excerpt:
Not included in this email. See the upstream URL for the full patch.
Full patch:
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=bb30e35c36ed00f24fa39aded811f64230a913b0
======================================================================
DETAILED REPORT METHODOLOGY
======================================================================
The original Linux kernel CVE announcement for CVE-2026-74640 can be found here:
https://lore.kernel.org/linux-cve-announce/?q=CVE-2026-74640
The original CVE announcement normally does not include a security-level
estimate. In particular, it may not contain a CVSS assessment, an impact
level, or enough information to determine whether the reported bug is a
practically relevant security issue. One purpose of this parallel CVE list
is to provide that missing technical and prioritization information.
The original goal of the AL-KERNEL project was to prioritize Linux kernel
CVE analysis automatically before manual review. The system can also help
identify non-security issues that may be suitable for automatic closure.
This report was generated by AL-KERNEL, an AI-assisted Linux kernel
vulnerability analysis system developed by Alexander Larkin.
The first analysis stage combines an autonomous classifier with additional
LLM-based analysis. The autonomous classifier runs locally on a CPU and is
based on a backpropagation neural network. Together, these mechanisms
produce a technical vulnerability description, identify likely weakness
types, estimate CVSS severity, and provide input for ActionableScore.
Two CVSS estimates are retained because incomplete kernel vulnerability
information often permits more than one defensible interpretation:
Conservative CVSS vector: AV:L/AC:H/PR:H/UI:N/S:U/C:H/I:H/A:H
The Best / paranoid CVSS vector: AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
The Best / paranoid CVSS score: 7
The conservative vector represents a lower-impact interpretation.
The Best/paranoid vector intentionally represents a plausible upper-bound
interpretation and should not automatically be treated as demonstrated
real-world impact.
CVSS may also need to be adjusted for a particular Linux deployment,
because actual reachability, privileges, enabled kernel configuration,
hardware, namespaces, exposed device nodes, and other environmental
conditions can differ significantly between systems.
A separate ActionableScore mechanism evaluates practical remediation
urgency. Its analysis may include reachability, attack prerequisites,
subsystem exposure, memory-corruption characteristics, denial-of-service
reliability, and possible confidentiality, integrity, or
privilege-escalation impact.
Conservative ActionableScore: 5
Paranoid ActionableScore: 7
The final base severity is taken directly from the second tab-separated
field of the AL-KERNEL classification result. ActionableScore does not
replace or independently override that final AL-KERNEL decision, and
if ActionableScore adjusted impact level of ALKERNEL, then you would see
self-readable flags above like INCREASED_TO_HIGH_BASED_ON_ACTIONABLESCOREHIGHEREQTHAN7.
For an AL-KERNEL result of MODERATE, this report uses the following
additional presentation split:
ActionableScore below 5 -> MODERATE REGULAR
ActionableScore 5 or more -> MODERATE 7.0
The distinction between MODERATE REGULAR and MODERATE 7.0 makes it
possible to identify Moderate issues that should receive manual analysis
and fixes before lower-priority MODERATE REGULAR issues. In many cases,
MODERATE REGULAR fixes may wait for a later rebase or routine update.
There is one override in which MODERATE REGULAR becomes MODERATE 7.0
even when the ActionableScore is below 5. When the AL-KERNEL result
contains the KPANIC flag, a MODERATE result is always presented as
MODERATE 7.0. The KPANIC flag selected with few regexps without
usage of AI at all, so it helps to detect cases when Kernel Crash happens
and similar (to filter False-Negative results from the LLM usage).
KPANIC indicates that a reliable kernel crash, kernel panic, or similarly
serious kernel availability impact was identified by the classification
workflow.
AL-KERNEL base severity for this report: IMPORTANT
KPANIC detected for this report: YES
Published priority for this report (same as in Subject): IMPORTANT
These results are intended to support engineering triage. They are
machine-generated estimates, and cases marked for manual review should
be validated by a human security engineer before final disposition.
For more info read docs linked from here: https://kernelcve.org/
(and you can submit you own patch there to generate such a report
for non-existant CVE-id yet).
Note that in many cases this AI tool selects higher severity, than
real is (means you can expect Importants instead of Moderate 7.0 or
Moderates 7.0 instead of regular Moderates). If you see such cases,
please use reply email interface to add additional manual analyses
info to this particular CVE.
And please, please, let me know when you see Lows instead of Importants
or Important instead of Low (because particular for such cases I
need to tune this AI tool to make it better for this one and next similar).
My contact email for such notifications is [email protected] (and both
send reply to CVE record itself too and see "reply" button below for howto reply).
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2026-08-22 22:07 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-08-22 22:07 [CVE-2026-74640][IMPORTANT] ALSA: FCP: fix OOB write in fcp_meter_ctl_get() AL-KERNEL
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox