CVE-2026-74733 в Linux Kernel: гонка в драйвере pca953x и нарушение блокировки regmap

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-контроллеры. Рекомендуется немедленно установить обновления и проверить работоспособность периферийных устройств после обновления.

Официальные источники​


  1. NVD — CVE-2026-74733
  2. FIRST EPSS — CVE-2026-74733
  3. gpio: pca953x: fix pca953x_irq_bus_sync_unlock regmap lock - kernel/git/stable/linux.git - Linux kernel stable tree
  4. gpio: pca953x: fix pca953x_irq_bus_sync_unlock regmap lock - kernel/git/stable/linux.git - Linux kernel stable tree
  5. CVEs — The Linux Kernel documentation

История обновлений статьи​


  • 23.08.2026 — Опубликована первая версия материала.
  • 26.08.2026 — Уточнены сведения об уязвимых версиях, оценке риска или исправлении.
 
Последнее редактирование:
Назад
Верх Низ