เบŠเปˆเบญเบ‡เป‚เบซเบงเปˆเปƒเบ™เบฅเบฐเบšเบปเบšเบเปˆเบญเบ eBPF เบ—เบตเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบœเปˆเบฒเบ™เบเบฒเบ™เบ›เป‰เบญเบ‡เบเบฑเบ™เบเบฒเบ™เป‚เบˆเบกเบ•เบต Spectre

เบŠเปˆเบญเบ‡เป‚เบซเบงเปˆเป„เบ”เป‰เบ–เบทเบเบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™ Linux kernel (CVE-2021-33624) เบ—เบตเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบฅเบฐเบšเบปเบšเบเปˆเบญเบ eBPF เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบ‚เป‰เบฒเบกเบเบฒเบ™เบ›เป‰เบญเบ‡เบเบฑเบ™เบ„เบงเบฒเบกเบญเปˆเบญเบ™เปเบญเบ‚เบญเบ‡ Spectre class, เป€เบŠเบดเปˆเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบเปเบฒเบ™เบปเบ”เป€เบ™เบทเป‰เบญเปƒเบ™เบ‚เบญเบ‡เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เบœเบปเบ™เบกเบฒเบˆเบฒเบเบเบฒเบ™เบชเป‰เบฒเบ‡เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบชเปเบฒเบฅเบฑเบš. เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ„เบฒเบ”เป€เบ”เบปเบฒเบ‚เบญเบ‡เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™. เบเบฒเบ™เป‚เบˆเบกเบ•เบต Spectre เบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบเบฒเบ™เบ›เบฐเบเบปเบ”เบ•เบปเบงเบ‚เบญเบ‡เบ„เปเบฒเบชเบฑเปˆเบ‡เบชเบฐเป€เบžเบฒเบฐเปƒเบ”เบซเบ™เบถเปˆเบ‡เปƒเบ™เบฅเบฐเบซเบฑเบ”เบชเบดเบ”เบ—เบดเบžเบดเป€เบชเบ”เบ—เบตเปˆเบ™เปเบฒเป„เบ›เบชเบนเปˆเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ„เบฒเบ”เป€เบ”เบปเบฒเบ‚เบญเบ‡เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ. เป‚เบ”เบเบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เป‚เบ„เบ‡เบเบฒเบ™ BPF เบ—เบตเปˆเบ–เบทเบเบชเบปเปˆเบ‡เบ•เปเปˆเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”, เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบชเป‰เบฒเบ‡เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เปƒเบ™ eBPF เปเบฅเบฐเบฎเบปเปˆเบงเป€เบ™เบทเป‰เบญเปƒเบ™เบ‚เบญเบ‡เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเปเบเปˆเบ™เปเบฅเบฐเบžเบทเป‰เบ™เบ—เบตเปˆเบ—เบตเปˆเบกเบฑเบเบ‚เบญเบ‡เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ—เบฒเบ‡เบ”เป‰เบฒเบ™เบฎเปˆเบฒเบ‡เบเบฒเบเป‚เบ”เบเบœเปˆเบฒเบ™เบŠเปˆเบญเบ‡เบ—เบฒเบ‡เบ‚เป‰เบฒเบ‡.

