CVE-2026-80893
mm/hugetlb: fix swap entry corruption when clearing uffd-wp at fork()
Что произошло
In the Linux kernel, the following vulnerability has been resolved: mm/hugetlb: fix swap entry corruption when clearing uffd-wp at fork() copy_hugetlb_page_range() clears the uffd-wp bit of migration and hwpoison entries with huge_pte_clear_uffd_wp(), which operates on the present-PTE bit position. Swap entries keep the uffd-wp state elsewhere -- the migration branch reads and sets it with pte_swp_uffd_wp() and pte_swp_mkuffd_wp() -- and the present-PTE position falls into the swap payload. On x86-64 it lands in the inverted swap offset, where a naturally-aligned hugetlb PFN always has the affected bit set, so the clear advances the encoded PFN by two pages. No userfaultfd needs to be involved: the clear is guarded only by the child VMA not being uffd-wp registered, so a plain fork() with an in-flight hugetlb migration entry (or a poisoned hugetlb page) corrupts the entry copied into the child. Instrumenting the clear and forking after MADV_HWPOISON on a 2MB anon hugetlb page shows: offset before=120e00 offset after =120e02 The fallout is mostly latent: rmap walks match migration entries by folio range and remove_migration_pte() rebuilds the PTE from the folio, so a within-folio PFN skew heals once migration completes. But any path that re-encodes the corrupted offset -- e.g. hugetlb_change_protection() rewriting a writable migration entry via make_readable_migration_entry(swp_offset(entry)) -- propagates it. Migration entries legitimately carry uffd-wp, so clear it with pte_swp_clear_uffd_wp(), matching copy_nonpresent_pte() and move_huge_pte(). A hwpoison entry, on the other hand, never carries the uffd-wp bit: it is installed fresh by make_hwpoison_entry() (try_to_unmap_one() does not preserve uffd-wp on the hwpoison path) and hugetlb_change_protection() leaves hwpoison entries untouched. There was nothing to clear there, only the corruption, so drop the clear entirely.
Что это значит
В источнике описана ошибка безопасности в перечисленных продуктах. Фактический риск зависит от установленной версии, конфигурации и доступности компонента; проверьте условия в первичном бюллетене.
Что делать
1. Проверьте, затронуты ли вы
Соберите инвентаризацию и сравните с таблицей затронутых версий. Эти команды только показывают установленные компоненты и сами по себе не доказывают наличие CVE.
dpkg-query -W -f='${Package} ${Version}\n'rpm -qa --qf '%{NAME}\t%{VERSION}-%{RELEASE}\n'Get-HotFix | Select-Object HotFixID, InstalledOn
2. Установите исправление
Сверьте точный продукт и версию с бюллетенем вендора. Установите указанное в нём исправление после резервного копирования и проверки совместимости. Подтверждённая целевая версия в источниках отсутствует.
3. Временные меры
До проверки бюллетеня ограничьте доступ к затронутому компоненту доверенными узлами. Оцените сегментацию и отключение ненужных интерфейсов с владельцем сервиса; универсального правила WAF для этой CVE не подтверждено.
4. Проверьте следы эксплуатации
Проверьте аномальные входы, новые учётные записи, ошибки и необычные дочерние процессы в затронутом сервисе. Публичные проверенные правила обнаружения не включены в запись; отсутствие сигналов не доказывает отсутствие компрометации.
5. После исправления
- Проверьте фактическую версию и результат установки по бюллетеню.
- При необходимости перезапустите сервисы в согласованное окно.
- Повторите проверку сканером и функциональные проверки.
- Зафиксируйте результат, дату, владельца и оставшийся риск.
Продукты и затронутые версии
Linux / Linux
{
"status": "affected",
"version": "bc70fbf269fdff410b0b6d75c3770b9f59117b90",
"lessThan": "f1b1311c0352873137768bac5a126e491271a747",
"versionType": "git"
}{
"status": "affected",
"version": "bc70fbf269fdff410b0b6d75c3770b9f59117b90",
"lessThan": "69cb5825d9988c7944bc9f1dc08cb233655405a7",
"versionType": "git"
}{
"status": "affected",
"version": "bc70fbf269fdff410b0b6d75c3770b9f59117b90",
"lessThan": "8b0de7005b148738d79d6c45594d566489948a68",
"versionType": "git"
}{
"status": "affected",
"version": "bc70fbf269fdff410b0b6d75c3770b9f59117b90",
"lessThan": "2b9a07002c2f296aa6a9c591213933d3492e3089",
"versionType": "git"
}{
"status": "affected",
"version": "bc70fbf269fdff410b0b6d75c3770b9f59117b90",
"lessThan": "2fa11c60c9c06bafc19cf4d9efdaa36a38079e87",
"versionType": "git"
}{
"status": "affected",
"version": "bc70fbf269fdff410b0b6d75c3770b9f59117b90",
"lessThan": "83abe2fd5b3aeb3123b5408a5a91709c5538fb23",
"versionType": "git"
}Linux / Linux
{
"status": "affected",
"version": "5.19"
}{
"status": "unaffected",
"version": "0",
"lessThan": "5.19",
"versionType": "semver"
}{
"status": "unaffected",
"version": "6.1.183",
"versionType": "semver",
"lessThanOrEqual": "6.1.*"
}{
"status": "unaffected",
"version": "6.6.151",
"versionType": "semver",
"lessThanOrEqual": "6.6.*"
}{
"status": "unaffected",
"version": "6.12.103",
"versionType": "semver",
"lessThanOrEqual": "6.12.*"
}{
"status": "unaffected",
"version": "6.18.44",
"versionType": "semver",
"lessThanOrEqual": "6.18.*"
}{
"status": "unaffected",
"version": "7.1.8",
"versionType": "semver",
"lessThanOrEqual": "7.1.*"
}{
"status": "unaffected",
"version": "7.2",
"versionType": "original_commit_for_fix",
"lessThanOrEqual": "*"
}CVSS: оценки и векторы
Оценка CVSS отсутствует.
Источники и ссылки
Происхождение полей
{
"cwes": [],
"epss": {
"source": "epss",
"received_at": "2026-11-05T21:16:22.423050+00:00"
},
"title": {
"source": "cve",
"received_at": "2026-11-06T17:22:28.296980+00:00"
},
"scores": [],
"status": {
"source": "cve",
"received_at": "2026-11-06T17:22:28.296980+00:00"
},
"affected": [
"cve"
],
"published": {
"source": "cve",
"received_at": "2026-11-06T17:22:28.296980+00:00"
},
"solutions": [],
"percentile": {
"source": "epss",
"received_at": "2026-11-05T21:16:22.423050+00:00"
},
"references": [
"cve",
"nvd"
],
"description": {
"source": "cve",
"received_at": "2026-11-06T17:22:28.296980+00:00"
},
"workarounds": [],
"configurations": []
}Хронология записи
- Данные обновлены06.11.2026, 00:16
- Данные обновлены05.11.2026, 00:20
- Данные обновлены04.11.2026, 00:15
- Данные обновлены03.11.2026, 00:14
- Данные обновлены02.11.2026, 00:12
- Данные обновлены31.10.2026, 11:59
- Данные обновлены29.10.2026, 12:42
- Опубликована28.10.2026, 21:55
Личная заметка и статус
Другие CVE того же продукта
| УЯЗВИМОСТЬ / ПРОДУКТ | ПРИОРИТЕТ | CVSS | EPSS | СИГНАЛЫ | ОПУБЛИКОВАНА | Карточка |
|---|---|---|---|---|---|---|
| CVE-2026-99270 tcp: Fix potential UAF in reqsk_timer_handler(). Linux / Linux | Высокий | 8.1 | 0,31 % | 03.11.2026 | ||
| CVE-2026-99255 io_uring/io-wq: don't hide a link from cancellations Linux / Linux | Информационный | — | 0,2 % | 03.11.2026 | ||
| CVE-2026-99231 io_uring/waitid: own the request before clearing ->head Linux / Linux | Высокий | 7.8 | 0,12 % | 02.11.2026 | ||
| CVE-2026-99230 io_uring/cmd: don't leave list poison in ->hash_node Linux / Linux | Информационный | — | 0,16 % | 02.11.2026 | ||
| CVE-2026-99229 io_uring/wait: don't spin on a stuck overflow list Linux / Linux | Информационный | — | 0,16 % | 02.11.2026 |