В готовящемся в релизу ядре Linux 6.13 выявлен сбой, вызванный кодом сотрудника Microsoft

Линус Торвальдс намеревался опубликовать релиз ядра Linux 6.13 в это воскресенье, но скорее всего тестирование ветки 6.13 будет продлено на неделю из-за проблем со стабильностью в изменениях, подготовленных сотрудником Microsoft и принятых в ветку 6.13 в ноябре. Дополнительно отмечается, что патч, ставший причиной сбоя, был подан нестандартно — но был принят, хотя не получил ни одного подтверждения (ACK) от мэйнтайнеров архитектуры x86, что является нарушением общепринятых практик.

Патч добавлял возможность использования больших страниц памяти в режиме ROX (Read Only Execute) при выделении памяти, предназначенной для размещения исполняемого кода. ROX позволяет использовать память с исполняемым кодом в режиме только для чтения, что усложняет эксплуатацию некоторых уязвимостей. В ядре 6.13 для исполняемого кода модулей на системах x86_64 по умолчанию было включено использование кэша больших исполняемых страниц памяти, отражённых как ROX. Изменение решало проблему с маппингом в режиме ROX страниц для ещё полностью не сформированного исполняемого кода и позволяло обойтись без временного репаминга ROX-страниц в режим записи до завершения подготовки модулей ядра к работе.

На финальном этапе тестирования ядра 6.13 инженер из компании Intel выявил сбой, не позволяющий ядру корректно выйти из спящего режима на некоторых ноутбуках с процессорами Intel (например, с CPU на базе микроархитектуры Alderlake). Сбой проявлялся при сборке ядра компилятором Clang с включённым режимом защиты CFI (Control Flow Integrity), блокирующим нарушения нормального порядка выполнения (control flow) в результате применения эксплоитов, изменяющих хранимые в памяти указатели на функции. В качестве временного решения мэйнтейнеры из компаний Intel и AMD, отвечающие за архитектуру x86, предложили отключить использование EXECMEM_ROX в ядре 6.13, до того как буде подготовлен и протестирован полноценный патч, решающий проблему (первый вариант исправления не решил проблему).

Источник: opennet.ru