Patches เปเบ™เบฐเบ™เปเบฒเป€เบžเบทเปˆเบญ Randomize เบ—เบตเปˆเบขเบนเปˆ stack kernel Linux เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป‚เบ—เบฅเบฐเบšเบปเบš

Kees Cook, เบญเบฐเบ”เบตเบ”เบซเบปเบงเบซเบ™เป‰เบฒเบœเบนเป‰เบšเปเบฅเบดเบซเบฒเบ™เบฅเบฐเบšเบปเบšเบ‚เบญเบ‡ kernel.org เปเบฅเบฐเบœเบนเป‰เบ™เปเบฒเบ‚เบญเบ‡เบ—เบตเบกเบ‡เบฒเบ™เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž Ubuntu, เบ›เบฐเบˆเบธเบšเบฑเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆ Google เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบฎเบฑเบเบชเบฒเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบ‚เบญเบ‡ Android เปเบฅเบฐ ChromeOS, เป€เบœเบตเบเปเบœเปˆเบŠเบธเบ”เบ‚เบญเบ‡ patches เป€เบžเบทเปˆเบญ randomize offsets เปƒเบ™ stack kernel เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบเบฒเบ™เป‚เบ—เบฅเบฐเบšเบปเบš. Patches เบ›เบฑเบšเบ›เบธเบ‡เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบ‚เบญเบ‡ kernel เป‚เบ”เบเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบเบฒเบ™เบˆเบฑเบ”เบงเบฒเบ‡ stack, เป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เป‚เบˆเบกเบ•เบตเปƒเบ™ stack เบกเบตเบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบเบซเบผเบฒเบเปเบฅเบฐเบชเบปเบšเบœเบปเบ™เบชเปเบฒเป€เบฅเบฑเบ”เบซเบ™เป‰เบญเบ. เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เป‚เบ›เป€เบŠเบ”เป€เบŠเบต ARM64 เปเบฅเบฐ x86/x86_64.

เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเบชเปเบฒเบฅเบฑเบš patch เป€เบ›เบฑเบ™เบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™ PaX RANDKSTACK. เปƒเบ™เบ›เบต 2019, Elena Reshetova, เบงเบดเบชเบฐเบงเบฐเบเบญเบ™เบˆเบฒเบ Intel, เป„เบ”เป‰เบžเบฐเบเบฒเบเบฒเบกเบชเป‰เบฒเบ‡เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ™เบตเป‰เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบฅเบงเบกเบขเบนเปˆเปƒเบ™ Linux kernel เบ•เบปเป‰เบ™เบ•เป. เบ•เปเปˆเบกเบฒ, เบเบฒเบ™เบฅเบดเป€เบฅเบตเปˆเบกเป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ”เบ Kees Cook, เบœเบนเป‰เบ—เบตเปˆเบ™เปเบฒเบชเบฐเป€เบซเบ™เบตเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบšเบชเบฐเบšเบฑเบšเบ•เบปเป‰เบ™เบ•เปเบ‚เบญเบ‡เปเบเปˆเบ™. The patches เป„เบ”เป‰เบ–เบทเบเบงเบฒเบ‡เปเบœเบ™เบ—เบตเปˆเบˆเบฐเบฅเบงเบกเป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ›เปˆเบญเบ 5.13. เป‚เปเบ”เบˆเบฐเบ–เบทเบเบ›เบดเบ”เปƒเบŠเป‰เบ‡เบฒเบ™เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. เป€เบžเบทเปˆเบญเป€เบ›เบตเบ”เปƒเบŠเป‰เบกเบฑเบ™, เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเปเบ–เบงเบ„เปเบฒเบชเบฑเปˆเบ‡ kernel โ€œrandomize_kstack_offset=on/offโ€ เปเบฅเบฐเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT เบ–เบทเบเบชเบฐเป€เปœเบตเปƒเบซเป‰. เบ„เปˆเบฒเปƒเบŠเป‰เบˆเปˆเบฒเบเป€เบเบตเบ™เบ‚เบญเบ‡เบเบฒเบ™เป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบซเบกเบ”เปเบกเปˆเบ™เบ„เบฒเบ”เบงเปˆเบฒเบˆเบฐเบกเบตเบเบฒเบ™เบชเบนเบ™เป€เบชเบเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ›เบฐเบกเบฒเบ™ 1%.

เป‚เบ”เบเป€เบ™เบทเป‰เบญเปเบ—เป‰เปเบฅเป‰เบงเบ‚เบญเบ‡เบเบฒเบ™เบ›เบปเบเบ›เป‰เบญเบ‡เบ—เบตเปˆเบชเบฐเป€เบซเบ™เบตเปเบกเปˆเบ™เบเบฒเบ™เป€เบฅเบทเบญเบ stack เปเบšเบšเบชเบธเปˆเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบญเบตเป‰เบ™เบฅเบฐเบšเบปเบšเปเบ•เปˆเบฅเบฐเบ„เบปเบ™, เป€เบŠเบดเปˆเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบเบฒเบเบ—เบตเปˆเบˆเบฐเบเปเบฒเบ™เบปเบ”เบฎเบนเบšเปเบšเบš stack เปƒเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบซเบผเบฑเบ‡เบˆเบฒเบเป„เบ”เป‰เบฎเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบขเบนเปˆ, เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบเบฒเบ™เป‚เบ—เบฅเบฐเบšเบปเบšเบ•เปเปˆเป„เบ›เบˆเบฐเบ›เปˆเบฝเบ™เบ—เบตเปˆเบขเบนเปˆเบ–เบฒเบ™เบ‚เบญเบ‡ stack. เบšเปเปˆเบ„เบทเบเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” PaX RANDKSTACK, เปƒเบ™ patches เบ—เบตเปˆเบชเบฐเป€เบซเบ™เบตเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบฅเบงเบกเบขเบนเปˆเปƒเบ™ kernel, เบเบฒเบ™เบชเบธเปˆเบกเปเบกเปˆเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบšเปเปˆเป„เบ”เป‰เบขเบนเปˆเปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เปเบฒเบญเบดเบ” (cpu_current_top_of_stack), เปเบ•เปˆเบซเบผเบฑเบ‡เบˆเบฒเบเบเปเบฒเบ™เบปเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡ pt_regs, เป€เบŠเบดเปˆเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เบšเปเปˆเป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบญเบตเบ‡เปƒเบชเปˆ ptrace เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบŠเบปเบ”เป€เบŠเบตเบเปเบšเบšเบชเบธเปˆเบก. เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เป‚เบ—เบฅเบฐเบšเบปเบšเบ—เบตเปˆเบเบฒเบงเบ™เบฒเบ™.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™