CVE-2026-16511
Unvalidated user pointers in RTIO syscall verifiers allow a user-mode thread to write kernel memory
Что произошло
Two RTIO syscall verifiers, in subsys/rtio/rtio_syscalls.c (subsys/rtio/rtio_handlers.c before v4.3.0), did not validate user-supplied pointers before the kernel wrote through them. z_vrfy_rtio_sqe_cancel() performed no validation at all. It passed the caller's struct rtio_sqe pointer straight to z_impl_rtio_sqe_cancel(), which converts it with CONTAINER_OF to a struct rtio_iodev_sqe, ORs RTIO_SQE_CANCELED (BIT(3)) into its 16-bit flags field in supervisor mode, then loads its next pointer and repeats until that pointer is NULL. The syscall takes no RTIO context argument, so it needs no object grant: any user-mode thread on a CONFIG_USERSPACE build can set that bit in a 16-bit word at an address of its choosing in kernel memory, and the kernel continues the write along whatever pointer chain it finds at the corresponding offset. Setting chosen bits in kernel data structures, such as object permission or thread state fields, can be used to escalate privilege from user mode. z_vrfy_rtio_sqe_copy_in_get_handles() validated its RTIO context and the input SQE array, but only NULL-checked the handle out-parameter before writing a kernel SQE pointer through it, with no K_SYSCALL_MEMORY_WRITE check. A user thread that holds a granted RTIO context can therefore make the kernel store a pointer value at an arbitrary address. The fixes validate the handle out-parameter as writable, bound the cancel handle to real submission-pool storage, and require permission on the RTIO context that owns the matching pool. Without that last check a bounded handle still let any user thread cancel submissions belonging to other contexts, silently aborting their I/O. Systems built without CONFIG_USERSPACE or without CONFIG_RTIO are unaffected.
Что это значит
Компонент может записать данные за границами выделенной памяти. Последствия зависят от условий атаки и прав процесса.
Что делать
1. Проверьте, затронуты ли вы
Соберите инвентаризацию и сравните с таблицей затронутых версий. Эти команды только показывают установленные компоненты и сами по себе не доказывают наличие CVE.
dpkg-query -W -f='${Package} ${Version}\n'rpm -qa --qf '%{NAME}\t%{VERSION}-%{RELEASE}\n'Get-HotFix | Select-Object HotFixID, InstalledOn
2. Установите исправление
Сверьте точный продукт и версию с бюллетенем вендора. Установите указанное в нём исправление после резервного копирования и проверки совместимости. Подтверждённая целевая версия в источниках отсутствует.
3. Временные меры
До проверки бюллетеня ограничьте доступ к затронутому компоненту доверенными узлами. Оцените сегментацию и отключение ненужных интерфейсов с владельцем сервиса; универсального правила WAF для этой CVE не подтверждено.
4. Проверьте следы эксплуатации
Проверьте аномальные входы, новые учётные записи, ошибки и необычные дочерние процессы в затронутом сервисе. Публичные проверенные правила обнаружения не включены в запись; отсутствие сигналов не доказывает отсутствие компрометации.
5. После исправления
- Проверьте фактическую версию и результат установки по бюллетеню.
- При необходимости перезапустите сервисы в согласованное окно.
- Повторите проверку сканером и функциональные проверки.
- Зафиксируйте результат, дату, владельца и оставшийся риск.
Продукты и затронутые версии
zephyrproject / zephyr
{
"status": "affected",
"version": "3.4.0",
"lessThan": "4.3.2",
"versionType": "semver"
}{
"status": "affected",
"version": "4.4.0",
"lessThan": "4.5.0",
"versionType": "semver"
}CVSS: оценки и векторы
CVSS 3.1 · cve8.8
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
CVSS 3.1 · vulnerabilities@zephyrproject.org8.8
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
Источники и ссылки
Происхождение полей
{
"cwes": [
"cve",
"nvd"
],
"title": {
"source": "cve",
"received_at": "2026-11-04T06:19:42.220591+00:00"
},
"scores": [
"cve",
"nvd"
],
"status": {
"source": "cve",
"received_at": "2026-11-04T06:19:42.220591+00:00"
},
"affected": [
"cve"
],
"published": {
"source": "cve",
"received_at": "2026-11-04T06:19:42.220591+00:00"
},
"solutions": [],
"references": [
"cve",
"nvd"
],
"description": {
"source": "cve",
"received_at": "2026-11-04T06:19:42.220591+00:00"
},
"workarounds": [],
"configurations": []
}Хронология записи
- Появились сведения об исправлении04.11.2026, 09:19
- Опубликована04.11.2026, 09:19
Личная заметка и статус
Другие CVE того же продукта
| УЯЗВИМОСТЬ / ПРОДУКТ | ПРИОРИТЕТ | CVSS | EPSS | СИГНАЛЫ | ОПУБЛИКОВАНА | Карточка |
|---|---|---|---|---|---|---|
| CVE-2026-87044 Memory leak in the Mbed TLS crypto shim on failed cipher/AEAD operations leads to remotely triggered crypto denial of service zephyrproject / zephyr | Средний | 6.5 | — | Патч | 04.11.2026 | |
| CVE-2026-87043 sys_rand_get() silently returns an unwritten buffer when the entropy device is not ready zephyrproject / zephyr | Средний | 4.8 | — | Патч | 04.11.2026 | |
| CVE-2026-87041 Inverted memory-permission check in the RTIO syscall verifier allows a user-mode thread to read and write arbitrary kernel memory zephyrproject / zephyr | Высокий | 7.8 | — | Патч | 04.11.2026 | |
| CVE-2026-87040 Bluetooth LE Controller accepts received PDUs whose length field exceeds the configured maximum receive length, causing out-of-bounds read and write zephyrproject / zephyr | Высокий | 8.3 | — | Патч | 04.11.2026 | |
| CVE-2026-87039 I2S configure syscall handler passes an unvalidated user-supplied kernel object pointer to drivers zephyrproject / zephyr | Высокий | 7.8 | — | Патч | 04.11.2026 |