ΠΠΈΡ ΠΡΠΊ, ΠΏΠΎΡΠ°Π½Π΅ΡΠ΅Π½ Π³Π»Π°Π²Π΅Π½ ΡΠΈΡΡΠ΅ΠΌΡΠΊΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ Π½Π° kernel.org ΠΈ Π²ΠΎΠ΄Π°Ρ Π½Π° Π±Π΅Π·Π±Π΅Π΄Π½ΠΎΡΠ½ΠΈΠΎΡ ΡΠΈΠΌ Π½Π° Ubuntu, ΠΊΠΎΡ ΡΠ΅Π³Π° ΡΠ°Π±ΠΎΡΠΈ Π²ΠΎ Google Π½Π° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π°ΡΠ΅ Π½Π° Android ΠΈ ChromeOS, ΠΎΠ±ΡΠ°Π²ΠΈ Π·Π±ΠΈΡ Π½Π° Π·Π°ΠΊΡΠΏΠΈ Π·Π° ΡΠ°Π½Π΄ΠΎΠΌΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΠΏΠΎΠΌΠ΅ΡΡΡΠ²Π°ΡΠ° Π²ΠΎ ΡΡΠ΅ΠΊΠΎΡ Π½Π° ΠΊΠ΅ΡΠ½Π΅Π»ΠΎΡ ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΡΠΊΠΈ ΠΏΠΎΠ²ΠΈΡΠΈ. ΠΠ°ΠΊΡΠΏΠΈ ΡΠ° ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°Π°Ρ Π±Π΅Π·Π±Π΅Π΄Π½ΠΎΡΡΠ° Π½Π° ΠΊΠ΅ΡΠ½Π΅Π»ΠΎΡ ΡΠΎ ΠΏΡΠΎΠΌΠ΅Π½Π° Π½Π° ΠΏΠΎΡΡΠ°Π²Π΅Π½ΠΎΡΡΠ° Π½Π° ΡΡΠ΅ΠΊΠΎΡ, ΡΡΠΎ Π³ΠΈ ΠΏΡΠ°Π²ΠΈ Π½Π°ΠΏΠ°Π΄ΠΈΡΠ΅ Π½Π° ΡΡΠ΅ΠΊΠΎΡ ΠΌΠ½ΠΎΠ³Ρ ΠΏΠΎΡΠ΅ΡΠΊΠΈ ΠΈ ΠΏΠΎΠΌΠ°Π»ΠΊΡ ΡΡΠΏΠ΅ΡΠ½ΠΈ. ΠΠΎΡΠ΅ΡΠ½Π°ΡΠ° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ° ΠΏΠΎΠ΄Π΄ΡΠΆΡΠ²Π° ARM64 ΠΈ x86/x86_64 ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈ.
ΠΡΠΈΠ³ΠΈΠ½Π°Π»Π½Π°ΡΠ° ΠΈΠ΄Π΅ΡΠ° Π·Π° Π»Π΅ΠΏΠ΅Π½ΠΊΠ°ΡΠ° ΠΏΡΠΈΠΏΠ°ΡΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ PaX RANDKSTACK. ΠΠΎ 2019 Π³ΠΎΠ΄ΠΈΠ½Π°, ΠΠ»Π΅Π½Π° Π Π΅ΡΠ΅ΡΠΎΠ²Π°, ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ ΠΎΠ΄ ΠΠ½ΡΠ΅Π», ΡΠ΅ ΠΎΠ±ΠΈΠ΄Π΅ Π΄Π° ΡΠΎΠ·Π΄Π°Π΄Π΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ° Π½Π° ΠΎΠ²Π°Π° ΠΈΠ΄Π΅ΡΠ° ΠΏΠΎΠ³ΠΎΠ΄Π½Π° Π·Π° Π²ΠΊΠ»ΡΡΡΠ²Π°ΡΠ΅ Π²ΠΎ Π³Π»Π°Π²Π½ΠΈΠΎΡ ΠΊΠ΅ΡΠ½Π΅Π» Π½Π° ΠΠΈΠ½ΡΠΊΡ. ΠΠΎΠ΄ΠΎΡΠ½Π°, ΠΈΠ½ΠΈΡΠΈΡΠ°ΡΠΈΠ²Π°ΡΠ° ΡΠ° ΠΏΡΠ΅Π·Π΅Π΄Π΅ Kees Cook, ΠΊΠΎΡ ΠΏΡΠ΅ΡΡΡΠ°Π²ΠΈ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ° ΠΏΠΎΠ³ΠΎΠ΄Π½Π° Π·Π° Π³Π»Π°Π²Π½Π°ΡΠ° Π²Π΅ΡΠ·ΠΈΡΠ° Π½Π° ΠΊΠ΅ΡΠ½Π΅Π»ΠΎΡ. ΠΠ°ΠΊΡΠΏΠΈΡΠ΅ ΡΠ΅ ΠΏΠ»Π°Π½ΠΈΡΠ° Π΄Π° Π±ΠΈΠ΄Π°Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈ ΠΊΠ°ΠΊΠΎ Π΄Π΅Π» ΠΎΠ΄ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ΡΠΎ 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