Екип експерти от Швейцарската висша техническа школа в Цюрих откри нов вариант на атаката за спекулативно извършване на косвени преходи в централните процесори, която дава възможност от паметта да бъде извлечена информация от ядрото на операционната система (пароли, данни за онлайн банкиране и т.н.), както и да бъдат осъществявани атаки срещу хост системата при виртуалните машини.
Това са двете уязвимости CVE-2022-29900 и CVE-2022-29901 с общото име Retbleed, които много приличат на атаките Spectre-v2. Разликата е в организирането на спекулативното изпълнение на произволен код при обработка на процесорната инструкция ret (return), при която се адресът на прехода взема от стека, вместо от паметта или регистър на процесора, при извършването на косвен преход.
Хакерът има възможност да създаде условия за невярно прогнозиране на прехода и осъществяване на преход към неговия хакерски код – нещо, което изобщо не е предвидено в логиката на на изпълнение на програмата. В крайна сметка процесорът решава, че прогнозирането на прехода е невярно и ще върне изпълнението на операцията в начално състояние. Само че обработените данни за осъществяване на спекулативния преход остават в кеша и в буферите на процесорната архитектура. И ако в в този участък на кода има обръщение към паметта, то неговото спекулативно изпълнение ще доведе до вмъкване в кеша на данните прочетени от паметта.
За защита от класическите атаки от клас Spectre, в които се използват процесорни инструкции за условен и косвен преход, в повечето операционни системи се използва техниката retpoline, базирана на замяна на операциите за косвен преход на инструкцията ret, за която в процесорите се използва отделен модул за прогнозиране на преходите.
Експертите представиха работещ експлойт, който дава възможност на компютърни системи с процесори на Intel да се извличат произволни данни от защитената памет на ядрото на операционната система със скорост 219 байта в секунда при точност 98%. Интересно е, че при процесорите на AMD ефективността на работата на същия експлойт е много по-висока – скоростта на изтичане е цели 3,9 KB в секунда. При компютър с процесор на Intel паролата на root се определя за 28 минути, а при използване на процесор на AMD – само за 6 минути.
Уязвимостта е валидна за от 6-то до 8-то поколение на процесорите на Intel, които излизаха до третото тримесечие на 2019 година (включително Skylake), както и за процесорите на AMD с архитектури Zen 1, Zen 1+ и Zen 2. По-новите процесори като AMD Zen3 и Intel Alder Lake, както и при ARM чиповете проблемът се решава чрез вградените механизми за защита. Така например, може да се използва инструкцията IBRS (Indirect Branch Restricted Speculation), която изцяло защитава от този тип атаки.
При Linux ядрото и Xen хипервайзора бе предложен пач, който решава проблема по софтуерен път. За съжаление защитата от Retbleed води до значително забавяне на процесорите както на AMD, така и на Intel – от 14% до 39% в зависимост от алгоритъма на програмата. Очакванията са при Windows забавянето да се окаже още по-голямо.