Уязвимость в процессорах - что это такое и какие процессоры больше им подвержены: Intel или AMD
реклама
Вступление.
Пользователи ПК при покупке процессоров выбирают их по критерию наибольшей производительности, наибольшей отдачи в играх, но совершенно не интересуются другим аспектом, который широко не обсуждается, это безопасность (устойчивость процессоров к уязвимостям). Но если, к примеру, рядового пользователя этот аспект сильно не касается, ну разве что злоумышленников могут заинтересовать пароли от его банковских счетов, то крупные предприятия, организации, дата-центры, сервера должны ставить аспект безопасности на первое место. Так как они рискуют очень многим, всей своей важнейшей информацией, от паролей до технологий. Поэтому выбирать процессоры для ПК, дата-центров, серверов нужно разумно и правильно, так как процессоры разных производителей совершенно в разной степени подвержены уязвимостям.
реклама
Статья получилась большой, но в меньший объем уложиться не получилось. Итак, простыми словами о сложном.
Механика работы уязвимостей.
Начну с определения термина уязвимости (в данной статье рассматриваем этот термин применительно к центральным процессорам). Уязвимость это ошибка в процессорах имеющих технологию внеочередного исполнения машинных инструкций, предсказания ветвлений, гиперпоточности, и других. Эта ошибка приводит к возможности несанкционированного доступа злоумышленниками к отделенному, закрытому участку процессорной памяти (кэшу), и извлечения из нее конфиденциальных данных, например логинов и паролей. У процессоров с вышеуказанными технологиями группа специалистов по кибербезопасности Google Project Zero в 2018 году обнаружила две масштабные уязвимости, и дала им название Meltdown и Spectre, позже были выявлены и многие другие уязвимости. Для понимания механики, или физики (как вам будет угодно) возникновения этих уязвимостей рассмотрим их подробнее.
1. Уязвимость Meltdown основывается на технологии внеочередного исполнения машинных инструкций процессора. Необходима эта технология для уменьшения времени простоя процессора и увеличения его производительности. Она позволяет процессору исполнять инструкции не в порядке очередности их поступления, а за счет распараллеливания, в определенных случаях, исполнять последующие инструкции раньше предыдущих. Такая ситуация может возникнуть, если время исполнения предыдущей инструкции будет больше времени исполнения последующей. То есть, получается, что процессор исполняет последующий код, не дожидаясь результата предыдущего, по результатам которого, например, последующий код не может быть выполнен. Конечно, в таком случае результат этой ошибочной операции аннулируется, и в дальнейшем процессором использоваться не будет. Но! Доступ к кэш-памяти процессора эта ошибочная операция до аннулирования все же успевает получить, прописывает там свой результат, и может извлечь оттуда все необходимые ей данные, таким образом, получается, что из кэш-памяти можно извлечь данные, доступа к которым не должно было быть. В обычном случае зловредная программа, запросив доступ к этой области памяти, получит ответ системы, что доступ туда невозможен. Но в нашем рассматриваемом случае, из-за выполнения инструкций вне очереди, при исполнении последующей инструкции со зловредным «хвостом», раньше, чем предыдущей, зловред получает доступ к кэш-памяти и считывает оттуда пароли, или другие необходимые ему данные. Если еще короче, то легитимность исполнения инструкций и контроль доступа к памяти осуществляется на последнем этапе исполнения всех инструкций, а до этого момента зловред бесконтрольно делает, все что ему нужно.
реклама
2. Уязвимость Spectre основывается на технологии спекулятивного исполнения инструкций, значительно повышающей производительность процессора, и являющейся системой прогнозирования (предсказания ветвлений). Суть ее работы заключается в том, что при выполнении процессором вычислений он старается заранее рассчитать некоторое множество возможных сценариев событий исполняемой программы, не дожидаясь результата предыдущего вычисления, который и должен определить, какой в действительности сценарий должен выполняться по его результату. Например, процессор исполняет действие «А» и, не дожидаясь, когда станут известны результаты действия «А», рассчитывает некоторое количество наиболее вероятных действий «B, C, D, E, F», следующих за действием «А». И если оказывается, что после действия «А», должно выполняться какое-либо действие из уже рассчитанных, например «D», то тогда все хорошо, время на вычисление этого действия экономится, так как оно уже готово, и ускоряется работа процессора. Остальные не угаданные ветви действий «B, C, E, F» процессор аннулирует. Но неправильные предсказания тоже происходят, ничего страшного при этом не случается, процессор просто начинает вычисление правильного действия «W», после получения результата действия «А», и просто увеличивается время вычисления этой последовательности событий, а не угаданные действия «B, C, D, E, F» аннулируются процессором. Предсказатель ветвлений обучаем, он накапливает статистику, запоминает закономерность в вычислении действий. И повторяющиеся последовательности вероятных сценариев событий, которые он угадывал правильно, начинает считать истинными, и эти сценарии событий в следующий раз он предсказывает в первую очередь, считая их правильными, и предоставляет доступ к кэш-памяти. Этим и пользуется зловред, он подсовывает предсказателю ветвлений код похожий на целевой, и «тренирует» предсказатель ветвлений, заставляя его многократно правильно угадывать вероятный сценарий события, и считать его истинным, которое проходит «проверку» в большинстве случаев. После накопления предсказателем ветвлений необходимой статистики зловред задает в задании другое условие, например запись в кэш – память или считывание из него необходимых зловреду данных. Предсказатель ветвлений при этом выполняет его, как истинное и предоставляет доступ к кэш – памяти. Потом он, конечно, поймет, что этот результат не является истинным, и сбросит его, но будет уже поздно, зловред свое дело уже сделает.
Результат на ПК злоумышленника выглядит так:
реклама
Для понимания механики уязвимостей рассмотрим еще ее один пример, вообще их существует достаточно много, и описывать их можно до бесконечности, потому на третьем примере я, пожалуй, остановлюсь.
3. Уязвимость ZombielLoad основывается на технологии гиперпоточности (Hyper-Threading), которая также призвана увеличивать быстродействие процессора за счет исполнения физическим ядром процессора двух потоков вычислений. Работает эта технология следующим образом. Одним физическим ядром процессора исполняется два потока кодов разных приложений. В тот момент, когда по какой-либо причине, например из-за временного отсутствия необходимых данных для продолжения вычисления первого потока, его обработка останавливается, то для предотвращения простоя этого ядра он начинает исполнять код второго потока. Особенность этой технологии, которая создала еще одну дыру в безопасности, заключается в том, что эти оба исполняемые одним ядром потока используют общую для них обоих кэш-память и буфер. Что и дает зловреду, который исполняется, к примеру, в первом потоке, возможность получить доступ к важным данным другого приложения, которое исполняется во втором потоке, из общей для них кэш-памяти. Компания Google, например, в свое время отключала на своих устройствах Chromebook функцию гиперпоточности процессоров, для блокировки данной уязвимости. Однако это снижало производительность до 40 %.
AMD или Intel
реклама
Отсюда можно сделать вывод, что все производители процессоров в погоне за увеличением их быстродействия, осознанно оставляют дыры в безопасности. Вернее правильнее даже будет сказать, что за счет оставляемых дыр в безопасности, производители увеличивают быстродействие своих процессоров. Так как, недопущение дыр в безопасности при производстве процессоров, неминуемо снизит их быстродействие из-за значительного усложнения вычислений. И производители прекрасно об этом знают, и умалчивают об уязвимостях, пока их не выведут на чистую воду.
Ну а как обстоят дела в плане наличия или отсутствия уязвимостей процессоров разных компаний. В разной степени этим уязвимостям подвержены процессоры всех производителей (Intel, AMD, а также построенных по архитектуре ARM). Например, компания Intel имеет 242 публично раскрытых уязвимостей. А компания AMD всего лишь 16.
Некоторые из официально опубликованных компанией Intel уязвимостей:
Разрыв получился колоссальный, не правда ли. Поэтому компания AMD ведет себя более пассивно в вопросе устранения дыр безопасности, в то время как компания Intel лихорадочно пытается их залатывать. Ну и следующие процессоры, построенные то архитектуре ARM (Cortex A15, Cortex A57, Cortex A72, Cortex A75) также не избежали этой участи. А вот, например, как бы это парадоксально не звучало, но отечественный процессор Байкал-Т1 построенный на ядрах MIPS P5600 не подвержен уязвимостям Meltdown и Spectre.
Здесь привожу список процессоров подверженных уязвимостям из официального источника.
Следует отметить, что рассматриваемые в этой статье уязвимости являются ошибками на уровне кристалла процессора, и полностью их устранить можно только фундаментально изменив архитектуру чипа. Но осуществить это по отношению к уже произведенным чипам невозможно. Поэтому, решается эта проблема только частично, путем исправления программного обеспечения и прошивок (программными заплатками), которыми компания Intel и завалила своих пользователей.
Алгоритм создания исправлений ПО на примере операционной системы AstraLinux:
Каждая такая программная заплатка снижает производительность системы «процессор – операционная система». Причем исправления, сделанные для процессоров Intel замедляют работу компьютеров в несколько раз сильнее, чем аналогичные исправления для процессоров AMD.
Так что, на мой взгляд, в плане безопасности победа с разгромным счетом за компанией AMD. Сам собой напрашивается вывод, уж не поэтому ли компания Intel, за счет того, что оставляла громадное количество дыр в безопасности своих процессоров обеспечивала их производительность на ядро, выше, чем у процессоров AMD.
Надеюсь, моя статья была для вас полезна. Что вы думаете по этому поводу, и сталкивались ли вы напрямую с уязвимостями? Пишите в комментариях.
реклама
Лента материалов
Соблюдение Правил конференции строго обязательно!
Флуд, флейм и оффтоп преследуются по всей строгости закона!
Комментарии, содержащие оскорбления, нецензурные выражения (в т.ч. замаскированный мат), экстремистские высказывания, рекламу и спам, удаляются независимо от содержимого, а к их авторам могут применяться меры вплоть до запрета написания комментариев и, в случае написания комментария через социальные сети, жалобы в администрацию данной сети.
Комментарии Правила