BHI ื”ื™ื ื ืงื•ื“ืช ืชื•ืจืคื” ื—ื“ืฉื” ืžืกื•ื’ Spectre ื‘ืžืขื‘ื“ื™ ืื™ื ื˜ืœ ื•-ARM

ืงื‘ื•ืฆืช ื—ื•ืงืจื™ื ืžื”ืื•ื ื™ื‘ืจืกื™ื˜ื” ื”ื—ื•ืคืฉื™ืช ืืžืกื˜ืจื“ื ื–ื™ื”ืชื” ืคื’ื™ืขื•ืช ื—ื“ืฉื” ื‘ืžื‘ื ื™ื ื”ืžื™ืงืจื•-ืืจื›ื™ื˜ืงื˜ื•ื ื™ื™ื ืฉืœ ืžืขื‘ื“ื™ ืื™ื ื˜ืœ ื•-ARM, ืฉื”ื™ื ื’ืจืกื” ืžื•ืจื—ื‘ืช ืฉืœ ื”ืคื’ื™ืขื•ืช Spectre-v2, ื”ืžืืคืฉืจืช ืœืขืงื•ืฃ ืืช ืžื ื’ื ื•ื ื™ ื”ื”ื’ื ื” ืฉืœ eIBRS ื•-CSV2 ืฉื ื•ืกืคื• ืœืžืขื‘ื“ื™ื . ืœืคื’ื™ืขื•ืช ื ื™ืชื ื• ืžืกืคืจ ืฉืžื•ืช: BHI (Branch History Injection, CVE-2022-0001), BHB (Branch History Buffer, CVE-2022-0002) ื•-Spectre-BHB (CVE-2022-23960), ื”ืžืชืืจื™ื ื‘ื™ื˜ื•ื™ื™ื ืฉื•ื ื™ื ืฉืœ ืื•ืชื” ื‘ืขื™ื” (BHI - ื”ืชืงืคื” ื”ืžืฉืคื™ืขื” ืขืœ ืจืžื•ืช ืฉื•ื ื•ืช ืฉืœ ื”ืจืฉืื•ืช, ืœืžืฉืœ, ืชื”ืœื™ืš ื”ืžืฉืชืžืฉ ื•ื”ืงืจื ืœ, BHB - ื”ืชืงืคื” ื‘ืื•ืชื” ืจืžืช ื”ืจืฉืื•ืช, ืœืžืฉืœ, eBPF JIT ื•ื”ืงืจื ืœ).

ื—ื•ืงืจื™ื ื”ื“ื’ื™ืžื• ื ื™ืฆื•ืœ ืขื•ื‘ื“ ื”ืžืืคืฉืจ ืœื—ืœืฅ ื ืชื•ื ื™ื ืฉืจื™ืจื•ืชื™ื™ื ืžื–ื™ื›ืจื•ืŸ ื”ืœื™ื‘ื” ืžืžืจื—ื‘ ื”ืžืฉืชืžืฉ. ืœื“ื•ื’ืžื”, ืžื•ืฆื’ ื›ื™ืฆื“, ื‘ืืžืฆืขื•ืช ืฉื™ืžื•ืฉ ื‘-exploit ืžื•ื›ืŸ, ื ื™ืชืŸ ืœื—ืœืฅ ืžืžืื’ืจื™ ื”ืœื™ื‘ื” ืžื—ืจื•ื–ืช ืขื hash ืฉืœ ืกื™ืกืžืช ื”ืžืฉืชืžืฉ ื”ืฉื•ืจืฉ ื ื˜ืขื ืช ืžื”ืงื•ื‘ืฅ /etc/shadow. ื”ื ื™ืฆื•ืœ ืžื“ื’ื™ื ืืช ื”ืืคืฉืจื•ืช ืฉืœ ื ื™ืฆื•ืœ ืคื’ื™ืขื•ืช ื‘ืจืžืช ื”ืจืฉืื” ืื—ืช (ื”ืชืงืคืช ืœื™ื‘ื” ืœืงืจื ืœ) ื‘ืืžืฆืขื•ืช ืชื•ื›ื ื™ืช eBPF ืฉื ื˜ืขื ืช ืขืœ ื™ื“ื™ ื”ืžืฉืชืžืฉ. ืืคืฉืจ ื’ื ืœื”ืฉืชืžืฉ ื‘ืžืงื•ื eBPF ื’ืื“ื’'ื˜ื™ื ืงื™ื™ืžื™ื ืฉืœ Spectre ื‘ืงื•ื“ ื”ืงืจื ืœ, ื‘ืจืฆืคื™ื ืฉืœ ืคืงื•ื“ื•ืช ืฉืžื•ื‘ื™ืœื™ื ืœื‘ื™ืฆื•ืข ืกืคืงื•ืœื˜ื™ื‘ื™ ืฉืœ ื”ื•ืจืื•ืช.

