В Intel выяснили, что принятый без проверки в код ядра Linux 6.13 патч от сотрудника Microsoft оказался проблемным
Разработчик из Intel в рамках тестов выяснил, что принятый без особой проверки в код ядра Linux 6.13 (планируется к релизу в январе) патч от сотрудника Microsoft оказался проблемным. Примечательно, что это изменение, ставшее в итоге причинами сбоя в некоторых тестовых ситуациях, было подано нестандартно, но изначально принято, хотя не получило ни одного подтверждения (ACK) от мейнтейнеров архитектуры x86, что является нарушением общепринятых практик в разработке проектов, включая ядро Linux.
Патч добавлял возможность использования больших страниц памяти в режиме ROX (Read Only Execute) при выделении памяти, предназначенной для размещения исполняемого кода. Опция ROX позволяет использовать память с исполняемым кодом в режиме только для чтения, что усложняет эксплуатацию некоторых уязвимостей.
В новой и ещё разрабатываемой версии ядра Linux 6.13 для исполняемого кода модулей на системах x86_64 по умолчанию было включено использование кэша больших исполняемых страниц памяти, отражённых как ROX. Изменение решало проблему с маппингом в режиме ROX страниц для ещё полностью не сформированного исполняемого кода и позволяло обойтись без временного ремапинга ROX‑страниц в режим записи до завершения подготовки модулей ядра к работе.
На финальном этапе тестирования ядра Linux 6.13 инженер из компании Intel выявил сбой, не позволяющий ядру корректно выйти из спящего режима на некоторых ноутбуках с процессорами Intel (например, с CPU на базе микроархитектуры Alderlake). Сбой проявлялся при сборке ядра компилятором Clang с включённым режимом защиты CFI (Control Flow Integrity), блокирующим нарушения нормального порядка выполнения (control flow) в результате применения эксплоитов, изменяющих хранимые в памяти указатели на функции.
В каче
Читать на habr.com