CVE-2026-12232
Full vulnerability record from the local CVENow database.
Description
The Intel ALH digital-audio-interface driver function dai_alh_get_properties() in drivers/dai/intel/alh/alh.c used a caller-supplied int stream_id with no range validation. The value indexes the fixed-size static const uint8_t alh_handshake_map[64] array and scales a FIFO register address, so an out-of-range stream_id produces an out-of-bounds read of one byte at an attacker-chosen signed offset from the array. That byte is written into prop->dma_hs_id and the resulting struct dai_properties is copied back to the caller, leaking it. dai_get_properties_copy() is a Zephyr __syscall, and its verifier z_vrfy_dai_get_properties_copy() (drivers/dai/dai_handlers.c) validates only the device-object permission and the destination buffer, not stream_id. A user-mode thread that has been granted access to the ALH DAI device object can therefore call the syscall with an arbitrary stream_id, crossing the userspace/kernel sandbox boundary. The impact is a one-byte-per-call arbitrary-offset kernel information disclosure (and leakage of a computed kernel address via fifo_address); a stream_id that resolves to an unmapped page faults in kernel context, giving a local denial of service. Exploitation requires CONFIG_USERSPACE and device access, making this a local, moderate-severity issue. The fix rejects negative and too-large stream_id values up front and returns NULL, which the copy wrapper maps to -ENOENT.
View original CVE JSON
{
"id": "CVE-2026-12232",
"sourceIdentifier": "[email protected]",
"published": "2026-08-12T05:17:41.860",
"lastModified": "2026-10-23T20:10:00.160",
"vulnStatus": "Awaiting Analysis",
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "The Intel ALH digital-audio-interface driver function dai_alh_get_properties() in drivers/dai/intel/alh/alh.c used a caller-supplied int stream_id with no range validation. The value indexes the fixed-size static const uint8_t alh_handshake_map[64] array and scales a FIFO register address, so an out-of-range stream_id produces an out-of-bounds read of one byte at an attacker-chosen signed offset from the array. That byte is written into prop->dma_hs_id and the resulting struct dai_properties is copied back to the caller, leaking it.\n\ndai_get_properties_copy() is a Zephyr __syscall, and its verifier z_vrfy_dai_get_properties_copy() (drivers/dai/dai_handlers.c) validates only the device-object permission and the destination buffer, not stream_id. A user-mode thread that has been granted access to the ALH DAI device object can therefore call the syscall with an arbitrary stream_id, crossing the userspace/kernel sandbox boundary.\n\nThe impact is a one-byte-per-call arbitrary-offset kernel information disclosure (and leakage of a computed kernel address via fifo_address); a stream_id that resolves to an unmapped page faults in kernel context, giving a local denial of service. Exploitation requires CONFIG_USERSPACE and device access, making this a local, moderate-severity issue. The fix rejects negative and too-large stream_id values up front and returns NULL, which the copy wrapper maps to -ENOENT."
},
{
"lang": "es",
"value": "La función del controlador de interfaz de audio digital Intel ALH dai_alh_get_properties() en drivers/dai/intel/alh/alh.c utilizó un int stream_id proporcionado por el llamador sin validación de rango. El valor indexa el array estático de tamaño fijo const uint8_t alh_handshake_map[64] y escala una dirección de registro FIFO, por lo que un stream_id fuera de rango produce una lectura fuera de límites de un byte en un desplazamiento con signo elegido por el atacante desde el array. Ese byte se escribe en prop -> dma_hs_id y la struct dai_properties resultante se copia de vuelta al llamador, filtrándola.\n\ndai_get_properties_copy() es una __syscall de Zephyr, y su verificador z_vrfy_dai_get_properties_copy() (drivers/dai/dai_handlers.c) valida solo el permiso del objeto de dispositivo y el búfer de destino, no el stream_id. Un hilo en modo de usuario al que se le ha concedido acceso al objeto de dispositivo ALH DAI puede, por lo tanto, llamar a la syscall con un stream_id arbitrario, cruzando el límite del sandbox de userspace/kernel.\n\nEl impacto es una revelación de información del kernel de un byte por llamada con desplazamiento arbitrario (y la fuga de una dirección de kernel calculada a través de fifo_address); un stream_id que se resuelve en una página no mapeada provoca fallos en el contexto del kernel, dando una denegación de servicio local. La explotación requiere CONFIG_USERSPACE y acceso al dispositivo, lo que convierte esto en un problema local de gravedad moderada. La solución rechaza los valores de stream_id negativos y demasiado grandes de antemano y devuelve NULL, que el envoltorio de copia mapea a -ENOENT."
}
],
"affected": [
{
"source": "[email protected]",
"affectedData": [
{
"vendor": "zephyrproject",
"product": "zephyr",
"defaultStatus": "unaffected",
"collectionURL": "https://github.com/zephyrproject-rtos/zephyr",
"packageName": "zephyr",
"programFiles": [
"drivers/dai/intel/alh/alh.c"
],
"versions": [
{
"version": "4.4.0",
"lessThan": "4.5.0",
"versionType": "semver",
"status": "affected"
}
]
}
]
}
],
"metrics": {
"cvssMetricV31": [
{
"source": "[email protected]",
"type": "Secondary",
"cvssData": {
"version": "3.1",
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:L",
"baseScore": 6.1,
"baseSeverity": "MEDIUM",
"attackVector": "LOCAL",
"attackComplexity": "LOW",
"privilegesRequired": "LOW",
"userInteraction": "NONE",
"scope": "UNCHANGED",
"confidentialityImpact": "HIGH",
"integrityImpact": "NONE",
"availabilityImpact": "LOW"
},
"exploitabilityScore": 1.8,
"impactScore": 4.2
}
],
"ssvcV203": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"ssvcData": {
"timestamp": "2026-08-13T15:09:10.805870Z",
"id": "CVE-2026-12232",
"options": [
{
"exploitation": "none"
},
{
"automatable": "no"
},
{
"technicalImpact": "partial"
}
],
"role": "CISA Coordinator",
"version": "2.0.3"
}
}
]
},
"weaknesses": [
{
"source": "[email protected]",
"type": "Secondary",
"description": [
{
"lang": "en",
"value": "CWE-125"
}
]
}
],
"references": [
{
"url": "https://github.com/zephyrproject-rtos/zephyr/commit/b470bfce689809621cc5cd8c04a4eca93795827a",
"source": "[email protected]"
},
{
"url": "https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-3557-j848-pv24",
"source": "[email protected]"
}
]
}