Нова атака на NetSpectre не изисква жертвата да изтегля или стартира злонамерен код

Сигурност / Нова атака на NetSpectre не изисква жертвата да изтегля или стартира злонамерен код

NetSpectre бомбардира машинните портове, за да получат достъп

4 минути четене

Нова CPU атака от клас Spectre привлече вниманието на академичните учени, тъй като наскоро те пуснаха изследователска статия, озаглавена „NetSpectre: Четене на произволна памет през мрежата“, която разглежда задълбочени подробности за това как работи този клас CPU атаки.



Това, което прави новата атака на CPU Spectre малко страшна, е, че тя не изисква нападателят да заблуди жертвата си при изтегляне и стартиране на злонамерени скриптове на тяхната машина или дори достъп до уебсайт, който изпълнява злонамерен JavaScript в браузъра на потребителя.

NetSpectre просто ще бомбардира мрежовите портове на машината, докато намери начин да постигне целите си.



„Призрачните атаки подтикват жертвата да извършва спекулативно операции, които не биха възникнали по време на строго сериализирана обработка на инструкциите на програмата по ред и които извеждат поверителна информация на жертвата по скрит канал на нападател“



NetSpectre обаче не идва без собствени недостатъци. Той има невероятно ниска скорост на дефилтрация, около 15 бита на час, за да се извършват атаки чрез мрежова връзка и насочване на данни, съхранявани в кеша на процесора.



В изследователската работа учените са успели да постигнат до 60 бита / час със специална вариация на NetSpectre, която насочва данни, обработвани чрез модула AVX2 на процесора, който е специфичен за процесорите на Intel.

И в двата случая NetSpectre в момента се счита за твърде бавен, за да бъде ценен за нападателите, което означава, че NetSpectre е само теоретична заплаха, а не нещо, от което компаниите трябва да се прикриват току що . С напредването на технологията обаче скоростите на дефилтрация несъмнено ще се увеличат и тогава имаме изцяло нов клас жизнеспособни и невероятно лесни за изпълнение CPU атаки, от които да се тревожим.

Новата атака на NetSpectre е свързана с уязвимостта Spectre V1 (CVE-2017-5753), която изследователите на Google разкриха по-рано тази година (2018). Това означава, че всички процесори, които биха могли да бъдат засегнати от Spectre V1, също се считат за NetSpectre, ако са внедрени с подходящ фърмуер на OS и CPU.



В момента има два варианта на атака за NetSpectre: Извличане на данни от целевата система и дистанционно разбиване на ASLR (Address Space Layout Randomisation) в целевата система.

Веригата от събития за първия вид атака протича по следния начин:

  1. Забъркайте предиктора на клона.
  2. Нулирайте състоянието на микроархитектурния елемент.
  3. Пропускайте малко към микроархитектурния елемент.
  4. Изложете състоянието на микроархитектурния елемент на мрежата.
  • В стъпка 1 нападателят греши предсказателя на клона на жертвата, за да извърши атака Spectre. За да заблуди предиктора на клона, нападателят използва приспособлението за течове с валидни индекси. Валидните индекси гарантират, че предикторът на клона се научава винаги да взема клона, т.е. предикторът на клонове предполага, че условието е вярно. Имайте предвид, че тази стъпка разчита само на притурката за течове. Няма обратна връзка с нападателя и по този начин микроархитектурното състояние не трябва да бъде нулирано или предадено.
  • В стъпка 2 нападателят трябва да нулира микроархитектурното състояние, за да даде възможност за кодиране на изтекли битове с помощта на микроархитектурен елемент. Тази стъпка силно зависи от използвания микроархитектурен елемент, например, когато използва кеша, нападателят изтегля голям файл от жертвата; ако се използва AVX2, нападателят просто чака повече от 1 милисекунда. След тази стъпка са изпълнени всички изисквания, за да изтече малко от жертвата.
  • В стъпка 3 нападателят използва уязвимостта на Spectre, за да изтече един бит от жертвата. Тъй като предсказателят на клонове е грешен в стъпка 1, осигуряването на индекс извън границите на притурката за течове ще стартира вътрешния път и ще модифицира микроархитектурния елемент, т.е. битът е кодиран в микроархитектурния елемент.
  • В стъпка 4 нападателят трябва да предаде кодираната информация по мрежата. Тази стъпка съответства на втората фаза на оригиналната атака на Spectre. Атакуващият изпраща мрежов пакет, който се обработва от приспособлението за предаване и измерва времето от изпращане на пакета до пристигането на отговора.

Метод за атака №2: Прекъсване на дистанционно ASLR

  1. Забъркайте предиктора на клона.
  2. Достъп до индекс извън границите, за да кеширате (известно) място в паметта.
  3. Измерете времето за изпълнение на функция чрез мрежата, за да установите дали външният достъп кешира част от нея.

Призрачни контрамерки

Intel и AMD препоръчват използването на инструкцията lfence като спекулативна бариера. Тази инструкция трябва да бъде вмъкната след проверка на критични граници за сигурност, за да се спре спекулативното изпълнение. Въпреки това, добавянето на това към всяка проверка на граници има значителни режийни разходи.

Тъй като NetSpectre е мрежова атака, тя не може да бъде предотвратена само чрез смекчаване на Spectre, но и чрез контрамерки на мрежовия слой. Тривиална NetSpectre атака може лесно да бъде открита чрез DDoS защита, тъй като няколко хиляди идентични пакета се изпращат от един и същи източник.

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

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