Представлені патчі для рандомізації адрес стека ядра Linux при системних викликах

Кіс Кук (Kees Cook), колишній головний сисадмін kernel.org та лідер Ubuntu Security Team, який нині працює в компанії Google над забезпеченням захисту Android та ChromeOS, опублікував набір патчів з реалізацією рандомізації зміщень у стеку ядра при обробці системних викликів. Патчі підвищують безпеку ядра шляхом зміни розміщення стека, що робить атаки на стек значно складнішим і менш успішним заняттям. Початкова реалізація підтримує процесори ARM64 та x86/x86_64.

Початкова ідея патча належить проекту PaX RANDKSTACK. У 2019 році Олена Решетова, інженер із фірми Intel, спробувала створити реалізацію цієї ідеї, придатну для включення до основного складу ядра Linux. Пізніше ініціативу підхопив Кіс Кук, який і представив реалізацію, придатну для основного варіанту ядра. Патчі планується включити до складу випуску 5.13. Режим буде вимкнено за замовчуванням. Для включення запропоновано параметр командного рядка ядра «randomize_kstack_offset=on/off» та налаштування CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT. Накладні витрати при включенні режиму оцінюються приблизно 1% втрати продуктивності.

Суть запропонованого захисту у виборі випадкового зміщення стека при кожному системному виклику, що ускладнює визначення розкладки стека в пам'яті, навіть отримавши дані про адреси, так як при наступному системному виклику базова стека адреса зміниться. На відміну від реалізації PaX RANDKSTACK у запропонованих для включення в ядро ​​патчах рандомізація виконується не на початковій стадії (cpu_current_top_of_stack), а після виставлення структури pt_regs, що унеможливлює використання методів на основі ptrace для визначення рандомізованого зміщення в процесі роботи тривалого системного виклику.

Джерело: opennet.ru

Додати коментар або відгук