เบŠเปˆเบญเบ‡เป‚เบซเบงเปˆเปเบกเปˆเบ™เป€เบเบตเบ”เบกเบฒเบˆเบฒเบเบ‚เปเป‰เบšเบปเบเบžเปˆเบญเบ‡เปƒเบ™เบ•เบปเบงเบเบงเบ”เบชเบญเบš, เป€เบŠเบดเปˆเบ‡เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบเบงเบ”เบžเบปเบšเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เปเบฅเบฐเบเบดเบ”เบˆเบฐเบเปเบฒเบ—เบตเปˆเบšเปเปˆเบชเบฒเบกเบฒเบ”เบเบญเบกเบฎเบฑเบšเป„เบ”เป‰เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™ BPF. เบ•เบปเบงเบเบงเบ”เบชเบญเบšเป„เบ”เป‰เบฅเบฐเบšเบธเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰, เปเบ•เปˆเบ‚เป‰เบฒเบกเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบชเบฒเบ‚เบฒเบ—เบตเปˆเบšเปเปˆเบชเบฒเบกเบฒเบ”เบเบญเบกเบฎเบฑเบšเป„เบ”เป‰เบˆเบฒเบเบ—เบฑเบ”เบชเบฐเบ™เบฐเบ‚เบญเบ‡ semantics เบ‚เบญเบ‡เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบŠเบธเบ”เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ. เป€เบกเบทเปˆเบญเบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ„เบ‡เบเบฒเบ™ BPF, เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบชเบฒเบ‚เบฒเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเป‚เบ”เบเบœเบนเป‰เบเบงเบ”เบชเบญเบšเบชเบฒเบกเบฒเบ”เบ–เบทเบเบ„เบฒเบ”เบ„เบฐเป€เบ™เบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เป‚เบ”เบเป‚เบ›เป€เบŠเบ”เป€เบŠเบตเปเบฅเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™เบฎเบนเบšเปเบšเบšเบเบฒเบ™เบ„เบฒเบ”เป€เบ”เบปเบฒ. เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบกเบทเปˆเบญเบงเบดเป€เบ„เบฒเบฐเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ "เป‚เบซเบผเบ”", เบœเบนเป‰เบเบงเบ”เบชเบญเบšเบ„เบฒเบ”เบงเปˆเบฒเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบˆเบฐเปƒเบŠเป‰เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบ—เบตเปˆเบกเบตเบ—เบตเปˆเบขเบนเปˆเบ—เบตเปˆเบกเบตเบ„เปˆเบฒเบชเบฐเป€เบซเบกเบตเบขเบนเปˆเปƒเบ™เบ‚เบญเบšเป€เบ‚เบ”เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰, เปเบ•เปˆเบœเบนเป‰เป‚เบˆเบกเบ•เบตเบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบ—เบตเปˆเป‚เบ›เป€เบŠเบ”เป€เบŠเบตเบˆเบฐเบžเบฐเบเบฒเบเบฒเบกเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ„เบฒเบ”เป€เบ”เบปเบฒเบเบฑเบš. เบ—เบตเปˆเบขเบนเปˆเบ—เบตเปˆเบšเปเปˆเบเบปเบ‡เบเบฑเบšเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบเบฒเบ™เบขเบฑเป‰เบ‡เบขเบทเบ™.

เบšเบฑเบ™เบซเบฒเป„เบ”เป‰เบ›เบฐเบเบปเบ”เบ‚เบถเป‰เบ™เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบเบฒเบ™เบ›เปˆเบญเบ kernel 4.15 เปเบฅเบฐเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เปเบเป‰เป„เบ‚เปƒเบ™เบฎเบนเบšเปเบšเบšเบ‚เบญเบ‡ patches (1, 2, 3, 4). เบŠเปˆเบญเบ‡เป‚เบซเบงเปˆเบเบฑเบ‡เบšเปเปˆเบ–เบทเบเปเบเป‰เป„เบ‚เปƒเบ™เบเบฒเบ™เปเบˆเบเบขเบฒเบ (Debian, RHEL, Ubuntu, Fedora, SUSE, Arch).

เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบชเบฑเบ‡เป€เบเบ”เบšเบฑเบ™เบ—เบถเบเบเปˆเบฝเบงเบเบฑเบšเบœเบปเบ™เบเบฐเบ—เบปเบšเบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เบกเบทเป€เบžเบทเปˆเบญเบ›เป‰เบญเบ‡เบเบฑเบ™เบ„เบงเบฒเบกเบญเปˆเบญเบ™เปเบญเบ‚เบญเบ‡ Spectre. เบšเบฑเบ™เบ—เบถเบเบชเบฐเบซเบผเบธเบšเบœเบปเบ™เบ‚เบญเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบญเบ‡ rr (เบšเบฑเบ™เบ—เบถเบเปเบฅเบฐเบซเบผเบดเป‰เบ™เบ„เบทเบ™) debugger, เป€เบŠเบดเปˆเบ‡เบ„เบฑเป‰เบ‡เบ”เบฝเบงเป„เบ”เป‰เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เปƒเบ™ Mozilla เป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆเบเบฒเบเบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เบŠเป‰เปเบฒเปƒเบ™ Firefox. Caching เบเบฒเบ™เป‚เบ—เบฅเบฐเบšเบปเบšเบ—เบตเปˆเปƒเบŠเป‰เปƒเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบเบฒเบ™เบกเบตเบขเบนเปˆเบ‚เบญเบ‡เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบซเบผเบธเบ”เบฅเบปเบ‡เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™ "rr sources" เบชเปเบฒเบฅเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบˆเบฒเบ 3 เบ™เบฒเบ—เบต 19 เบงเบดเบ™เบฒเบ—เบตเป€เบ›เบฑเบ™ 36 เบงเบดเบ™เบฒเบ—เบต.

เบœเบนเป‰เบ‚เบฝเบ™เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเป„เบ”เป‰เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบˆเบฐเบ›เปˆเบฝเบ™เปเบ›เบ‡เปเบ™เบงเปƒเบ”เบซเบผเบฑเบ‡เบˆเบฒเบเบ›เบดเบ”เบเบฒเบ™เบ›เป‰เบญเบ‡เบเบฑเบ™ Spectre. เบซเบผเบฑเบ‡เบˆเบฒเบเป€เบ›เบตเบ”เบฅเบฐเบšเบปเบšเบ”เป‰เบงเบเบžเบฒเบฅเบฒเบกเบดเป€เบ•เบต โ€œmitigations=offโ€, เป€เบงเบฅเบฒเบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡ โ€œrr sourcesโ€ เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™ optimization เปเบกเปˆเบ™ 2 เบ™เบฒเบ—เบต 5 เบงเบดเบ™เบฒเบ—เบต (1.6 เป€เบ—เบปเปˆเบฒเป„เบง), เปเบฅเบฐเบ”เป‰เบงเบเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปเบกเปˆเบ™ 33 เบงเบดเบ™เบฒเบ—เบต (9%). เบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆ, เบเบฒเบ™เบ›เบดเบ”เบเบฒเบ™เบ›เป‰เบญเบ‡เบเบฑเบ™ Spectre เบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆเบซเบผเบธเบ”เบฅเบปเบ‡เป€เบงเบฅเบฒเบ›เบฐเบ•เบดเบšเบฑเบ”เบฅเบฐเบซเบฑเบ”เปƒเบ™เบฅเบฐเบ”เบฑเบšเปเบเปˆเบ™ 1.4 เป€เบ—เบปเปˆเบฒ (เบˆเบฒเบ 2m9s เบซเบฒ 1m32s), เปเบ•เปˆเบเบฑเบ‡เปƒเบŠเป‰เป€เบงเบฅเบฒเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เป€เบ„เบดเปˆเบ‡เบซเบ™เบถเปˆเบ‡เปƒเบ™เบžเบทเป‰เบ™เบ—เบตเปˆเบœเบนเป‰เปƒเบŠเป‰ (เบˆเบฒเบ 1m9s เบซเบฒ 0m33s), เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบเป‰เบญเบ™เบเบฒเบ™เบซเบผเบธเบ”เบœเปˆเบญเบ™เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบญเบ‡ CPU cache เปเบฅเบฐ TLB. เบฃเบตเป€เบŠเบฑเบ”เป€เบกเบทเปˆเบญเบเบฒเบ™เบ›เบปเบเบ›เป‰เบญเบ‡ Spectre เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™