CVE-2026-64130 in LinuxИнформация

Сводка

по VulDB • 20.07.2026

В ядре Linux устранена следующая уязвимость:

mm/page_alloc: исправлена инициализация тегов для huge zero folio при использовании init_on_free

Семантика флага __GFP_ZEROTAGS в настоящее время несколько запутанная, но фактически этот флаг всегда устанавливается совместно с __GFP_ZERO и __GFP_SKIP_KASAN.

Если используется init_on_free, страницы обнуляются во время выполнения функции __free_pages_prepare(), чтобы избежать повторного обнуления на пути выделения памяти.

Однако при выделении памяти с установленным флагом __GFP_ZEROTAGS функция post_alloc_hook() будет не только пропускать очистку содержимого страниц, но и пропускать очистку памяти тегов.

Отсутствие очистки тегов через флаг __GFP_ZEROTAGS несущественно для большинства страниц, которые впоследствии будут отображены в пользовательском пространстве с помощью set_pte_at(): функции set_pte_at() и связанные с ней процедуры обнаружат, что теги еще не были инициализированы (флаг PG_mte_tagged не установлен), и проведут их инициализацию.

Однако для huge zero folio, которое будет отображено через PMD, помеченный как специальный, эта инициализация выполнена не будет, что приведет к раскрытию любых тегов, которые остались установленными для страниц.

В документации (Documentation/arch/arm64/memory-tagging-extension.rst) указано, что теги выделения памяти устанавливаются в 0 при первом отображении страницы в пользовательское пространство. Это утверждение больше не соответствует действительности для huge zero folio при включенном init_on_free.

Исправление заключается в разделении флагов __GFP_ZEROTAGS и __GFP_ZERO, а также в передаче функции tag_clear_highpages() информации о том, нужно ли очищать содержимое страниц.

Изменено значение возвращаемого параметра функции tag_clear_highpages() на противоположное для обеспечения более понятной семантики.

Воспроизведено с использованием huge zero folio путем модификации проверки в selftest arm64/mte check_buffer_fill, чтобы использовать область размером 2 МБ, после предварительного подтверждения того, что при освобождении страниц у них установлен тег, отличный от 0 (обратите внимание: во время загрузки теги фактически не инициализируются, а только устанавливается KASAN_TAG_KERNEL в флагах страницы).

$ ./check_buffer_fill 1..20 ... not ok 17 Проверка начальных тегов с приватным отображением, режимом синхронной ошибки и mmap памяти not ok 18 Проверка начальных тегов с приватным отображением, режимом синхронной ошибки и памятью mmap/mprotect ...

Этот код требует дальнейшей очистки; мы займемся этим следующим шагом, например, разделив флаги __GFP_ZEROTAGS и __GFP_SKIP_KASAN.

[[email protected]: исправлено __GPF_ZERO на __GFP_ZERO, согласно замечанию David]

If you want to get best quality of vulnerability data, you may have to visit VulDB.

Ответственный

Linux

Резервировать

19.07.2026

Раскрытие

19.07.2026

Модерация

принято

Вход

VDB-380197

EPSS

0.00000

KEV

Нет

Деятельности

Низкий

Источники

Might our Artificial Intelligence support you?

Check our Alexa App!