Релиз модели4 сентября 2026 г., 04:21 МСК🤖 Auto

Linux 7.3: RandStruct отключен по умолчанию при наличии Rust

В ядре Linux 7.3 безопасность компромисс: функция RandStruct отключена по умолчанию, если включена поддержка Rust, чтобы обеспечить корректную сборку allmodconfig.

Баннер новости 6736

Конфликт безопасности и покрытия сборки

В релизе Linux 7.3, ожидаемом в конце сентября 2026 года, произошло существенное изменение в конфигурации ядра. Функция RandStruct — механизм защиты, случайным образом изменяющий макет памяти структур ядра на этапе сборки — теперь отключается по умолчанию, если в системе доступен рабочий инструмент Rust и архитектура процессора поддерживает Rust.

Инициатором изменений стал Марк Браун (Mark Brown). В своем патче он объяснил, что текущая реализация RandStruct не поддерживает язык Rust. Это создает жесткую зависимость в Kconfig: включение RandStruct автоматически отключает Rust. Поскольку стандартная сборка покрытия allmodconfig требует включения всех модулей, наличие Rust приводило к тому, что сборка либо падала, либо отключала защиту, что противоречило целям тестирования.

Технические детали и обходные пути

Разработчики решили проблему путем отключения RandStruct по умолчанию при наличии Rust. Это позволяет избежать циклических зависимостей в конфигурации. Однако это создает ситуацию, при которой ядро может быть собрано без обеих функций (и без Rust, и без RandStruct), если конфигурация не настроена явно.

Для пользователей, которым критически важна защита RandStruct, остается возможность собрать ядро с нестандартной конфигурацией, явно отключив поддержку Rust. Это временное решение, так как в будущем ожидается полная интеграция RandStruct с кодом на Rust.

Сравнение конфигураций

В таблице ниже приведено сравнение поведения ядра до и после изменений в Linux 7.3:

Параметр Linux до 7.3 Linux 7.3+
RandStruct (по умолчанию) Включен Отключен (если есть Rust)
Rust (по умолчанию) Отключен (при включенном RandStruct) Включен (при доступном тулчейне)
Сборка allmodconfig Возможна, но без Rust Возможна с полным покрытием модулей
Безопасность памяти Выше (за счет рандомизации) Зависит от выбора пользователя

Почему это важно

Это изменение подчеркивает растущую роль Rust в экосистеме Linux. Несмотря на то, что RandStruct является важным инструментом защиты от уязвимостей, способность собирать ядро с полным покрытием модулей (allmodconfig) критически важна для обнаружения регрессий и обеспечения стабильности. Отказ от RandStruct в пользу более широкого тестирования и поддержки Rust — это шаг к будущему, где безопасность будет обеспечиваться не только рандомизацией, но и типобезопасностью самого языка.

Источник: Phoronix ↗