Zola Bridges ΠΈΠ· ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Google ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΠ» Π΄Π»Ρ Π½Π°Π±ΠΎΡΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ² LLVM ΠΏΠ°ΡΡ Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Π·Π°ΡΠΈΡΡ SESES (Speculative Execution Side Effect Suppression), ΠΏΠΎΠΌΠΎΠ³Π°ΡΡΠ΅ΠΉ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ Π°ΡΠ°ΠΊΠΈ Π½Π° ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ ΡΠΏΠ΅ΠΊΡΠ»ΡΡΠΈΠ²Π½ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π² CPU Intel, ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ LVI. ΠΠ΅ΡΠΎΠ΄ Π·Π°ΡΠΈΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΈ ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ ΠΏΡΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ LFENCE, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ΄ΡΡΠ°Π²Π»ΡΡΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠ΅ΠΉ ΡΡΠ΅Π½ΠΈΡ ΠΈΠ· ΠΏΠ°ΠΌΡΡΠΈ ΠΈΠ»ΠΈ Π·Π°ΠΏΠΈΡΠΈ Π² ΠΏΠ°ΠΌΡΡΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΠ΅ΡΠ΅Π΄ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠ΅ΠΉ Π²Π΅ΡΠ²Π»Π΅Π½ΠΈΡ Π² Π³ΡΡΠΏΠΏΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ, Π·Π°Π²Π΅ΡΡΠ°ΡΡΠ΅ΠΉ Π±Π»ΠΎΠΊ.
ΠΠ½ΡΡΡΡΠΊΡΠΈΡ LFENCE ΠΎΠΆΠΈΠ΄Π°Π΅Ρ ΡΠΈΠΊΡΠ°ΡΠΈΠΈ Π²ΡΠ΅Ρ
ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ
ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΡΡΠ΅Π½ΠΈΡ ΠΈΠ· ΠΏΠ°ΠΌΡΡΠΈ ΠΈ Π·Π°ΠΏΡΠ΅ΡΠ°Π΅Ρ ΡΠΏΡΠ΅ΠΆΠ΄Π°ΡΡΠ΅Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ
ΠΏΠΎΡΠ»Π΅ LFENCE ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ, Π΄ΠΎ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΡΠΈΠΊΡΠ°ΡΠΈΡ Π±ΡΠ΄Π΅Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½Π°. ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ LFENCE ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΌΡ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ Π·Π°ΡΠΈΡΡ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π² ΠΊΡΠ°ΠΉΠ½ΠΈΡ
ΡΠ»ΡΡΠ°ΡΡ
Π΄Π»Ρ ΠΎΡΠΎΠ±ΠΎ ΠΊΡΠΈΡΠΈΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠΠΎΠΌΠΈΠΌΠΎ ΠΏΠΎΠ»Π½ΠΎΠΉ Π·Π°ΡΠΈΡΡ ΠΏΠ°ΡΡ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΡΡΠΈ ΡΠ»Π°Π³Π°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΡ
Π²ΡΠ±ΠΎΡΠΎΡΠ½ΠΎ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠ΅ ΡΡΠΎΠ²Π½ΠΈ Π·Π°ΡΠΈΡΡ Π΄Π»Ρ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΡ Π½Π΅Π³Π°ΡΠΈΠ²Π½ΠΎΠ³ΠΎ Π²Π»ΠΈΡΠ½ΠΈΡ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ.
Π ΠΏΡΠΎΠ²Π΅Π΄ΡΠ½Π½ΡΡ
ΡΠ΅ΡΡΠ°Ρ
ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π·Π°ΡΠΈΡΡ SESES Π΄Π»Ρ ΠΏΠ°ΠΊΠ΅ΡΠ° BoringSSL ΠΏΡΠΈΠ²Π΅Π»ΠΎ ΠΊ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΡ ΡΠΈΡΠ»Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ Π² 14 ΡΠ°Π· — ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠΎΠ±ΡΠ°Π½Π½ΠΎΠ³ΠΎ Ρ Π·Π°ΡΠΈΡΠΎΠΉ Π²Π°ΡΠΈΠ°Π½ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π² ΡΡΠ΅Π΄Π½Π΅ΠΌ ΠΎΠΊΠ°Π·Π°Π»Π°ΡΡ Π²ΡΠ΅Π³ΠΎ 7.1% ΠΎΡ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ Π½Π΅Π·Π°ΡΠΈΡΡΠ½Π½ΠΎΠ³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠ° (ΡΠ°Π·Π±ΡΠΎΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠ΅ΡΡΠ° ΠΎΡ 4% Π΄ΠΎ 23%).
ΠΠ»Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ, ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΡΠΉ ΡΠ°Π½Π΅Π΅ Π΄Π»Ρ GNU Assembler ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ, ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡΠΈΠΉ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΡ LFENCE ΠΏΠΎΡΠ»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈΠ· ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΠΏΠ΅ΡΠ΅Π΄ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠΌΠΈ Π²Π΅ΡΠ²Π»Π΅Π½ΠΈΡ, ΠΏΠΎΠΊΠ°Π·Π°Π» ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π² 5 ΡΠ°Π· (22% ΠΎΡ ΠΊΠΎΠ΄Π° Π±Π΅Π· Π·Π°ΡΠΈΡΡ). ΠΠ΅ΡΠΎΠ΄ Π·Π°ΡΠΈΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠ°ΠΌΠΈ Intel, Π½ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π΄Π»Ρ Π½Π΅Π³ΠΎ ΠΏΠΎΠΊΠ° Π½Π΅ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Ρ. ΠΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΠΈ, Π²ΡΡΠ²ΠΈΠ²ΡΠΈΠ΅ Π°ΡΠ°ΠΊΡ LVI, ΠΏΡΠΎΠ³Π½ΠΎΠ·ΠΈΡΠΎΠ²Π°Π»ΠΈ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΏΠΎΠ»Π½ΠΎΠΉ Π·Π°ΡΠΈΡΡ Π² 2-19 ΡΠ°Π·.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru