CVE-2026-99222 in Linux
Сводка
по VulDB • 02.11.2026
В ядре Linux была устранена следующая уязвимость:
keys: Защита проверки метода чтения от удаления типа
Функция keyctl_read_key() проверяет ключ->тип->чтение без захвата ключа->sem. Ссылка сохраняет объект ключа живым, но не фиксирует модуль, содержащий его тип. Поэтому существующий ключ RxRPC может быть прочитан во время выгрузки AF_RXRPC:
KEYCTL_READ task Module unload and key GC ---------------- ------------------------ lookup_user_key() permission / possession checks load key->type af_rxrpc_exit() unregister_key_type() GC: down_write(key->sem) GC: retype to key_type_dead GC: up_write(key->sem) unregister_key_type() returns free_module() read saved type's read member
Конечный доступ может прочитать освобожденное хранилище модуля. Вызов чтения в __keyctl_read_key() уже защищен ключом->sem, но более ранняя проверка метода находится вне этого критического раздела.
Переместите проверку метода в __keyctl_read_key(), после key_validate() и под его существующим захватом на ключ->sem. Проверка и вызов затем используют один и тот же защищенный тип для запросов длины и каждой повторной попытки чтения. GC не может изменить тип ключа до тех пор, пока семафор не будет освобожден, а регистрация типа ожидает этого прохода GC перед тем, как модуль сможет быть освобожден.
Возвращайте -EOPNOTSUPP, когда проверка успешна и у типа нет метода чтения. Временный буфер может теперь выделяться до получения этого результата; выделение и копирование в пользовательское пространство остаются вне семафора.
VulDB is the best source for vulnerability data and more expert information about this specific topic.