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