Retbleed: Смекчаване на проследяването на дълбочината на обаждането, което се очаква да избегне IBRS „Шоу на ужасите за ефективност“

Поради това новото смекчаване на сигурността “Retbleed” още повече влошава производителността на процесора за засегнатите процесори, инженерите на Intel преразгледаха работата по смекчаването на проследяването на дълбочината на повикванията като алтернатива на смекчаването на индиректната ограничена спекулация на клонове (IBRS), за да помогнат за намаляване на режийните разходи.

Томас Глайкснер от Linutronix, който Intel придоби по-рано тази годинаи дългогодишният инженер на Intel Питър Зийлстра работят върху „retbleed=stuff“ като нов подход за смекчаване на Retbleed с проследяване на дълбочината на обажданията.

Този нов подход за смекчаване има за цел да има по-ниски режийни разходи от използването на IBRS. Gleixner обобщи ситуацията този уикенд в пощенския списък на ядрото:

В добрите стари дни на Spectre v2 (2018) решихме да не използваме IBRS. Погледнато назад, това може да е било грешно решение, защото не е принудило хората да измислят алтернативни подходи.

Тогава вече беше обсъдено да се опита софтуерно базирано отчитане на дълбочината на повикванията и RSB пълнеж на underflow за Intel SKL[-X] системи за избягване на безумните режийни разходи на IBRS.

Това беше изпробвано през 2018 г. и беше отхвърлено поради огромните режийни разходи и други недостатъци на подхода за поставяне на счетоводството във всеки пролог на функция:

1) Увеличаване на размера на текста, което е наложено на всички. Докато процесорите са добри в игнорирането на NOP, те все още замърсяват I-кеша.

2) Това води до свръхотчитане на опашката при повикване, което може да бъде използвано.

Деактивирането на задните повиквания също не е опция и добавянето на 10-байтова подложка пред всяко директно повикване е дори по-лошо от гледна точка на размера на текста и влиянието на I-кеша. Можем също така да закърпим обаждания извън счетоводството във функцията за пролог, но това се превръща в кошмар срещу. ENDBR.

Тъй като IBRS е шоу на ужасите с изпълнение, Питър Зийстра и аз преразгледахме подхода за проследяване на дълбочината на разговора и го внедрихме по начин, който се надяваме да е по-приятен и избягва недостатъците на първоначалния опит.

Не е изненадващо, че и двамата мразим страстно резултата…



Проследяването на дълбочината на повикванията е предназначено да прекъсне този път на спекулации чрез вмъкване на извиквания на капан за спекулации в RSB, които никога не получават съответното връщане. Това спира пътя на прогнозиране, докато не се насочи отново,

Предположението е, че пълнежът при 12-то връщане е достатъчен, за да разбие спекулациите, преди да удари недостатъчното течение и резервното връщане към другите предиктори. Тестването потвърждава, че работи. Йоханес, един от изследователите на retbleed. се опита да атакува този подход и потвърди, че той намалява съотношението сигнал/шум до нивото на кристална топка.

Очевидно няма научно доказателство, че това ще издържи бъдещия напредък на научните изследвания, но всичко, което можем да направим в момента, е да спекулираме за това.

Техните бенчмаркове показват, че това смекчаване на проследяването на дълбочината на обаждането е по-ниско, отколкото при използване на текущия маршрут на IBRS. Gleixner коментира, “Така че ползата варира в зависимост от хардуера и сценариите на натоварване. Поне не става по-зле от IBeeRS.

В момента тази нова стратегия за смекчаване е комплект от 38 лепенки сега е за преглед в пощенския списък. В текущата форма с тези корекции подходът за проследяване на дълбочината на повикването се активира с помощта на опцията на ядрото “retbleed=stuff”. 38-те корекции възлизат на почти две хиляди реда нов код на ядрото за справяне с този кошмар за сигурността.

.