ΠΡΠΎΠ΅ΠΊΡ Grsecurity ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» Π΄Π΅ΡΠ°Π»ΠΈ ΠΈ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Π° Π°ΡΠ°ΠΊΠΈ Π΄Π»Ρ Π½ΠΎΠ²ΠΎΠΉ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ (CVE-2021-26341) Π² ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°Ρ AMD, ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠΉ ΡΠΎ ΡΠΏΠ΅ΠΊΡΠ»ΡΡΠΈΠ²Π½ΡΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΠΏΠΎΡΠ»Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π±Π΅Π·ΡΡΠ»ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΏΡΡΠΌΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π°. Π ΡΠ»ΡΡΠ°Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ Π°ΡΠ°ΠΊΠΈ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΡ ΠΎΠ±Π»Π°ΡΡΠ΅ΠΉ ΠΏΠ°ΠΌΡΡΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½ ΡΠΊΡΠΏΠ»ΠΎΠΈΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠ°ΡΠΊΠ»Π°Π΄ΠΊΡ Π°Π΄ΡΠ΅ΡΠΎΠ² ΠΈ ΠΎΠ±ΠΎΠΉΡΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π·Π°ΡΠΈΡΡ KASLR (ΡΠ°Π½Π΄ΠΎΠΌΠΈΠ·Π°ΡΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ ΡΠ΄ΡΠ°) ΡΠ΅ΡΠ΅Π· Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π΅ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π² ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΠ΄ΡΠ° ePBF. ΠΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½Ρ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠΈ Π°ΡΠ°ΠΊ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΡΡΠ΅ΡΠΊΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΠΏΠ°ΠΌΡΡΠΈ ΡΠ΄ΡΠ°.
Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΡ, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ Π² Ρ ΠΎΠ΄Π΅ ΡΠΏΡΠ΅ΠΆΠ΄Π°ΡΡΠ΅Π³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΏΠ΅ΠΊΡΠ»ΡΡΠΈΠ²Π½ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ, ΡΠ»Π΅Π΄ΡΡΡΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ ΡΡΠ°Π·Ρ Π·Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° (SLS, Straight Line Speculation). ΠΡΠΈ ΡΡΠΎΠΌ ΠΏΠΎΠ΄ΠΎΠ±Π½Π°Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΡΡΠ»ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π°, Π½ΠΎ ΠΈ Π΄Π»Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°ΡΡΠΈΡ ΠΏΡΡΠΌΠΎΠΉ Π±Π΅Π·ΡΡΠ»ΠΎΠ²Π½ΡΠΉ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ JMP, RET ΠΈ CALL. Π‘Π»Π΅Π΄ΠΎΠΌ Π·Π° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠΌΠΈ Π±Π΅Π·ΡΡΠ»ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° ΠΌΠΎΠ³ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡΡΡ Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, Π½Π΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠ΅ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΠΎΡΠ»Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ Π½Π΅ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ, ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ ΠΏΡΠΎΡΡΠΎ ΠΎΡΠΊΠ°ΡΡΠ²Π°Π΅Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΈ Π½Π΅ ΡΡΠΈΡΡΠ²Π°Π΅Ρ ΡΠΏΠ΅ΠΊΡΠ»ΡΡΠΈΠ²Π½ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, Π½ΠΎ ΡΠ»Π΅Π΄ ΠΎΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΎΡΡΠ°ΡΡΡΡ Π² ΠΎΠ±ΡΠ΅ΠΌ ΠΊΡΡΠ΅ ΠΈ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΌ ΠΊΠ°Π½Π°Π»Π°ΠΌ.
ΠΠ°ΠΊ ΠΈ ΠΏΡΠΈ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ Spectre-v1 Π΄Π»Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»Π΅Π½ΠΈΡ Π°ΡΠ°ΠΊΠΈ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π½Π°Π»ΠΈΡΠΈΠ΅ Π² ΡΠ΄ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠ΅ΠΉ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ (Π³Π°Π΄ΠΆΠ΅ΡΠΎΠ²), ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡΠΈΡ ΠΊ ΡΠΏΠ΅ΠΊΡΠ»ΡΡΠΈΠ²Π½ΠΎΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΠ»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊ Π²ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ Π³Π°Π΄ΠΆΠ΅ΡΠΎΠ² Π² ΠΊΠΎΠ΄Π΅ ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π² Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ, Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΡ ΡΠΏΠ΅ΠΊΡΠ»ΡΡΠΈΠ²Π½ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. Π£ΡΠ»ΠΎΠ²ΠΈΡ Π΄Π»Ρ ΡΠΏΠ΅ΠΊΡΠ»ΡΡΠΈΠ²Π½ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠΎΠ·Π΄Π°Π½Ρ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π½Π΅ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ Π² Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅ eBPF. ΠΠ»Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π³Π°Π΄ΠΆΠ΅ΡΠΎΠ² ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ eBPF ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ Π·Π°ΠΏΡΠ΅ΡΠΈΡΡ Π½Π΅ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ eBPF Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ («sysctl -w kernel.unprivileged_bpf_disabled=1»).
Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡΡ Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°Π΅Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΡ Π½Π° Π±Π°Π·Π΅ ΠΌΠΈΠΊΡΠΎΠ°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΡ Zen1 ΠΈ Zen2, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΠΈ Π²ΡΠΎΡΠΎΠ΅ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ² AMD EPYC ΠΈ AMD Ryzen Threadripper, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΡ AMD Ryzen 2000/3000/4000/5000, AMD Athlon, AMD Athlon X, AMD Ryzen Threadripper PRO ΠΈ APU ΡΠ΅ΡΠΈΠΈ A. ΠΠ»Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΏΠ΅ΠΊΡΠ»ΡΡΠΈΠ²Π½ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π½ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ INT3 ΠΈΠ»ΠΈ LFENCE ΠΏΠΎΡΠ»Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π²Π΅ΡΠ²Π»Π΅Π½ΠΈΡ (RET, JMP, CALL).
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru