CVE: CVE-2026-74733
Продукт: Linux Kernel
Дата публикации: 22.08.2026
Критичность: HIGH
CVSS: 7.8 (3.1)
EPSS: 0,12%; процентиль 2,31%
CISA KEV: нет подтверждения в каталоге CISA KEV
Краткое описание
В драйвере gpio-pca953x выявлена ошибка синхронизации, при которой функция pca953x_irq_bus_sync_unlock обращается к регистрам I2C без удержания i2c_lock. Это позволяет нескольким потокам одновременно выполнять операции чтения и записи, что приводит к обращению к неверным регистрам. Разбираем техническую суть дефекта, условия срабатывания и порядок проверки исправления в ядре.
Основные характеристики
Класс ошибки: race condition (гонка) в драйвере GPIO. CVSS 3.1: 7.8 (HIGH), вектор CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H. Эксплуитация требует локального доступа и низких привилегий. EPSS: 0.00123 (процентиль 2.31%). Затронут файл drivers/gpio/gpio-pca953x.c. Проблема связана с нарушением протокола блокировки при обращении к регистровому пространству I2C-контроллера.
Какие продукты и версии затронуты
Затронуты версии ядра Linux, в которых драйвер pca953x содержит уязвимую логику в функции pca953x_irq_bus_sync_unlock. Точный перечень уязвимых версий в предоставленных источниках не раскрыт. Исправление внесено в стабильные ветки ядра (коммиты 9dc325327babe7f159e84cbe9380a45342da0585 и e6a2f5f845f50b0c4299bace5111f56d3390a090). Пользователям необходимо проверить наличие патча в своей дистрибуции.
Причина уязвимости
В конфигурации regmap для pca953x отключена встроенная блокировка, так как драйвер использует собственный механизм синхронизации (i2c_lock). Все вызовы функций regmap (чтение или запись) должны выполняться с удержанием этого замка. Функция pca953x_irq_bus_sync_unlock() нарушала это правило. Предыдущий патч защитил только запись в регистр маски прерываний, оставив чтение из регистра направления незащищенным. Это позволяло нескольким потокам одновременно выполнять операции, приводя к обращению к неверным регистрам.
Как работает атака
Локальный атакующий инициирует операции с GPIO-линиями, управляемыми pca953x. При срабатывании прерывания вызывается pca953x_irq_bus_sync_unlock(), которая пытается синхронизировать состояние без захвата i2c_lock. Если в этот момент другой поток выполняет операцию с регистром, возникает гонка. Результатом становится запись или чтение из неверного регистра. Это приводит к непредсказуемому поведению GPIO-контроллера, нарушению целостности данных или сбою периферийных устройств.
Условия успешной эксплуатации
Для эксплуатации необходимы: локальный доступ к системе; наличие I2C-контроллера pca953x; возможность инициировать операции с GPIO-линиями; низкие привилегии (обычный пользователь). Удаленная эксплуатация невозможна (AV:L). Пользовательское взаимодействие не требуется (UI:N). Сложность атаки низкая (AC:L).
Возможный сценарий атаки
Локальный пользователь запускает приложение, активно работающее с GPIO-линиями pca953x. Одновременно срабатывает прерывание, вызывающее pca953x_irq_bus_sync_unlock(). Из-за отсутствия блокировки i2c_lock оба потока одновременно обращаются к регистрам I2C. Происходит запись в неверный регистр, что приводит к сбою работы периферийного устройства или потере данных. В худшем случае это нарушает целостность данных или вызывает отказ в обслуживании.
Есть ли публичный эксплойт
Публичный эксплойт не подтвержден. EPSS составляет 0.00123, что указывает на низкую вероятность эксплуатации. В каталоге CISA KEV уязвимость не значится. Наличие патча в стабильных ветках ядра свидетельствует о том, что проблема признана реальной и требует исправления.
Признаки эксплуатации
Специфичные IOC для этой уязвимости не опубликованы. Общие неспецифичные признаки: аномальные записи в /var/log/kern.log или /var/log/messages, связанные с драйвером pca953x; неожиданные сбои работы I2C-устройств; ошибки в dmesg, связанные с gpio-pca953x. Эти признаки не являются уникальными для CVE-2026-74733.
Как обнаружить атаку
Для обнаружения следов эксплуатации рекомендуется анализировать логи ядра на наличие ошибок, связанных с драйвером pca953x. Команды: dmesg | grep -i pca953x, journalctl -k | grep -i pca953x. Также полезно проверять /var/log/kern.log на аномальные записи. Специфичных сигнатур для SIEM не существует, поэтому мониторинг должен быть основан на общих признаках сбоев I2C-устройств.
Как проверить свою версию
Для проверки версии ядра используйте: uname -r, uname -a, cat /proc/version. Чтобы проверить наличие патча, сравните версию ядра с релизами, содержащими коммит 9dc325327babe7f159e84cbe9380a45342da0585. В дистрибутивах проверьте обновления через пакетный менеджер: apt list --upgradable | grep linux, yum list available kernel --showduplicates.
Исправление
Основное средство устранения — обновление ядра до версии, содержащей патч. Коммит 9dc325327babe7f159e84cbe9380a45342da0585 внесён в стабильные ветки. Пользователи должны установить последние обновления ядра от своего дистрибутива. Для систем, где обновление невозможно, рассмотрите временные меры, описанные ниже.
Временные меры защиты
Временные меры: 1) Ограничьте доступ к GPIO-линиям pca953x, если это возможно; 2) Отключите прерывания, связанные с pca953x, если это не нарушает функциональность; 3) Ограничьте количество процессов, работающих с I2C-устройствами; 4) Используйте cgroups для ограничения ресурсов процессов, работающих с GPIO. Эти меры снижают вероятность гонки, но не устраняют уязвимость полностью.
Как проверить устранение уязвимости
Для проверки исправления: 1) Убедитесь, что версия ядра содержит патч (см. version_check); 2) Проверьте, что драйвер pca953x загружен с исправленной логикой блокировки; 3) Проведите нагрузочное тестирование GPIO-линий, чтобы убедиться в отсутствии гонок. Команды: lsmod | grep pca953x, cat /sys/class/gpio/gpio*/direction (для проверки состояния).
Вывод
CVE-2026-74733 представляет собой серьезную уязвимость в драйвере pca953x, требующую обновления ядра. Хотя вероятность эксплуатации низка (EPSS 0.00123), последствия могут быть значительными для систем, использующих I2C-GPIO-контроллеры. Рекомендуется немедленно установить обновления и проверить работоспособность периферийных устройств после обновления.
Официальные источники
- NVD — CVE-2026-74733
- FIRST EPSS — CVE-2026-74733
- gpio: pca953x: fix pca953x_irq_bus_sync_unlock regmap lock - kernel/git/stable/linux.git - Linux kernel stable tree
- gpio: pca953x: fix pca953x_irq_bus_sync_unlock regmap lock - kernel/git/stable/linux.git - Linux kernel stable tree
- CVEs — The Linux Kernel documentation
История обновлений статьи
- 23.08.2026 — Опубликована первая версия материала.
- 26.08.2026 — Уточнены сведения об уязвимых версиях, оценке риска или исправлении.
Последнее редактирование:
