Retbleed เปเบกเปˆเบ™เบเบฒเบ™เป‚เบˆเบกเบ•เบตเปƒเบซเบกเปˆเบเปˆเบฝเบงเบเบฑเบšเบเบปเบ™เป„เบเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ„เบฒเบ”เป€เบ”เบปเบฒเบ‚เบญเบ‡ CPU Intel เปเบฅเบฐ AMD

เบเบธเปˆเบกเบ™เบฑเบเบ„เบปเป‰เบ™เบ„เบงเป‰เบฒเบˆเบฒเบ ETH Zurich เป„เบ”เป‰เบเปเบฒเบ™เบปเบ”เบเบฒเบ™เป‚เบˆเบกเบ•เบตเปƒเบซเบกเปˆเบเปˆเบฝเบงเบเบฑเบšเบเบปเบ™เป„เบเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ„เบฒเบ”เป€เบ”เบปเบฒเบ‚เบญเบ‡เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบฒเบ‡เบญเป‰เบญเบกเปƒเบ™ CPU, เป€เบŠเบดเปˆเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบชเบฐเบเบฑเบ”เบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ kernel เบซเบผเบทเบˆเบฑเบ”เบเบฒเบ™เป‚เบˆเบกเบ•เบตเปƒเบ™เบฅเบฐเบšเบปเบšเป€เบˆเบปเป‰เบฒเบžเบฒเบšเบˆเบฒเบ virtual machines. เบŠเปˆเบญเบ‡เป‚เบซเบงเปˆเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบกเบตเบŠเบทเปˆเบฅเบฐเบซเบฑเบ”เบงเปˆเบฒ Retbleed (CVE-2022-29900, CVE-2022-29901) เปเบฅเบฐเบกเบตเบ„เบงเบฒเบกเปƒเบเป‰เบŠเบดเบ”เบเบฑเบšเบเบฒเบ™เป‚เบˆเบกเบ•เบตเปเบšเบš Spectre-v2. เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เปเบกเปˆเบ™เบกเบฒเบˆเบฒเบเบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ„เบฒเบ”เป€เบ”เบปเบฒเบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบ•เบปเบ™เป€เบญเบ‡เบกเบฑเบเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ "ret" (เบเบฑเบšเบ„เบทเบ™), เป€เบŠเบดเปˆเบ‡เบ”เบถเบ‡เป€เบญเบปเบฒเบ—เบตเปˆเบขเบนเปˆเป€เบžเบทเปˆเบญเป€เบ•เบฑเป‰เบ™เป„เบ›เบซเบฒเบˆเบฒเบ stack, เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เบเบฒเบ™เบเบฐเป‚เบ”เบ”เบ—เบฒเบ‡เบญเป‰เบญเบกเป‚เบ”เบเปƒเบŠเป‰เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ "jmp", เบเบฒเบ™เป‚เบซเบผเบ”เบ—เบตเปˆเบขเบนเปˆเบˆเบฒเบ. เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบซเบผเบทเบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™ CPU.

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

เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบเบฑเบ‡เป€เบซเบผเบทเบญเบขเบนเปˆเปƒเบ™ cache เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบเบฒเบ™เบ„เบฒเบ”เป€เบ”เบปเบฒ, เบœเบนเป‰เป‚เบˆเบกเบ•เบตเบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เป€เบ•เบฑเบเบ™เบดเบเบŠเปˆเบญเบ‡เบ—เบฒเบ‡เบ‚เป‰เบฒเบ‡เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเป€เบซเบผเบทเบญ, เป€เบŠเบฑเปˆเบ™: เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป€เบงเบฅเบฒเป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ‚เปเป‰เบกเบนเบ™เปƒเบ™ cache เปเบฅเบฐ uncached. เป€เบžเบทเปˆเบญเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบชเบฐเบเบฑเบ”เบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเบžเบทเป‰เบ™เบ—เบตเปˆเปƒเบ™เบฅเบฐเบ”เบฑเบšเบชเบดเบ”เบ—เบดเบžเบดเป€เบชเบ”เบญเบทเปˆเบ™ (เบ•เบปเบงเบขเปˆเบฒเบ‡, เบˆเบฒเบเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ kernel), "gadgets" เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰ - เบฅเปเบฒเบ”เบฑเบšเบ‚เบญเบ‡เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบกเบตเบขเบนเปˆเปƒเบ™ kernel เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ„เบฒเบ”เป€เบ”เบปเบฒเบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบžเบฒเบเบ™เบญเบเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เป„เบ”เป‰เบฎเบฑเบšเบญเบดเบ”เบ—เบดเบžเบปเบ™เบˆเบฒเบ. เบœเบนเป‰โ€‹เป‚เบˆเบกโ€‹เบ•เบต.

เป€เบžเบทเปˆเบญเบ›เป‰เบญเบ‡เบเบฑเบ™เบเบฒเบ™เป‚เบˆเบกเบ•เบตเปเบšเบšเบ„เบฅเบฒเบชเบชเบดเบ Spectre เบ—เบตเปˆเปƒเบŠเป‰เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบเบฒเบ™เป‚เบ”เบ”เปเบšเบšเบกเบตเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เปเบฅเบฐเบ—เบฒเบ‡เบญเป‰เบญเบก, เบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบชเปˆเบงเบ™เปƒเบซเบเปˆเปƒเบŠเป‰เป€เบ•เบฑเบเบ™เบดเบ "retpoline", เป€เบŠเบดเปˆเบ‡เบญเบตเบ‡เปƒเบชเปˆเบเบฒเบ™เบ›เปˆเบฝเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เป‚เบ”เบ”เป‚เบ”เบเบ—เบฒเบ‡เบญเป‰เบญเบกเบ”เป‰เบงเบเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ "ret", เป€เบŠเบดเปˆเบ‡เป‚เบ›เป€เบŠเบ”เป€เบŠเบตเปƒเบŠเป‰เบซเบ™เปˆเบงเบเบ‡เบฒเบ™เบเบฒเบ™เบ„เบฒเบ”เบ„เบฐเป€เบ™เบ‚เบญเบ‡เบฅเบฑเบ” stack เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ. . เบšเปเปˆเป„เบ”เป‰เปƒเบŠเป‰เบšเบฅเบฑเบญเบเบเบฒเบ™เบ„เบฒเบ”เป€เบ”เบปเบฒเบชเบฒเบ‚เบฒ. เป€เบกเบทเปˆเบญ retpoline เป„เบ”เป‰เบ–เบทเบเบ™เปเบฒเบชเบฐเป€เบซเบ™เบตเปƒเบ™เบ›เบต 2018, เบกเบฑเบ™เป€เบŠเบทเปˆเบญเบงเปˆเบฒเบเบฒเบ™เบซเบกเบนเบ™เปƒเบŠเป‰เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบš Spectre เบšเปเปˆเป„เบ”เป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบชเบฒเบ‚เบฒเบ—เบตเปˆเบ„เบฒเบ”เป€เบ”เบปเบฒเป‚เบ”เบเปƒเบŠเป‰เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ "ret".

เบ™เบฑเบเบ„เบปเป‰เบ™เบ„เบงเป‰เบฒเบœเบนเป‰เบ—เบตเปˆเบžเบฑเบ”เบ—เบฐเบ™เบฒเบงเบดเบ—เบตเบเบฒเบ™เป‚เบˆเบกเบ•เบต Retbleed เป„เบ”เป‰เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ‚เบญเบ‡เบเบฒเบ™เบชเป‰เบฒเบ‡เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบˆเบธเบฅเบฐเบžเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบฅเบดเป€เบฅเบตเปˆเบกเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบเบฒเบ™เบ„เบฒเบ”เป€เบ”เบปเบฒเป‚เบ”เบเปƒเบŠเป‰เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ "ret" เปเบฅเบฐเป€เบœเบตเบเปเบœเปˆเป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ—เบตเปˆเบเบฝเบกเบžเป‰เบญเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบฅเปเบฒเบ”เบฑเบšเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ (gadgets) เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ‚เบธเบ”เบ„เบปเป‰เบ™เบŠเปˆเบญเบ‡เบซเบงเปˆเบฒเบ‡เปƒเบ™ Linux kernel, เปƒเบ™เบ—เบตเปˆเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง manifest เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡.

เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ„เบปเป‰เบ™เบ„เป‰เบงเบฒ, เบเบฒเบ™เบ‚เบนเบ”เบฎเบตเบ”เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเป„เบ”เป‰เบ–เบทเบเบเบฐเบเบฝเบกเบ—เบตเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰, เปƒเบ™เบฅเบฐเบšเบปเบšเบ—เบตเปˆเบกเบต CPUs Intel, เบชเบฐเบเบฑเบ”เบ‚เปเป‰เบกเบนเบ™ arbitrary เบˆเบฒเบเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ kernel เบˆเบฒเบเบ‚เบฐเบšเบงเบ™เบเบฒเบ™ unprivileged เปƒเบ™เบžเบทเป‰เบ™เบ—เบตเปˆเบœเบนเป‰เปƒเบŠเป‰เบ”เป‰เบงเบเบ„เบงเบฒเบกเป„เบง 219 bytes เบ•เปเปˆเบงเบดเบ™เบฒเบ—เบตเปเบฅเบฐ 98% เบ„เบงเบฒเบกเบ–เบทเบเบ•เป‰เบญเบ‡. เปƒเบ™เป‚เบ›เป€เบŠเบ”เป€เบŠเบต AMD, เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบญเบ‡เบเบฒเบ™เบ‚เบธเบ”เบ„เบปเป‰เบ™เปเบกเปˆเบ™เบชเบนเบ‡เบเบงเปˆเบฒเบซเบผเบฒเบ - เบญเบฑเบ”เบ•เบฒเบเบฒเบ™เบฎเบปเปˆเบงเป„เบซเบผเปเบกเปˆเบ™ 3.9 KB เบ•เปเปˆเบงเบดเบ™เบฒเบ—เบต. เป€เบ›เบฑเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบžเบฒเบเบ›เบฐเบ•เบดเบšเบฑเบ”, เบžเบงเบเป€เบฎเบปเบฒเบชเบฐเปเบ”เบ‡เบงเบดเบ—เบตเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบ‚เบธเบ”เบ„เบปเป‰เบ™เบ—เบตเปˆเบชเบฐเป€เบซเบ™เบตเป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เป€เบ™เบทเป‰เบญเปƒเบ™เบ‚เบญเบ‡เป„เบŸเบฅเปŒ /etc/shadow. เปƒเบ™เบฅเบฐเบšเบปเบšเบ—เบตเปˆเบกเบต CPUs Intel, เบเบฒเบ™เป‚เบˆเบกเบ•เบตเป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ” hash เบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™เบœเบนเป‰เปƒเบŠเป‰เบฎเบฒเบเป„เบ”เป‰เบ”เปเบฒเป€เบ™เบตเบ™เปƒเบ™ 28 เบ™เบฒเบ—เบต, เปเบฅเบฐเปƒเบ™เบฅเบฐเบšเบปเบšเบ—เบตเปˆเบกเบต CPU AMD - เปƒเบ™ 6 เบ™เบฒเบ—เบต.

เบเบฒเบ™เป‚เบˆเบกเบ•เบตเป„เบ”เป‰เบ–เบทเบเบขเบทเบ™เบขเบฑเบ™เบชเปเบฒเบฅเบฑเบšเบฅเบธเป‰เบ™ 6-8 เบ‚เบญเบ‡เป‚เบ›เป€เบŠเบ”เป€เบŠเบต Intel เบ—เบตเปˆเบ–เบทเบเบ›เปˆเบญเบเบญเบญเบเบกเบฒเบเปˆเบญเบ™ Q3 2019 (เบฅเบงเบกเบ—เบฑเบ‡ Skylake), เปเบฅเบฐเป‚เบ›เป€เบŠเบ”เป€เบŠเบต AMD เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆ Zen 1, Zen 1+, เปเบฅเบฐ Zen 2 microarchitectures เบ—เบตเปˆเบญเบญเบเบเปˆเบญเบ™ Q2021 3. เปƒเบ™เบฎเบธเปˆเบ™เป‚เบ›เป€เบŠเบ”เป€เบŠเบตเปƒเบซเบกเปˆเป€เบŠเบฑเปˆเบ™ AMD ZenXNUMX เปเบฅเบฐ Intel Alder Lake, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเปƒเบ™เป‚เบ›เป€เบŠเบ”เป€เบŠเบต ARM, เบšเบฑเบ™เบซเบฒเป„เบ”เป‰เบ–เบทเบเบชเบฐเบเบฑเบ”เป‚เบ”เบเบเบปเบ™เป„เบเบเบฒเบ™เบ›เบปเบเบ›เป‰เบญเบ‡เบ—เบตเปˆเบกเบตเบขเบนเปˆ. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ IBRS (Indirect Branch Restricted Speculation) เบŠเปˆเบงเบเบ›เป‰เบญเบ‡เบเบฑเบ™เบเบฒเบ™เป‚เบˆเบกเบ•เบต.

เบŠเบธเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป„เบ”เป‰เบ–เบทเบเบเบฐเบเบฝเบกเบชเปเบฒเบฅเบฑเบš Linux kernel เปเบฅเบฐ Xen hypervisor, เป€เบŠเบดเปˆเบ‡เบˆเบฐเบชเบฐเบเบฑเบ”เบเบฑเป‰เบ™เบšเบฑเบ™เบซเบฒเปƒเบ™เบŠเบญเบšเปเบงเปƒเบ™ CPU เป€เบเบปเปˆเบฒ. patch เบ—เบตเปˆเบชเบฐเป€เบซเบ™เบตเบชเปเบฒเบฅเบฑเบš Linux kernel เบ›เปˆเบฝเบ™เปเบ›เบ‡ 68 เป„เบŸเบฅเปŒ, เป€เบžเบตเปˆเบก 1783 เปเบ–เบง, เปเบฅเบฐเบฅเบถเบš 387 เปเบ–เบง. เปเบ•เปˆเบซเบ™เป‰เบฒเป€เบชเบเบ”เบฒเบ, เบเบฒเบ™เบ›เบปเบเบ›เป‰เบญเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰เบ„เปˆเบฒเปƒเบŠเป‰เบˆเปˆเบฒเบเป€เบเบตเบ™เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™ - เปƒเบ™เบšเบปเบ”เป€เบฅเบทเปˆเบญเบ‡เบ—เบตเปˆเบ”เปเบฒเป€เบ™เบตเบ™เบขเบนเปˆเปƒเบ™เป‚เบ›เป€เบŠเบ”เป€เบŠเบต AMD เปเบฅเบฐ Intel, เบเบฒเบ™เบซเบผเบธเบ”เบฅเบปเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เปเบกเปˆเบ™เบ„เบฒเบ”เบ„เบฐเป€เบ™เบˆเบฒเบ 14% เบซเบฒ 39%. เบกเบฑเบ™เบ”เบตเบเบงเปˆเบฒเบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰เบเบฒเบ™เบ›เบปเบเบ›เป‰เบญเบ‡เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ IBRS, เบ—เบตเปˆเบกเบตเบขเบนเปˆเปƒเบ™ CPU Intel เบฅเบธเป‰เบ™เปƒเบซเบกเปˆเปเบฅเบฐเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบ Linux kernel 4.19.

เปƒเบ™เป‚เบ›เป€เบŠเบ”เป€เบŠเบต Intel, เบเบฒเบ™เบ—เบปเบ”เปเบ—เบ™เบ—เบตเปˆเบขเบนเปˆเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบฐเป‚เบ”เบ”เบ—เบฒเบ‡เบญเป‰เบญเบกเบ—เบตเปˆเบ„เบฒเบ”เบ„เบฐเป€เบ™เปเบกเปˆเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเป‰เบญเบ™เบ„เบธเบ™เบ™เบฐเบชเบปเบกเบšเบฑเบ”เบ—เบตเปˆเบ›เบฐเบเบปเบ”เบ‚เบถเป‰เบ™เป€เบกเบทเปˆเบญเบเบฒเบ™เป„เบซเบผเบฅเบปเป‰เบ™เป€เบเบตเบ”เบ‚เบทเป‰เบ™เบœเปˆเบฒเบ™เบ‚เบญเบšเป€เบ‚เบ”เบ•เปˆเปเบฒ (underflow) เปƒเบ™ Return Stack Buffer. เป€เบกเบทเปˆเบญเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป€เบเบตเบ”เบ‚เบถเป‰เบ™, เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ "ret" เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ—เบตเปˆเบˆเบฐเบ™เปเบฒเปƒเบŠเป‰เป€เบซเบ”เบœเบปเบ™เบเบฒเบ™เป€เบฅเบทเบญเบเบ—เบตเปˆเบขเบนเปˆเบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบฐเป‚เบ”เบ”เบ—เบฒเบ‡เบญเป‰เบญเบกเบ›เบปเบเบเบฐเบ•เบด. เบซเบผเบฒเบเบเบงเปˆเบฒเบซเบ™เบถเปˆเบ‡เบžเบฑเบ™เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเป„เบ”เป‰เบ–เบทเบเบžเบปเบšเป€เบซเบฑเบ™เบขเบนเปˆเปƒเบ™ kernel Linux เบ—เบตเปˆเบชเป‰เบฒเบ‡เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบฅเบดเป€เบฅเบตเปˆเบก backflow เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเปเบฅเบฐเบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป„เบ”เป‰เป‚เบ”เบเบœเปˆเบฒเบ™เบเบฒเบ™เป‚เบ—เบฅเบฐเบšเบปเบš.

เปƒเบ™เป‚เบ›เป€เบŠเบ”เป€เบŠเบต AMD, เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ„เบฒเบ”เป€เบ”เบปเบฒเบ‚เบญเบ‡เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ "ret" เปเบกเปˆเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡เป€เบ–เบดเบ‡ buffer เบชเบฐเป€เบžเบฒเบฐ stack (Return Address Stack) เปเบฅเบฐเบซเบ™เปˆเบงเบเบ‡เบฒเบ™เบ„เบฒเบ”เบ„เบฐเป€เบ™เบชเบฒเบ‚เบฒเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ "ret" เบšเปเปˆเปเบกเปˆเบ™เบเบฒเบ™เบชเบปเปˆเบ‡เบ„เบทเบ™เบเบฒเบ™เบ„เบงเบšเบ„เบธเบก, เปเบ•เปˆเป€เบ›เบฑเบ™เบชเบฒเบ‚เบฒเบ—เบฒเบ‡เบญเป‰เบญเบก. , เปเบฅเบฐ, เบ•เบฒเบกเบ„เบงเบฒเบกเป€เบซเบกเบฒเบฐเบชเบปเบก, เปƒเบŠเป‰เบ‚เปเป‰เบกเบนเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ„เบฒเบ”เบ„เบฐเป€เบ™เบเบฒเบ™เบซเบฑเบ™เบ›เปˆเบฝเบ™เบ—เบฒเบ‡เบญเป‰เบญเบก. เบžเบฒเบเปƒเบ•เป‰เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰, เป€เบเบทเบญเบšเบ—เบธเบเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™ "ret" เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบšเบฑเบ™เบฅเบธเป„เบ”เป‰เป‚เบ”เบเบœเปˆเบฒเบ™เบเบฒเบ™เป‚เบ—เบซเบฒเบฅเบฐเบšเบปเบšเบชเบฒเบกเบฒเบ”เบ–เบทเบเบ‚เบนเบ”เบฎเบตเบ”.

เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบšเบฑเบ™เบซเบฒเบญเบทเปˆเบ™เบเบฑเบ‡เป„เบ”เป‰เบ–เบทเบเบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™ AMD CPU (CVE-2022-23825, เบ„เบงเบฒเบกเบชเบฑเบšเบชเบปเบ™เบ‚เบญเบ‡เบชเบฒเบ‚เบฒ) เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบชเบฒเบ‚เบฒเบ—เบตเปˆเบชเบปเบกเบกเบธเบ” - เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ„เบฒเบ”เบ„เบฐเป€เบ™เบชเบฒเบ‚เบฒเบชเบฒเบกเบฒเบ”เป€เบเบตเบ”เบ‚เบถเป‰เบ™เป„เบ”เป‰เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบšเปเปˆเบกเบตเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบชเบฒเบ‚เบฒเบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™, เป€เบŠเบดเปˆเบ‡เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบกเบตเบญเบดเบ”เบ—เบดเบžเบปเบ™เบ•เปเปˆ buffer เบเบฒเบ™เบ„เบฒเบ”เบ„เบฐเป€เบ™เบชเบฒเบ‚เบฒ. เป‚เบ”เบเบšเปเปˆเบกเบตเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ "ret". เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบ„เบงเบฒเบกเบชเบฑเบšเบชเบปเบ™เบซเบผเบฒเบเบ•เปเปˆเบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ›เบปเบเบ›เป‰เบญเบ‡ เปเบฅเบฐเบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบเบฒเบ™เบ—เปเบฒเบ„เบงเบฒเบกเบชเบฐเบญเบฒเบ”เบขเปˆเบฒเบ‡เบซเป‰เบฒเบงเบซเบฑเบ™เบ‚เบญเบ‡ buffer เบ„เบฒเบ”เบ„เบฐเป€เบ™เบชเบฒเบ‚เบฒ. เบเบฒเบ™เป€เบžเบตเปˆเบกเบเบฒเบ™เบ›เบปเบเบ›เป‰เบญเบ‡เบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบ—เบตเปˆเบเบฑเบš kernel เบ„เบฒเบ”เบงเปˆเบฒเบˆเบฐเป€เบžเบตเปˆเบกเบ„เปˆเบฒเปƒเบŠเป‰เบˆเปˆเบฒเบเป€เบเบตเบ™ 209%.

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

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