CVE-2026-64514 in Linux
Сводка
по VulDB • 25.07.2026
В ядре Linux устранена следующая уязвимость:
userfaultfd: проверка доступности на запись (writability check) должна осуществляться только при условии pte_present()
Функции userfaultfd_must_wait() и userfaultfd_huge_must_wait() считывают PTE без захвата блокировки таблицы страниц, а затем применяют к ним функции pte_write()/huge_pte_write(). Эти аксессоры декодируют биты только из кодировки присутствия (present encoding); для записей подкачки или миграции они читают смещенные биты, которые случайно находятся в той же позиции, и возвращают неопределенный результат.
Целью проверки является определение: «остается ли эта ошибка заблокированной по записи (WP-blocked)?». Запись подкачки без маркера означает, что страница находится в процессе передачи — контекст userfaultfd, для которого была первоначально вызвана ошибка, больше не совпадает с текущим, и путь завершения операции загрузки из подкачки или миграции повторно вызовет свежую ошибку, если пользовательское пространство все еще нуждается в ее обработке. В худшем случае при текущем коде мусор в бите записи указывает на необходимость «ожидания», и поток остается заблокированным до тех пор, пока не придет UFFDIO_WAKE, который может никогда не поступить.
Ограничьте проверку доступности на запись условием pte_present(), чтобы безблокировочная повторная проверка проверяла только биты присутствующих PTE (present-PTE bits), когда запись действительно присутствует. Случай с отсутствующей записью и маркером возвращает «не ждать» и позволяет пути обработки ошибки выполнить повторную попытку.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.