αααα»αα’αααααααΆαααααΆαααααΈ Vrije Universiteit Amsterdam ααΆαααααΎαααΆαααΆααααααααααααΈαα½ααα αααα»ααα ααΆααααααααααΈααααΌααααΆαααααααααα Intel αα·α ARM processors αααααΆααααααααααααααΆαααΆαααααααα Spectre-v2 αααα’αα»ααααΆαα±ααααα»αααααααΆααααααααΆααααααααΆαααΆαααΆα eIBRS αα·α CSV2 αααααΆααααααααα processors . ααΆαααΆααααααααααααΌαααΆαααααααααααααΆα αααΎαα BHI (Branch History Injection, CVE-2022-0001), BHB (Branch History Buffer, CVE-2022-0002) αα·α Spectre-BHB (CVE-2022-23960) ααααα·αααααΆα’αααΈααΆααααα αΆαααααααααααΆαα αααα αΆααΌα ααααΆ (BHI - ααΆαααΆααααα αΆαααααααααΆαααααααααα·ααα·αααα·ααααααααααΆ α§ααΆα ααα ααααΎαααΆαα’αααααααΎααααΆαα αα·αααΊααα BHB - ααΆαααΆααααα αΆααα ααααα·αα―ααα·αααα·ααΌα ααααΆ α§ααΆα ααα eBPF JIT αα·αααΊααα)α
α’αααααααΆαααααΆαααΆααααα αΆαααΈααΆαααααααααααα ααΆαααΆααααα’αα»ααααΆαα±ααααΆααααα·ααααααααΆαα’αααΎα α·αααααΈα’αααα αα αΆαααΊαααααΈααα αα’αααααααΎααααΆααα ααΆα§ααΆα ααα ααΆααααΌαααΆααααα αΆαααΈαααα αααααααΎααΆαααααααααααα αααααΆααααα α ααΆααΊα’αΆα ααααΎαα ααΆαααΎααααΈαααααα ααααΈααΊαααααααααα’αΆααααααΌαααααα’αααααααααΆαααααααααΆααα’αααααααΎααααΆαα root ααααααα»αααΈα―αααΆα /etc/shadow α ααΆαααααααααααα αααα αΆαααΈααααααΆαααααΆαααααααααααα ααΆαααΆαααααααααααα»αααααα·αα―ααα·αααα·αα½α (ααΆαααΆααααα αΆαααΊααααα ααΊααα) αααααααΎαααααα·ααΈ eBPF ααααααα»ααααα’αααααααΎααααΆααα ααΆααα’αΆα ααααΎαααα½αα±αα eBPF α§ααααα Spectre αααααΆαααααΆαααα αααα»αααΌαααΊααα ααααΆααααααΆααααααααΆαααααΆααα αααααΆαααααα·ααααα·ααΆαααΆαααααΆαα

