Исследователи обнаружили критическую уязвимость типа "состояние гонки" (race condition) в компоненте Rust Binder ядра Linux. Эта проблема, получившая идентификатор CVE-2025-68260, затрагивает механизм межпроцессного взаимодействия (inter-process communication) и может приводить к аварийным завершениям работы системы и повреждению памяти. Следовательно, системным администраторам и сопровождающим ядра необходимо немедленно обратить на неё внимание.
Детали уязвимости
Суть уязвимости заключается в механизме обработки списка "death_list" в компоненте Rust Binder. Конкретно, ошибка проистекает из небезопасной операции удаления элементов из связного списка без надлежащей синхронизации. Проблемный код пытается манипулировать указателями списка, не обеспечивая эксклюзивный доступ к данным. В результате создаётся опасное состояние гонки между потоками выполнения. Исследователи указывают, что проблема возникает из-за специфического паттерна в функции "Node::release". Данная последовательность действий включает захват блокировки, перемещение элементов списка в локальный список на стеке, а затем освобождение блокировки *перед* итерацией по этим элементам. Таким образом, пока один поток работает с локальной копией, другие потоки могут получить доступ к исходному списку и его указателям "prev" и "next". Это окно конкурентного доступа и становится причиной возможного повреждения структур данных в памяти.
Активация этой уязвимости имеет серьёзные последствия для стабильности системы. В частности, при её срабатывании устройства испытывают паники ядра (kernel panic) и ошибки страничной памяти (page fault). Затронутые системы аварийно завершают работу с сообщениями, аналогичными "Unable to handle kernel paging request at virtual address". Проще говоря, уязвимость проявляется как внутреннее повреждение памяти, ведущее к сообщениям "kernel oops" и общей нестабильности системы. Устройства под управлением уязвимых версий ядра могут сталкиваться с неожиданными перезагрузками и перерывами в обслуживании критических служб, что напрямую влияет на доступность.
Исторически, данная уязвимость была внесена в ядро версии 6.18 определённым коммитом, изменявшим код Binder. Прямое воздействие оказывается на файл "drivers/android/binder/node.rs". К счастью, проблема уже устранена в основных ветках разработки. Исправления доступны в версиях ядра 6.18.1 и 6.19-rc1, а также в соответствующих репозиториях upstream. Команда разработчиков ядра Linux настоятельно рекомендует всем пользователям обновиться до последней стабильной версии. При этом предпочтительным методом является полное обновление ядра, а не выборочное применение отдельных патчей (cherry-pick). Дело в том, что изменения проходят комплексное тестирование в рамках сборки целого релиза, что минимизирует риски регрессий.
Тем не менее, для ситуаций, где немедленное полное обновление невозможно, системные администраторы могут применить конкретные коммиты с исправлениями из официальных репозиториев. В любом случае, закрытие этой уязвимости должно быть приоритетной задачей для поддержания стабильности инфраструктуры и предотвращения незапланированных простоев. Регулярный мониторинг источников, таких как BDU (Банк данных угроз безопасности информации), и своевременное применение обновлений безопасности остаются ключевыми практиками в подобных случаях.
Ссылки
- https://www.cve.org/CVERecord?id=CVE-2025-68260
- https://git.kernel.org/stable/c/3428831264096d32f830a7fcfc7885dd263e511a
- https://git.kernel.org/stable/c/3e0ae02ba831da2b707905f4e602e43f8507b8cc
- https://lore.kernel.org/linux-cve-announce/2025121614-CVE-2025-68260-558d@gregkh/T/#u?