ื”ืคื’ื™ืขื•ืช ืžื•ืคื™ืขื” ื‘ืจื•ื‘ ืžืขื‘ื“ื™ ืื™ื ื˜ืœ ื”ืขื“ื›ื ื™ื™ื, ืœืžืขื˜ ืžืขื‘ื“ื™ื ืžืžืฉืคื—ืช 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 ื‘ืื–ื•ืจื™ ืงื•ื“ ืฉืขืœื•ืœื™ื ืœื”ื•ื‘ื™ืœ ืœื‘ื™ืฆื•ืข ืกืคืงื•ืœื˜ื™ื‘ื™. ืจืื•ื™ ืœืฆื™ื™ืŸ ืฉืชืฆื•ืจืช ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ืฉืœ ืจื•ื‘ ื”ืคืฆื•ืช ืœื™ื ื•ืงืก ื›ื‘ืจ ืžื›ื™ืœื” ืืช ืืžืฆืขื™ ื”ื”ื’ื ื” ื”ื“ืจื•ืฉื™ื ืžืกืคื™ืง ื›ื“ื™ ืœื—ืกื•ื ืืช ื”ืชืงืคืช eBPF ืฉื”ื“ื’ื™ืžื• ื”ื—ื•ืงืจื™ื. ื”ื”ืžืœืฆื•ืช ืฉืœ ืื™ื ื˜ืœ ืœื”ืฉื‘ืชืช ื’ื™ืฉื” ื‘ืœืชื™-ืคืจื™ื‘ื™ืœื’ื™ืช ืœ-eBPF ื”ืŸ ื’ื ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ืžืื– ืœื™ื‘ืช ืœื™ื ื•ืงืก 5.16 ื•ื”ืŸ ื™ืขื‘ืจื• ื‘ื—ื–ืจื” ืœืกื ื™ืคื™ื ืงื•ื“ืžื™ื.

ืžื‘ื—ื™ื ื” ืงื•ื ืกืคื˜ื•ืืœื™ืช, BHI ื”ื™ื ื’ืจืกื” ืžื•ืจื—ื‘ืช ืฉืœ ืžืชืงืคืช Spectre-v2, ืฉื‘ื”, ื›ื“ื™ ืœืขืงื•ืฃ ื”ื’ื ื” ื ื•ืกืคืช (Intel eIBRS ื•- Arm CSV2) ื•ืœืืจื’ืŸ ื“ืœื™ืคืช ื ืชื•ื ื™ื, ื ืขืฉื” ืฉื™ืžื•ืฉ ื‘ื”ื—ืœืคืช ืขืจืš ื‘-Banch History Buffer, ื”ืžืฉืžืฉ ื‘-CPU ื›ื“ื™ ืœื”ื’ื‘ื™ืจ ืืช ื”ื—ื™ื–ื•ื™ ื”ืกืชืขืคื•ืช ื“ื™ื•ืง ืขืœ ื™ื“ื™ ื”ืชื—ืฉื‘ื•ืช ื‘ื”ื™ืกื˜ื•ืจื™ื” ืฉืœ ืžืขื‘ืจื™ื ื‘ืขื‘ืจ. ื‘ืžื”ืœืš ื”ื”ืชืงืคื”, ื‘ืืžืฆืขื•ืช ืžื ื™ืคื•ืœืฆื™ื•ืช ืขื ื”ื™ืกื˜ื•ืจื™ื™ืช ื”ืžืขื‘ืจื™ื, ื ื•ืฆืจื™ื ืชื ืื™ื ืœื—ื™ื–ื•ื™ ืฉื’ื•ื™ ืฉืœ ื”ืžืขื‘ืจ ื•ื‘ื™ืฆื•ืข ืกืคืงื•ืœื˜ื™ื‘ื™ ืฉืœ ื”ื”ื•ืจืื•ืช ื”ื“ืจื•ืฉื•ืช, ืฉืชื•ืฆืืชืŸ ืžื’ื™ืขื” ืœืžื˜ืžื•ืŸ.

ืœืžืขื˜ ืฉื™ืžื•ืฉ ื‘ืžืื’ืจ ื”ื™ืกื˜ื•ืจื™ื™ืช ืกื ื™ืคื™ื ื‘ืžืงื•ื ื‘ืžืื’ืจ ื™ืขื“ ืกื ื™ืฃ, ื”ืžืชืงืคื” ื”ื—ื“ืฉื” ื–ื”ื” ืœ-Spectre-v2. ื”ืžืฉื™ืžื” ืฉืœ ื”ืชื•ืงืฃ ื”ื™ื ืœื™ืฆื•ืจ ืชื ืื™ื ื›ืš ืฉื”ื›ืชื•ื‘ืช, ื‘ืขืช ื‘ื™ืฆื•ืข ืคืขื•ืœื” ืกืคืงื•ืœื˜ื™ื‘ื™ืช, ื ืœืงื—ืช ืžืื–ื•ืจ ื”ื ืชื•ื ื™ื ื”ืžื•ื’ื“ืจื™ื. ืœืื—ืจ ื‘ื™ืฆื•ืข ืงืคื™ืฆื” ืขืงื™ืคื” ืกืคืงื•ืœื˜ื™ื‘ื™ืช, ื›ืชื•ื‘ืช ื”ืงืคื™ืฆื” ื”ื ืงืจืืช ืžื”ื–ื™ื›ืจื•ืŸ ื ืฉืืจืช ื‘ืžื˜ืžื•ืŸ, ื•ืœืื—ืจ ืžื›ืŸ ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ืื—ืช ื”ืฉื™ื˜ื•ืช ืœืงื‘ื™ืขืช ืชื•ื›ืŸ ื”ืžื˜ืžื•ืŸ ื›ื“ื™ ืœืื—ื–ืจ ืื•ืชื” ืขืœ ืกืžืš ื ื™ืชื•ื— ืฉืœ ืฉื™ื ื•ื™ื™ื ื‘ื–ืžืŸ ื”ื’ื™ืฉื” ืœืžื˜ืžื•ืŸ ื•ืœืœื ืฉืžื•ืจ. ื ืชื•ื ื™ื.

ืžืงื•ืจ: OpenNet.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”