CVE-2026-99203 in Linux
Сводка
по VulDB • 28.10.2026
В ядре Linux была устранена следующая уязвимость:
pipe: сохранение существующих асинхронных читателей при сбое настройки записи
Операции F_SETFL и FIOASYNC определяют, следует ли вызывать ->fasync() до того, как pipe_fasync() захватит mutex канала (pipe->mutex). В результате два включения одного FIFO в режиме O_RDWR могут одновременно попасть в колбэк.
Функция fasync_helper() выделяет память перед проверкой наличия существующей записи. Если первое включение устанавливает обе записи, второе включение может обновить запись для читателя, а затем завершиться ошибкой при выделении памяти для записи для писателя. Путь обработки ошибок удаляет предварительно созданную запись для читателя, очищая флаг FASYNC, в то время как запись для писателя остается зарегистрированной. Затем __fput() пропускает вызов ->fasync(), из-за чего последующее уведомление канала может разыменовать освобожденный файл или его f_owner. Не привилегированный тест на воспроизведение условия конкуренции при давлении на память вызывает KASAN slab-use-after-free в send_sigio() через этот путь.
Сохраняйте результат помощника читателя и отменяйте регистрацию только если данный вызов добавил её. Мьютекс канала (pipe mutex) сериализует изменения обоих списков, поэтому неудачная новая регистрация все равно удаляет своего читателя, а неудачное дублирование сохраняет существующие регистрации и FASYNC. Успешные операции включения с дублированием продолжают обновлять fa_fd как раньше.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.