Както вече съобщихме, експертите по информационна сигурност от политехническия институт във Вустер, САЩ и от университета Любек, Германия разкриха поредната хардуерна уязвимост в процесорите на Intel. Използва се спекулативното използване на виртуалната и физическата памет. Сега бе публикувана по-подробна информация за този неочаквано сериозен проблем.

Потвърди се, че атаката е специфична само за процесорите на Intel и не се проявява в ARM чиповете и в процесорите на AMD. Предложената от експертите техника за атакуване дава възможност за точното определяне на виртуалните адреси във физическата памет, с което съществено се повишава ефективността от провеждането на атаки от ниско ниво, които са в състояние да манипулират разпределянето на страниците във физическата памет и да осигурят достъпа до всичката чувствителна информация – пароли, интернет банкиране и т.н.

Според тази информация, SPOILER 4096 пъти ускорява провеждането на атаките тип Prime+Probe, с помощта на които се прочита съдържанието на защитената памет чрез анализ на процесорния кеш. Тези експлойти използват съвсем друг начин за възстановяване на информацията от процесорния кеш. Ключовата разлика от предишните способи за достъп до чувствителната информация е използването на две процесорни ядра, при които за канал за достъп се използват особеностите на протокола за съгласуваното използване на кеш-паметта от процесорните ядра, известен като Invalidation-Based Coherence Protocol.

SPOILER е много ефективен и в откриването на разположените една след друга страници на паметта, което повишава до 100% ефективността на атаката RowHammer за промяна съдържанието на клетките на паметта в другите процеси. Да напомним, че RowHammer е метод за използване на уязвимост в DRAM паметите с помощта на стандартен JavaScript код.

Атаката RowHammer използва промяната на информацията в отделни битове на DRAM паметта, повредата на които може да се инициира чрез циклично четене на данните от съседните клетки – опростен цикъл с четене съдържанието на паметта и изчистването на кеша. Тази атака използва особеностите на работа на на DRAM паметта, която е формирана като двумерен масив от клетки, всяка от които е съставена от транзистор и кондензатор. Състоянието на записаното в клетката значение се определя от това, дали кондензаторът е зареден или не. При извършване на непрекъснато четене на една и съща област, поради непрекъснатото отваряне и затваряне на линията WL (Word Line), която управлява транзисторите за достъп, възникват флуктуации в напрежението, които водят до аномалии чрез падането на заряда в съседните клетки. В крайна сметка някои от тях губят достатъчно заряд и следващият цикъл на регенерация не успява да възстанови тяхното първоначално напрежение.

С използването на тези комбинирани със SPOILER атаки става възможно реализирането на атаки от средата на виртуална машина, включително чрез използването на стандартен JavaScript код, въпреки предприетите в браузърите мерки за защита, предимно чрез ограничаване точността на таймера.

Разработените за Spectre мерки за защита не блокират атаката SPOILER. Атаките от клас Spectre манипулират спекулативното изпълнение на отделните процесорни инструкции, резултатът от които се нулира от процесора след даване на неправилна прогноза, но следите от това остават в общия кеш. Техниката SPOILER засяга самия механизъм за предварително зареждане на на информацията от паметта в регистрите на процесора.

За взаимодействие с паметта в процесора се използва буфер за подреден достъпа до паметта (MOB, Memory Order Buffer), в който са реализирани два циклични буфера – един за запис на данните от процесорните регистри в паметта и друг за четене от паметта в регистрите. Използването на буфера за запис винаги се осъществява при появата на съответната инструкция, но буферът за четене допуска предварителното зареждане на данните в кеша, без да се изчаква синхронизацията с буфера на запис, като само частично се проверява тази зависимост.

Тъй като буферът за запис може да влияе на зареждането на данните в буфера за четене (например, когато незавършената операция за запис може да окаже влияние на спекулативното прочетени данни), преди потвърждаването на операцията за четене, се прави анализ на зависимостта от предишните операции на запис. Ако има пресичане на тези процеси, операцията за спекулативно четене се отхвърля и клетките на буфера се обновяват с актуалните, а не със спекулативно прочетените данни. Именно тук е проблемът – пълноценната оценка на зависимостта от операцията на запис може да стане само след като се получат сведения за пълния физически адрес, понеже при предварителното четене се извършва частична проверка по непълен адрес.

Тази манипулация води до забавяне при появата на конфликт при достъпа до физическите адреси и неговата поява може да се засече. С помощта на инструкциите rdtscp и mfence е възможно да се запълни буфера за запис с идентични отмествания, но в различни виртуални страници в паметта. След това, чрез анализа на на забавянето при обръщенията към сегментите на паметта с еднакво отместване, но в различни страници на паметта, атакуващият може да определи разположението на виртуалните адреси във физическата памет на компютъра.

Проблемът се проявява още в първото поколение процесори Intel Core. В процесорите AMD и ARM се използва друга логика за обработка на буфера за достъп до паметта и този проблем за тях не важи. Компанията Intel е била уведомена за тази уязвимост преди 3 месеца, но засега няма дори и предложения, как може да бъде решен проблема. Според разкрилите тази уязвимост експерти, софтуерните методи за защита срещу SPOILER са безсмислени. Проблемът може да бъде решен единствено на хардуерно ниво, с цената на осезателно намаляване на производителността. Разбира се, хардуерните промени няма как да бъдат осъществени бързо. Навярно ще минат години.