Ad

CVE-2026-89706

HIGH CVSS 3.1: 7,5 EPSS 0.53%
Обновлено 14 сентября 2026
Linux
Параметр Значение
CVSS 7,5 (HIGH)
Поставщик Linux
Публичный эксплойт Нет

В ядре Linux устранена следующая уязвимость: nfsd: сбросить верификатор записи при сбое обратной записи асинхронной копии Async COPY захватывает nn->writeverf во время запроса и сообщает об этом клиент через CB_OFFLOAD после завершения рабочего kthread. Когда посткопирование vfs_fsync_range() или filemap_check_wb_err() в _nfsd_copy_file_range() сообщает об ошибке, рабочий правильно оставляет NFSD4_COPY_F_COMMITTED пустым, так что CB_OFFLOAD кодирует wr_stable_how как NFS_UNSTABLE, но верификатор записи сервера не вращается. Клиент, получивший NFS_UNSTABLE в CB_OFFLOAD, выполняет COMMIT, чтобы сделать скопированные данные долговечными.

С помощью верификатора без изменений, COMMIT возвращает то же значение, которое только что получил клиент через CB_OFFLOAD, и клиент приходит к выводу, что копия устойчива — молча удаляя данные, обратная запись которых фактически не удалась. Это нарушает контракт устойчивости UNSTABLE+COMMIT (раздел RFC 7862). 15.1, раздел 18.32 RFC 8881) и соответствует ошибке, только что исправленной в nfsd_vfs_write() и nfsd_commit(). Поверните nn->writeverf на месте сбоя обратной записи.

Асинхронная копия у работника нет svc_rqst, поэтому commit_reset_write_verifier() нет доступно здесь; вызов nfsd_reset_write_verifier() напрямую отражает бесследный сброс, уже используемый nfsd_file_check_write_error() для той же цели. Отфильтровать -EAGAIN и -ESTALE, соответствующие commit_reset_write_verifier(), поскольку ни один из них не указывает на сбой в долговременном хранилище.

Показать оригинальное описание (EN)

In the Linux kernel, the following vulnerability has been resolved: nfsd: Reset write verifier when async COPY writeback fails Async COPY captures nn->writeverf at request time and reports it to the client via CB_OFFLOAD after the worker kthread completes. When the post-copy vfs_fsync_range() or filemap_check_wb_err() in _nfsd_copy_file_range() reports an error, the worker correctly leaves NFSD4_COPY_F_COMMITTED clear so that CB_OFFLOAD encodes wr_stable_how as NFS_UNSTABLE, but the server's write verifier is not rotated. A client that receives NFS_UNSTABLE in CB_OFFLOAD follows up with COMMIT to make the copied data durable. With the verifier unchanged, COMMIT returns the same value the client just received via CB_OFFLOAD, and the client concludes the copy is durable -- silently dropping the data whose writeback in fact failed. This violates the UNSTABLE+COMMIT durability contract (RFC 7862 section 15.1, RFC 8881 section 18.32) and matches the bug just fixed in nfsd_vfs_write() and nfsd_commit(). Rotate nn->writeverf at the writeback-failure site. The async COPY worker has no svc_rqst, so commit_reset_write_verifier() is not available here; calling nfsd_reset_write_verifier() directly mirrors the trace-less reset already used by nfsd_file_check_write_error() for the same purpose. Filter out -EAGAIN and -ESTALE, matching commit_reset_write_verifier(), since neither indicates a durable-storage failure.

Характеристики атаки

Способ атаки
По сети
Атака возможна удалённо
Сложность
Низкая
Легко эксплуатировать
Нужны права
Не требуются
Права не нужны
Участие пользователя
Не требуется
Не нужно действие пользователя

Последствия

Конфиденциальность
Нет
Нет утечки данных
Целостность
Высокое
Полная модификация данных
Доступность
Нет
Нет нарушения работы

Строка CVSS v3.1