ααΆαααΆαααααααααααααα α‘αΎααα αααα»αααααααααααααΎαααΆα Intel αα αα α»ααααααααΆαα αααΎα ααΎαααααα processors ααααΈαααα½ααΆα Atom α αααα»αα ααααααααααααααααΎαααΆα ARM, Cortex-A15, Cortex-A57, Cortex-A7*, Cortex-X1, Cortex-X2, Cortex-A710, Neoverse N1, Neoverse N2, Neoverse V1 αα·ααααα ααααΆαααααααΈα Cortex-R αα½αα ααα½αααααΌαααΆααααααααααΆααααααααα αΆαααα αααααΆαααΆαααααΆαααααΆα ααΆαααΆαααααααααα·ααααα αΆααα αααα»αααααααααααααΎαααΆα AMD ααα ααΎααααΈαα»αααααΆαααααα αΆ αα·ααΈααΆαααααααααααααααΆα αααΎαααααΌαααΆαααααΎα‘αΎαααΎααααΈαααααααΆααααΆαααΆαααααααα αααα’αΆα ααααΌαααΆαααααΎαα»ααααααΌαααΆαααααΆαααΆαααΆααααααααΉααα αααα»ααααΌααα CPU ααΆαααα’ααΆααα
ΠΠ»Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ Π°ΡΠ°ΠΊ ΡΠ΅ΡΠ΅Π· ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΡ eBPF ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ eBPF-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π½Π΅ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ, Π·Π°ΠΏΠΈΡΠ°Π² 1 Π² ΡΠ°ΠΉΠ» Β«/proc/sys/kernel/unprivileged_bpf_disabledΒ» ΠΈΠ»ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ Β«sysctl -w kernel.unprivileged_bpf_disabled=1Β». ΠΠ»Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π°ΡΠ°ΠΊ ΡΠ΅ΡΠ΅Π· Π³Π°Π΄ΠΆΠ΅ΡΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ LFENCE Π² ΡΡΠ°ΡΡΠΊΠ°Ρ ΠΊΠΎΠ΄Π°, ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡΠΈΡ ΠΊ ΡΠΏΠ΅ΠΊΡΠ»ΡΡΠΈΠ²Π½ΠΎΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΡΠΈΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ, ΡΡΠΎ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²ΠΎΠ² Linux ΡΠΆΠ΅ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΌΠ΅ΡΡ Π·Π°ΡΠΈΡΡ, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΠ΅ Π΄Π»Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ Π°ΡΠ°ΠΊΠΈ ΡΠ΅ΡΠ΅Π· eBPF. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ Intel ΠΏΠΎ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π½Π΅ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ eBPF ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΡΠ΄ΡΠ° Linux 5.16 ΠΈ Π±ΡΠ΄ΡΡ Π±ΡΠΊΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Ρ Π² Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π½Π½ΠΈΠ΅ Π²Π΅ΡΠΊΠΈ.
ααΆααααα·α BHI ααΊααΆααααααααααααααΆαααΆααααα αΆα Spectre-v2 ααααααα»αααα ααΎααααΈααααα»αααΈααΆαααΆαααΆααααααα (Intel eIBRS αα·α Arm CSV2) αα·ααααα αααΆαααα ααααΆααα·αααααα ααΆααααα½ααααααααααΌαααΆαααααΎαα αααα»α Branch History Buffer αααααααΎαααα»α CPU ααΎααααΈαααααΎαααΆαααααΆααααα ααΆααααα ααααΆαααααΉαααααΌαααααααα αααα»αααααΈαααααααα·ααΆαααααααααΆαααααΆααααααΌαα’ααΈαααΆαα αααα»αα’αα‘α»ααααααααΆαααΆααααα αΆα ααΆααααα§ααΆαααααΆαα½αααΉααααααααα·ααααΆαααααΆααααααΌα ααααααααααααΌαααΆααααααΎαα‘αΎααααααΆααααΆαααααααααΆααα·αααααΉαααααΌαααααΆαααααΆααααααΌα αα·αααΆαααααα·ααααα·ααΆαααΆααααΆααααααΆαααααΆαααααΆαα αΆαααΆα α ααααααααααααα αααα αααα»αααααΆαααααααΆααα
ααΆαα½αααΉαααααΈααΎααααααααΆαααααΎααααΆαα Branch History Buffer αααα½αα±αα Branch Target Buffer ααΆαααΆααααα αΆαααααΈααΊααΌα
ααααΆααααα·ααα
ααΉα Spectre-v2α ααΆααα·α
αα
ααααα’αααααΆααααα αΆαααΊαααααΎαααααααααααΌα
ααΆα’αΆααααααΆαααααα
αααα’αα»ααααααααα·ααααα·ααΆααααΆααααααΆαααααΌαααΆαααα
ααααΈααααααααα·αααααααααααΆααααααα αααααΆααααΈα’αα»ααααααΆααααααααααααα α’αΆααααααΆαααααααααΆαα’αΆαααΈααα·αα
ααααΆααα
αααα»αααααΆαααααααΆαα αααααΆαααααα·ααΈααΆααααααα½ααααα»αααΆααααααααΆαα·ααΆααααααΆαααααααΆααα’αΆα
ααααΌαααΆαααααΎααΎααααΈααΆαααααΆαααααα’ααααΎααΆααα·ααΆαααααΆαααααΆααααααΌααααααααΆα
αΌαααααΎαααα»αααααΆαααααααΆαα αα·ααα·αααΆαααΆαααα»αα αα·ααααααα
ααααα: opennet.ru
