Уязвимости Meltdown и Spectre в поцесорах Intel, AMD и ARM

Уязвимости Meltdown и Spectre в поцесорах Intel, AMD и ARM #1
2018-01-04 15:57

Главной новостью нового года в сфере ИТ и кибербезопасности стало заявление исследователей из Google Project Zero об обнаруженной уязвимости в продукции всех производителей процессоров. Специалисты раскрыли ряд недостатков безопасности, которые, по их словам, могут позволить хакерам украсть конфиденциальную информацию практически из всех современных вычислительных устройств, содержащих чипы от Intel Corp, Advanced Micro Devices Inc и ARM Holdings. 

Эти уязвимости получили кодовые имена Meltdown и Spectre. (Ознакомиться с докладом можно на официальном веб-портале Google Project Zero (https://googleprojectzero.blogspot.com/2018/01/reading-privileged-memory-with-side.html)).

Как сообщается, Meltdown характерна для Intel, а Spectre - для Intel/AMD/ARM. Разработчики подготовили работающие прототипы эксплойтов, в том числе -реализация на JavaScript для использования в браузере.

Уязвимость Meltdown позволяет разрушить барьер между приложениями и внутренней памятью операционной системы, что открывает доступ к данным, хранящимся в памяти ОС.

Spectre нарушает такой барьер между самими приложениями: условно, один сервис может получить доступ к памяти другого.

Фрагмент коду Spectre:

1 #include

2 #include

3 #include

4 #ifdef _MSC_VER

5 #include /* for rdtscp and clflush */

6 #pragma optimize("gt",on)

7 #else

8 #include /* for rdtscp and clflush */

9 #endif

10

11 /********************************************************************

12 Victim code.

13 ********************************************************************/

14 unsigned int array1_size = 16;

15 uint8_t unused1[64];

16 uint8_t array1[160] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 };

17 uint8_t unused2[64];

18 uint8_t array2[256 * 512];

19

20 char *secret = "The Magic Words are Squeamish Ossifrage.";

21

22 uint8_t temp = 0; /* Used so compiler won’t optimize out victim_function() */

23

24 void victim_function(size_t x) {

25 if (x < array1_size) {

26 temp &= array2[array1[x] * 512];

27 }

28 }

Но природа этих уязвимостей такова, что позволяет только считывать определенные данные без возможности записи. (Https:/newsroom.intel.com/news/intel-responds-to-security-research-findings/).

Такое считывания данных позволяет обойти ASLR / KASLR, а атаки такого типа называются «side-channel» (http://blog.erratasec.com/2018/01/why-meltdown-exists.html) и являются довольно аппаратно-специфичными.

Такого рода атаки были известны и ранее, однако, никогда не выходили за рамки теоретического обсуждения в силу сложности их использования.

Поскольку, как мы писали выше, ни Spectre, ни Meltdown не являются полноценными атаками, мы не ожидаем какого-либо серьезного использования этих уязвимостей в ближайшее время.

В Intel и ARM настаивают на том, что проблема не является недостатком дизайна, но для ее решения нужно, чтобы пользователи загрузили патч и обновили свою операционную систему.

Корпорация Microsoft уже опубликовала обновление для своих операционных систем (https://support.microsoft.com/en-us/help/4072698/windows-server-guidance-to-protect-against-the-speculative-execution-s), но природа обновление такова, что ухудшает производительность центрального процессора. По разным оценкам, потеря производительности может достигать до 5%.