Π ΡΠ΄ΡΠ΅ Linux Π²ΡΡΠ²Π»Π΅Π½Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡ (CVE-2021-33624), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΡ Π΅BPF Π΄Π»Ρ ΠΎΠ±Ρ ΠΎΠ΄Π° Π·Π°ΡΠΈΡΡ ΠΎΡ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΊΠ»Π°ΡΡΠ° Spectre, Π΄Π°ΡΡΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΏΠ°ΠΌΡΡΠΈ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΠ»ΠΎΠ²ΠΈΠΉ Π΄Π»Ρ ΡΠΏΠ΅ΠΊΡΠ»ΡΡΠΈΠ²Π½ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ. ΠΠ»Ρ Π°ΡΠ°ΠΊΠΈ Spectre ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π½Π°Π»ΠΈΡΠΈΠ΅ Π² ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡΠΈΡ ΠΊ ΡΠΏΠ΅ΠΊΡΠ»ΡΡΠΈΠ²Π½ΠΎΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ. Π§Π΅ΡΠ΅Π· ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΡ Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΠΌΠΈ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ BPF-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±ΠΈΡΡΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ Π² Π΅BPF ΠΈ Π΄ΠΎΠ±ΠΈΡΡΡΡ ΡΡΠ΅ΡΠΊΠΈ ΠΏΠΎ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΌ ΠΊΠ°Π½Π°Π»Π°ΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΠΏΠ°ΠΌΡΡΠΈ ΡΠ΄ΡΠ° ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΡ ΠΎΠ±Π»Π°ΡΡΠ΅ΠΉ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ.
Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡΡ Π²ΡΠ·Π²Π°Π½Π° Π½Π΅Π΄ΠΎΡΠ°Π±ΠΎΡΠΊΠ°ΠΌΠΈ Π² Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ΅, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π΄Π»Ρ Π²ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎΠΉ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ Π² BPF-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ . ΠΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΠΏΡΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°, Π½ΠΎ ΠΏΡΠΎΠΏΡΡΠΊΠ°Π΅Ρ Π²Π°ΡΠΈΠ°Π½ΡΡ Π²Π΅ΡΠ²Π»Π΅Π½ΠΈΡ, Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠ΅ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ Π½Π°Π±ΠΎΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄. ΠΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΆΠ΅ BPF ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ Π²Π΅ΡΠ²Π»Π΅Π½ΠΈΡ, Π½Π΅ ΡΡΡΡΠ½Π½ΡΠ΅ Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ, ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π½Π΅Π²Π΅ΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·Π°Π½Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠΌ ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Ρ Π² ΡΠΏΠ΅ΠΊΡΠ»ΡΡΠΈΠ²Π½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ Π°Π½Π°Π»ΠΈΠ·Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ «load» Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΠ°ΡΡΡΠΈΡΡΠ²Π°Π΅Ρ, ΡΡΠΎ Π² ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ΅Π³ΠΈΡΡΡ Ρ Π°Π΄ΡΠ΅ΡΠΎΠΌ, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²ΡΠ΅Π³Π΄Π° Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² Π·Π°Π΄Π°Π½Π½ΡΡ Π³ΡΠ°Π½ΠΈΡΠ°Ρ , Π½ΠΎ Π°ΡΠ°ΠΊΡΡΡΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΡ, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ ΠΏΠΎΠΏΡΡΠ°Π΅ΡΡΡ ΡΠΏΠ΅ΠΊΡΠ»ΡΡΠΈΠ²Π½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Ρ Π°Π΄ΡΠ΅ΡΠΎΠΌ, Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ ΡΡΠ»ΠΎΠ²ΠΈΡΠΌ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ.
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΡΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π°ΡΠΈΠ½Π°Ρ Ρ Π²ΡΠΏΡΡΠΊΠ° ΡΠ΄ΡΠ° 4.15 ΠΈ ΡΡΡΡΠ°Π½Π΅Π½Π° Π² ΡΠΎΡΠΌΠ΅ ΠΏΠ°ΡΡΠ΅ΠΉ (1, 2, 3, 4). Π Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π°Ρ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡ ΠΏΠΎΠΊΠ° ΠΎΡΡΠ°ΡΡΡΡ Π½Π΅ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΉ (Debian, RHEL, Ubuntu, Fedora, SUSE, Arch).
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ Π·Π°ΠΌΠ΅ΡΠΊΡ ΠΎ Π²Π»ΠΈΡΠ½ΠΈΠΈ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΡΠ΅Π΄ΡΡΠ² Π΄Π»Ρ Π·Π°ΡΠΈΡΡ ΠΎΡ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΊΠ»Π°ΡΡΠ° Spectre. Π Π·Π°ΠΌΠ΅ΡΠΊΠ΅ ΠΎΠ±ΠΎΠ±ΡΠ΅Π½Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠ° rr (Record and Replay), Π² ΡΠ²ΠΎΡ Π²ΡΠ΅ΠΌΡ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π² Mozilla Π΄Π»Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΠΌΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ Π² Firefox. ΠΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ², ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ ΡΠΎΠΊΡΠ°ΡΠΈΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ «rr sources» Π΄Π»Ρ ΡΠ΅ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° Ρ 3 ΠΌΠΈΠ½ΡΡ 19 ΡΠ΅ΠΊΡΠ½Π΄ Π΄ΠΎ 36 ΡΠ΅ΠΊΡΠ½Π΄.
ΠΠ²ΡΠΎΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΡΠ΅ΡΠΈΠ» ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΏΠΎΡΠ»Π΅ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π·Π°ΡΠΈΡΡ ΠΎΡ Spectre. ΠΠΎΡΠ»Π΅ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠΈΡΡΠ΅ΠΌΡ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ «mitigations=off» Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ «rr sources» Π±Π΅Π· ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΡΠΎΡΡΠ°Π²ΠΈΠ»ΠΎ 2 ΠΌΠΈΠ½ΡΡΡ 5 ΡΠ΅ΠΊΡΠ½Π΄ (Π² 1.6 ΡΠ°Π·Π° Π±ΡΡΡΡΠ΅Π΅), Π° Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠ΅ΠΉ — 33 ΡΠ΅ΠΊΡΠ½Π΄Ρ (Π½Π° 9% Π±ΡΡΡΡΠ΅Π΅). ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, ΡΡΠΎ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π·Π°ΡΠΈΡΡ ΠΎΡ Spectre Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π² 1.4 ΡΠ°Π·Π° ΡΠΎΠΊΡΠ°ΡΠΈΠ»ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π½Π° ΡΡΠΎΠ²Π½Π΅ ΡΠ΄ΡΠ° (c 2m9s Π΄ΠΎ 1m32s), Π½ΠΎ ΠΈ Π² Π΄Π²Π° ΡΠ°Π·Π° ΡΠΌΠ΅Π½ΡΡΠΈΠ»ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ (c 1m9s Π΄ΠΎ 0m33s), ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΈΠ·-Π·Π° ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΡΠ°Π±ΠΎΡΡ ΠΊΡΡΠ° CPU ΠΈ ΡΠ±ΡΠΎΡΠΎΠ² TLB ΠΏΡΠΈ Π²ΠΊΠ»ΡΡΡΠ½Π½ΠΎΠΉ Π·Π°ΡΠΈΡΠ΅ ΠΎΡ Spectre.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru