ΠΠΈΡ ΠΡΠΊ (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