ΠΡΡΠΏΠΏΠ° ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΈΠ· ΠΠΌΡΡΠ΅ΡΠ΄Π°ΠΌΡΠΊΠΎΠ³ΠΎ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅ΡΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠ»Π° Π½ΠΎΠ²ΡΡ ΡΠ΅Ρ Π½ΠΈΠΊΡ Π°ΡΠ°ΠΊΠΈ SLAM (Spectre Linear Address Masking), ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ ΠΌΠΈΠΊΡΠΎΠ°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΡΡ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΊΠ»Π°ΡΡΠ° Spectre, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΡΠ΅ΡΠΊΠ° Π΄Π°Π½Π½ΡΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΡΠΈ ΡΡΠ°Π½ΡΠ»ΡΡΠΈΠΈ Π½Π΅ΠΊΠ°Π½ΠΎΠ½ΠΈΡΠ΅ΡΠΊΠΈΡ Π°Π΄ΡΠ΅ΡΠΎΠ², Π° Π΄Π»Ρ ΠΎΠ±Ρ ΠΎΠ΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ ΠΊΠ°Π½ΠΎΠ½ΠΈΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΈΠ²Π»Π΅ΠΊΠ°ΡΡΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ Π² Π½ΠΎΠ²ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΡ Π°Π΄ΡΠ΅ΡΠΎΠ². ΠΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΈ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π° Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΠ°Ρ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·Π²Π»Π΅ΡΡ ΠΈΠ· ΠΏΠ°ΠΌΡΡΠΈ ΡΠ΄ΡΠ° Π΄Π°Π½Π½ΡΠ΅, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠΉ ΠΌΠ°ΡΠΊΠ΅ (ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΊΠ°ΠΊ Π·Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄Π΅ΡΡΡΠΊΠΎΠ² ΡΠ΅ΠΊΡΠ½Π΄ Π² Ubuntu Π²ΡΠ΄Π΅Π»ΠΈΡΡ ΠΈΠ· ΠΏΠ°ΠΌΡΡΠΈ ΡΠ΄ΡΠ° ΡΡΡΠΎΠΊΡ Ρ Ρ ΡΡΠ΅ΠΌ ΠΏΠ°ΡΠΎΠ»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ root).
ΠΡΠ°ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°Ρ Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°ΠΌΠΈ Intel, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠΈΠΌΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ LAM (Linear Address Masking), ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°ΠΌΠΈ AMD Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ UAI (Upper Address Ignore) ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°ΠΌΠΈ ARM Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ TBI (Top Byte Ignore). Π£ΠΊΠ°Π·Π°Π½Π½ΡΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΡΡΡ Π±ΠΈΡΠΎΠ² 64-ΡΠ°Π·ΡΡΠ΄Π½ΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π½Π΅ ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ Π°Π΄ΡΠ΅ΡΠ°ΡΠΈΠ΅ΠΉ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ (Π΄Π»Ρ ΠΎΠ±ΡΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΡΠΎΠ»ΡΠΊΠΎ ΠΏΠ°ΠΌΡΡΠΈ, ΡΡΠΎ ΠΌΠΎΠ³ΡΡ Π°Π΄ΡΠ΅ΡΠΎΠ²Π°ΡΡ 64-ΡΠ°Π·ΡΡΠ΄Π½ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ Π²Π΅ΡΡ Π½ΠΈΠ΅ Π±ΠΈΡΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ). ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, ΡΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΡ Intel, AMD ΠΈ ARM Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ LAM, UAI ΠΈ TBI Π΅ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π°Π½ΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½Ρ, Π½ΠΎ ΠΌΠ°ΡΡΠΎΠ²ΠΎ Π½Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΡΡ, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ SLAM ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΠΏΠ΅ΠΊΡΠ»ΡΡΠΈΠ²Π½ΠΎΠΉ Π°ΡΠ°ΠΊΠΎΠΉ Π½Π° Π±ΡΠ΄ΡΡΠΈΠ΅ CPU. ΠΡΠ°ΠΊΠ° ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π° Π½Π° ΡΡΠ°ΡΡΡ CPU AMD Zen+ ΠΈ Zen 2, ΠΏΠΎΠ΄Π²Π΅ΡΠΆΠ΅Π½Π½ΡΡ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ CVE-2020-12965.
ΠΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ Ρ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠ΅ΠΉ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠ΅ΠΉ Spectre Π΄Π»Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»Π΅Π½ΠΈΡ Π°ΡΠ°ΠΊΠΈ SLAM ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π½Π°Π»ΠΈΡΠΈΠ΅ Π² ΡΠ΄ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠ΅ΠΉ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ (Π³Π°Π΄ΠΆΠ΅ΡΠΎΠ²), ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡΠΈΡ ΠΊ ΡΠΏΠ΅ΠΊΡΠ»ΡΡΠΈΠ²Π½ΠΎΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ. ΠΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡ ΠΊ ΡΠΏΠ΅ΠΊΡΠ»ΡΡΠΈΠ²Π½ΠΎΠΌΡ ΡΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΈΠ· ΠΏΠ°ΠΌΡΡΠΈ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π²Π½Π΅ΡΠ½ΠΈΡ ΡΡΠ»ΠΎΠ²ΠΈΠΉ, Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π²Π»ΠΈΡΡΡ Π°ΡΠ°ΠΊΡΡΡΠΈΠΉ. ΠΠΎΡΠ»Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΎΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³Π½ΠΎΠ·Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠΏΠ΅ΠΊΡΠ»ΡΡΠΈΠ²Π½ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΡΠ±ΡΠ°ΡΡΠ²Π°Π΅ΡΡΡ, Π½ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΎΡΡΠ°ΡΡΡΡ Π² ΠΊΡΡΠ΅ ΠΈ ΠΌΠΎΠ³ΡΡ Π·Π°ΡΠ΅ΠΌ Π±ΡΡΡ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½Ρ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΠΎ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΌ ΠΊΠ°Π½Π°Π»Π°ΠΌ. ΠΠ»Ρ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ ΠΎΡΠ΅Π²ΡΠΈΡ Π² ΠΊΡΡΠ΅ Π΄Π°Π½Π½ΡΡ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½ ΠΌΠ΅ΡΠΎΠ΄ Evict+Reload, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠΉ Π½Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΉ Π΄Π»Ρ Π²ΡΡΠ΅ΡΠ½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΈΠ· ΠΊΡΡΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ, ΡΠ°Π²Π½ΠΎΠΌΠ΅ΡΠ½ΠΎ Π·Π°ΠΏΠΎΠ»Π½ΡΡΡΠ°Ρ ΠΊΡΡ ΡΠΈΠΏΠΎΠ²ΡΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΡΠΌ) ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΠ΄ΠΈΡΡ ΠΎ Π½Π°Π»ΠΈΡΠΈΠΈ Π΄Π°Π½Π½ΡΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΠΎΠΌ ΠΊΡΡΠ΅.
ΠΠ»Ρ ΡΠΎΠ²Π΅ΡΡΠ΅Π½ΠΈΡ Π°ΡΠ°ΠΊΠΈ SLAM ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π³Π°Π΄ΠΆΠ΅ΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΠΎΠ΄Π°, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΠ΅ΠΌΡΠ΅ Π°ΡΠ°ΠΊΡΡΡΠΈΠΌ Π΄Π°Π½Π½ΡΠ΅ (Π½ΠΈΠΆΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ «secret») ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΊΠ°ΠΊ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ: void unmasked_gadget(long **secret) { **secret; }
ΠΡΠΌΠ΅ΡΠ°Π΅ΡΡΡ, ΡΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΡΠ°Π±Π»ΠΎΠ½Ρ ΠΊΠΎΠ΄Π° ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ
, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΠ΄ΡΠ΅ Linux Π²ΡΡΠ²Π»Π΅Π½Ρ Π΄Π΅ΡΡΡΠΊΠΈ ΡΡΡΡΡ ΡΠ°ΠΊΠΈΡ
Π³Π°Π΄ΠΆΠ΅ΡΠΎΠ², ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ
ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΎΡΠ΅Π½ ΠΏΡΠΈΠ³ΠΎΠ΄Π½Ρ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² ΡΠΊΡΠΏΠ»ΠΎΠΈΡΠ°Ρ
. Π£ΡΠ΅ΡΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π° ΡΠ΅ΡΠ΅Π· Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ Π³Π°Π΄ΠΆΠ΅ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ, Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΡ
ΡΠΏΠ΅ΠΊΡΠ»ΡΡΠΈΠ²Π½ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ Intel Π½Π°ΠΌΠ΅ΡΠ΅Π½Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ΅ΡΠΊΠΈ Π΄ΠΎ Π½Π°ΡΠ°Π»Π° ΠΏΠΎΡΡΠ°Π²ΠΊΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ² Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ LAM. ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ AMD ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π»Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π°ΡΠ°ΠΊ ΠΊΠ»Π°ΡΡΠ° Spectre v2. Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΠ΄ΡΠ° Linux Π΄Π»Ρ Π·Π°ΡΠΈΡΡ ΠΎΡ Π°ΡΠ°ΠΊΠΈ ΡΠ΅ΡΠΈΠ»ΠΈ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ LAM Π΄ΠΎ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΉ Intel ΠΏΠΎ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru