Владислав Кабак | Omegicus CIO

NebKa

Природа

В Греции хризантемы называли "золотыми цветами". Японцы называют их "кипу".


читать далее »

Наука

Самый длинный однопролетный ленточный транспортер находится в Западной Австралии и имеет длину 29 км.


читать далее »

Браслет из бисера. Схема



читать далее »

Вязаный крючком пуфик

 



читать далее »

Диван-комод своими руками. Для дома и дачи.

Мне очень нравится функциональная угловая мебель простых форм.  Ну, конечно, все это красиво, заманчиво, однако - цена. Известное дело, она на итальянскую мебель баснословная. А если внимательно присмотреться, то можно совершенно бесплатно аккумулировать идею и



читать далее »

Украшаем одежду шелковым поясом с розочками из ленточек



читать далее »

Плед Спиральные квадраты

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



читать далее »

Детская шапка моряка – панамка крючком от Люсинды Шефер

 



читать далее »

Плед из очень простых мотивов крючком. МК

 



читать далее »

Маленький Герой

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


читать далее »

Скрестить свитер с блузкой (подборка)

Несколько идей с сайта rakuten. Позволяют попутно изменить размер — сделать его больше или меньше.  Источник: http://secondstreet.ru/blog/sviter/skrestit-sviter-s-bluzkoj-podborka.html



читать далее »

Совет:

Проведите антиперспирантом по стопам ног, прежде чем отправитесь бегать или если вам предстоит долгая пешая прогулка. Эта хитрость поможет сохранить тепло ваших ног зимой и убережёт от мозолей.


читать далее »

Анекдот

Жена айтишника спрашивает у мужа:- Почему ты никогда не рассказываешь, как у тебя дела на работе?- Да чего тебе рассказывать? Вот, вчера блок питания сгорел…- Бедненький! Ну ты хоть с собой бутерброды бери


читать далее »

Животные

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


читать далее »

Поделки из кофейных зерен



читать далее »

Этикетки для баночек с вареньем

 



читать далее »

ВЫШИВКА АТЛАСНЫМИ ЛЕНТАМИ ПИОНОВ



читать далее »

Моя работа "Корзинка полевых цветов"

После того как я сделала стаканчик из газетных трубочек и показала его моей сестре, поступил от неё заказ :) "Хочу подобное, что-то плетеное") Не долго думая, я решила сделать для неё такую вот корзиночку с


читать далее »

Моя работа: "Большое сердце"

Ещё одна моя работа под названием "Большое сердце". Это сердце сделала за один вечер,так как поджимали сроки и пришлось его делать из того что дома было))) Сделала я его из фетра,ватных пластин и горячего клея)  Извините


читать далее »

Анекдот

Нaши прорывaются через зaщиту соперникa!!! Очень точный пaс!!! О!!! Смотрите!!! Нaши в троем!!! Против одного врaтaря!!! ! Они пaсуются!!! Аaa! ! Нaвес!!! УДАР!!! ГОООООООООН-ДООООО-НЫЫЫЫ Durех НАШ СЕГОДНЯШНИЙ СПОНСОР!!!


читать далее »

Маленькая сумочка

Приближается лето. Я хочу поделиться с вами мастер-классом по шитью. Давайте сошьем маленькую сумочку своими руками: 1. 2. 3. 4. 5. 6. 7. 8. Sonya_kot Источник: http://www.liveinternet.ru/users/3243004/post322501108/



читать далее »

Анекдот

Уходите по-английски, пока вас не послали по-русски.


читать далее »

Мой совет:

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


читать далее »

Альтернатива лазерной эпиляции

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



читать далее »

Природа

Гроза в Египте бывает всего один раз в 200 лет.


читать далее »

География

Самый старый город в мире – Дамаск, столица Сирии. Он процветал несколько тысяч лет до основания Рима в 753 году д.н.э.


читать далее »

Животные

Яйца рифовой акулы благодаря своей спиралевидной форме зарываются в песок.


читать далее »

13 самых жутких мумий мира

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



читать далее »

Цветочки из одноразовых ложек

Не сразу догадалась, что цветочки из одноразовых ложек....забавно....      источник: http://s30893898787.mirtesen.ru/



читать далее »

Природа

В кубическом сантиметре морской воды - 1,5 гр белка и др. веществ. Атлантический океан по ценности оценивается в 20 тыс. урожаев/год на суше.


читать далее »

Выкройки кожаных сумок

выкройки не просто сумок из кожи, а сумок всемирно известного дома HERMES, который в представлении не нуждается. И буквально в нынешнем году они выложили на сайте своей кампании в общий доступ выкройки этих супер-мега-известных и дорогих



читать далее »

Анекдот

- Дорогой, что это за рыжая сучка с тобой на аве?..- Сестра.- Ой, такая милая.


читать далее »

Шраг спицами. Схема+ описание

Шраг связан спицами №10. Схема вязания     



читать далее »

Фоны для открыток, украшения, стразы своими руками. Мастер-класс от КсюИв

Автор мастер-класса: КсюИв Давайте попробуем еще как нибудь украсить наши фоны для открыток, альбомов и т.п.Для этого нам понадобятся трафареты или пластины для тиснения, наждачка, палочки с шариком. Скажу честно машинки для тиснения у меня нет. Но



читать далее »

Пасхальное настроение. Подборка фотографий для вдохновения



читать далее »

КРАФТ-ПАКЕТЫ

Источник: http://barrellab.ru/



читать далее »

Анекдот

Пришёл мальчик с-пальчик в поликлинику кровь сдавать... Такая вот нелепая смерть...


читать далее »

Животные

Существует около 400 тыс. известных видов жуков. Размеры самого крупного, жука-титана, могут достигать 17 см


читать далее »

Животные

Когда жирафа рожает, ее детеныш падает с высоты полутора метров.


читать далее »

ИНТЕРЕСНАЯ КОРОБОЧКА С ЯЩИКАМИ

Источник: http://barrellab.ru



читать далее »

Анекдот

Приходит мужик домой.- Жена, собирайся, я выиграл миллион долларов!- Куда, на море?- Вали куда хочешь!


читать далее »

Анекдот

- Дорогая ты хотела непредсказуемости?!-!!!-Так вот через час мы едем автостопом в Конго, возьми АК-47 на кухне, а детей я уже продал цыганам..


читать далее »

Чистка, реставрация и консервация находок из металла

Каждый кладоискатель, как правило, сталкивается с массой проблем, когда ему в процессе поисков попадаются находки не совсем идеальной сохранности. Естественный порыв — хочется побыстрее привести найденные с немалыми трудами монету, медаль


читать далее »

Животные

Детеныш осьминога размером с блоху при рождении.


читать далее »

Природа

Каспийское море площадью 370 000 кв. км и глубиной до 1025 м - самый крупный бессточный водоём в мире.


читать далее »

Анекдот

На грузинскoй свадьбе oдин другoму: — На мнoгих свадьба я бывал, нo такoгo невеста еще не видел - не пoйму вooбще — баба этo или мужик. — Эй, замoлчи вooбще, а тo я тебе зарежу


читать далее »

Письмо танкиста, которое он не успел отправить любимой

25 октября 1941 г. Здравствуй, моя Варя! Нет, не встретимся мы с тобой. Вчера мы в полдень громили еще одну гитлеровскую колонну. Фашистский снаряд пробил боковую броню и разорвался внутри. Пока уводил я машину в лес, Василий умер. Рана моя жестока. Похоронил я Василия Орлова в березовой роще. В ней было


читать далее »

Вязаные элементы в одежде

Даже только научившись вязать крючком вы можете обновить или переделать некоторые предметы гардероба, используя элементы ивставки, связанные крючком. Сделать из простой футболки изящный топ или сшить эффектный сарафан с вязаной кокеткой намного быстрее и проще, чем



читать далее »

Мой совет:

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


читать далее »

КРАСИВЫЙ ПЛЕД

КРАСИВЫЙ ПЛЕД Источник: http://barrellab.ru



читать далее »

Поделка "Замок" для сада, своими руками

Поделка "Замок" для сада, своими руками    У меня, возникала идея-фикс сделать поделку для сада  веселящую глаз, своими руками. Выбор пал на мини-замок, так как его наиболее просто вписать в любой точке участка с учетом его геологических особенностей. Тем



читать далее »

Природа

Двух снежинок с абсолютно одинаковой кристаллической структурой не существует.


читать далее »

10 необычных защитных механизмов нашего тела

Наш организм - это совокупность самых разных сложных систем. Одной из главных подобных систем являются знакомые всем нам защитные механизмы, которые помогают избежать болезней, аллергии и прочих нежелательных внешних угроз. Давайте кратко познакомимся с каждым



читать далее »

Животные

Челюсть кошек двигается только вверх и вниз. Челюсть собак - во всех четырех направлениях.


читать далее »

Разное

Ветряные мельницы всегда вращаются против часовой стрелки. Кроме мельницы в Ирландии.


читать далее »

Шкала масштабов Вселенной



читать далее »

История

Первая книга, напечатанная в Англии, была посвящена шахматам.


читать далее »

Анекдот

Пошла на кухню выключить свет... вернулась с двумя котлетами... Пить хочу, боюсь возвращаться... 


читать далее »

Человек

Средний человек производит 1,43 пинты пота в сутки.


читать далее »

Сумка из старого свитера



читать далее »

ТКАНЬ + ВЯЗАНИЕ - 1...

Фотографии в альбоме «Ткань+вязание» nightcat2206 на Яндекс.Фотках



читать далее »

Розы из фома. Автор Нелли Унанян.

  Нелли Унанян — автор мастер-класса «Foamiran ( фоамиран )у нас продают в дизайнерских магазинах, а вот в России его пока еще сложно найти, — рассказывает Нелли Унанян (Армения), — сокращенно его называю ФОМ. Этот материал, как губчатая бумага. При



читать далее »

Спиральное плетение из газетных трубочек.

Мастер-класс от Sel@ Беру 3 длинные трубочки (срастить по 2 обычные) и выкладываю. Если нужно добиться ровного плетения, то углы должны быть одинаковыми по 60 градусов. Для изделия бОльшего диаметра можно скрестить 4 трубочки (углы по 45



читать далее »

Подсвечник в стиле мозаики. Мастер-класс



читать далее »
Здесь пока пусто

Unauthorized.

Дефекты проектирования Intel Core 2 Duo - аналитический обзор с точки зрения безопасности

2011.10.08

Автор: (c)Крис Касперски ака мыщъх

Процессоры Intel Core2Duo (и не только они одни!) содержат множество ошибок, приводящих к сбоям программного обеспечения, зависаниям операционной системы и даже к возможности удаленного захвата управления компьютером! Часть ошибок обходится программным путем, часть - обновлением микрокода ЦП или прошивки BIOS, оставшиеся неисправимы вообще и требуют смены процессора. Насколько реальны эти угрозы? Попробуем разобраться!

Введение

Критикуя Windows (и отчасти Linux), за большое количество программных ошибок, мы "по умолчанию" закладываемся на непорочность аппаратного обеспечения, проектировщики которого ничем не отличаются от разработчиков операционных систем. До тех пор, пока процессоры были простыми (относительно операционных систем), выходили редко и тестировались тщательно - ошибки "кремниевых коней" носили единичный характер и учитывались разработчиками компиляторов. Сейчас они представляют разве что познавательный интерес. Легендарный "Hamarsoft's 86BUGS list", насчитывающий свыше сотни ошибок, недокументированных машинных команд и особенностей их поведения, последний раз обновлялся в 1994 году, после чего отправился на свалку истории, захлебнувшись в потоке дефектов, обнаруженных в первых моделях Pentium-процессоров, причем ни один из этих дефектов (за исключением знаменитой ошибки деления, описанной в одноименной врезке), до широкой общественности так и не дошел, ограничившись кругом производителей материнских плат, прошивок BIOS, разработчиков операционных систем/компиляторов и прочей технической элитой.

Возьмем, к примеру, инструкцию битового сканирования BSF dst, src, копирующую в dst индекс первого установленного бита в src. Как вам нравится тот факт, что если src равен нулю, то содержимое dst становится неопределенным, то есть там может оказаться любой мусор, какой только угодно, что серьезно осложняет отладку программ. Допустим, на машине разработчика установлен ЦП, оставляющий dst неизменным и разработчик (или его компилятор) закладываются именно на такое поведение ЦП. А вот у конечного пользователя dst может сбрасываться в нуль, нарушая работоспособность программы и заставляя разработчика теряться в догадках, с какого момента программа пошла вразнос? Обычно в таких случаях все списывается на Windows или "У вас на компьютере вирусы, переустановите операционную систему... Ах, вы уже ее переустановили?! Ну, тогда мы не знаем, разбирайтесь со своей машиной сами".

Кстати, это уже давно не ошибка, а вполне документированная особенность. Intel даже приводит псевдокод команды BSF во втором томе "Instruction Set Reference":

IF SRC = 0
        THEN
                ZF := 1;
                DEST is undefined;
        ELSE
                ZF := 0;
                temp := 0;
        WHILE Bit(SRC, temp) = 0
        DO
                temp := temp + 1;
                DEST := temp;
        OD;
FI;

Листинг 1. Псевдокод команды BSF с "узаконенной" ошибкой.

С такими "особенностями" еще можно смириться, но куда прикажете девать исключения на 486+, эпизодически возникающие при загрузке регистра CR3 (указатель на каталог страниц) в регистр общего назначения? Конечно, непредвиденные исключения можно и подавить, что делает Linux и OpenBSD. Делать-то она это делает, но... местами. А местами не делает. Обращение к регистру CR3 происходит из многих функций ядра, а ядро пишет целая армия разработчиков, часть из которых осведомлена об этом дефекте, а часть даже не подозревает. В результате, мы имеем нестабильно работающую систему.

Windows вообще не пытается сражаться с этим. А зря. Запрещение кэширования на запись в некоторых моделях процессоров разрушает содержимое кэша, откуда процессор продолжат брать ранее скэшированные данные (уже разрушенные) и чтобы программа не "грохнулась", кэш необходимо очистить программным образом, считывая туда незначащие данные вплоть до полного его заполнения. На прикладном уровне такая ситуация, конечно, маловероятна, да и нельзя на прикладном уровне управлять кэшированием, но вот драйвера - совсем другое дело! Если некоторый регион памяти используется для обмена данными с внешним устройством (видеоконтроллером или платой телеметрии), владельцы "неправильных" процессоров окажутся очень "рады" всевозможным артефактам на экране монитора и неверным телеметрическим результатам. Стоит ли удивляться, что x86 не используются в критических инфраструктурах, где работают простые и тщательно протестированные микроконтроллеры?

Впрочем, мы отвлеклись, хотя это весьма полезное отвлечение, дающее читателю понять, что далеко не все странности поведения программного обеспечения имеют программную природу и дефекты процессоров в спонтанно вспыхивающих "голубых экранах смерти" играют далеко не последнюю роль.

Производители ЦП ведут с дефектами проектирования ожесточенную борьбу, прогоняя каждую команду (а то и комбинации команд) через серию агрессивных тестов, результаты которых так или иначе отражаются в документации или же "specification updates". В частности, последние обновления спецификации на Intel Core 2 Duo в любой момент можно скачать с официального сайта Intel: http://www.intel.com/design/core2duo/documentation.htm#specupdt, раздел errata которого на момент написания этих строк (май 2008) насчитывает 126 ошибок, многие из которых критические и затрагивающие не только ядерный, но и прикладной уровень.

Не многим лучше обстоит ситуация с серверными процессорами: Intel Xeon Quad-Core 5400 и его младший собрат Xeon Dual-Core 5100 насчитывают по 54 официально признанных дефектов каждый. И даже Itanium 9000, рекомендованный фирмой Intel для критических инфраструктур ("massive, mission-critical computing") хранит в своих недрах 85 "жуков", способных обрушить сервер в любой момент. А ведь это одно из самых дорогих и тщательно протестированных произведений Intel, ориентированное на корпоративный сегмент рынка, который ошибок не прощает и на котором помимо Intel имеются и другие игроки, впрочем, сталкивающиеся с теми же самыми проблемами.

Мир несовершенен, никто из нас не без греха. Обновлять микрокод ЦП, прошивку BIOS (а в критических случаях - и сами процессоры!) нужно также регулярно, как накладывать заплатки на операционные системы и прочее программное обеспечение. Ах да, операционные системы... С них-то все и началось!

Intel Core 2 Duo

Рисунок 1. Intel Core 2 Duo со всеми ошибками, которые в нем только есть.

...и грянул гром

Ознакомившись с очередной errata на Core 2 Duo, Theo de Raadt (ведущий разработчик операционной системы OpenBSD, славящейся своей надежностью и защищенностью), пришел в ярость, граничащую с суицидом, и набросился на производителей Core2Duo с обличительным заявлениям в стиле: "как дальше жить и что нам делать?!", тут же подхваченным прессой и ставшей достоянием широкой общественности, постепенно начинающей осознавать, что помощи нет и не будет. Ситуация очень серьезна - достаточно многие ошибки не только приводят к краху системы, но и (теоретически) допускают возможность удаленного захвата управления. Разработчики OpenBSD попытались заткнуть самые крупные дыры, переписав код ядра так, чтобы исключить или хотя бы снизить вероятность событий, ведущих к проявлению ошибок, но вот остальные программистские коллективы, выражаясь образным языком, даже не почесались, и в первую очередь это относится к новомодному Server'у 2008, для которого заплаток нет и не предвидится. Что же тогда говорить о "морально устаревшем", но все еще работающем парке Windows 2000, XP, Server 2003?!

И хотя ни одного работоспособного exploit'а до сих пор никем не было продемонстрировано, это еще ни о чем не говорит и ничего не доказывает. Автор этих строк активно экспериментирует с различными моделями процессоров (при финансовой поддержке крупнейших фирм, специализирующихся на информационной безопасности) и готовит доклад, который при благоприятном стечении обстоятельств будет прочитан на хакерской конференции "Hack In The Box Security", проводимой в Малайзии в октябре 2008 года: http://conference.hackinthebox.org/ (для желающих посетить сие мероприятие напоминаю, что Малайзия очень удобна тем, что не требует визы, достаточно одного паспорта).

Но вернемся к исходному сообщению Theo de Raadt'а, опубликованному в конце июня 2007 года, когда обнаруженных ошибок было вдвое меньше, чем сейчас: http://marc.info/?l=openbsd-misc&m=118296441702631:

List: openbsd-misc
Subject: Intel Core 2
From: Theo de Raadt
Date: 2007-06-27 17:08:16
Message-ID: 200706271708.l5RH8GkK024621 () cvs ! openbsd ! org

Various developers are busy implementing workarounds for serious bugs in Intel's Core 2 cpu. These processors are buggy as hell, and some of these bugs don't just cause development/debugging problems, but will *ASSUREDLY* be exploitable from user-land code. As is typical, BIOS vendors will be very late providing workarounds/fixes for these processors bugs. Some bugs are unfixable and cannot be worked around. Intel only provides detailed fixes to BIOS vendors and large operating system groups. Open Source operating systems are largely left in the cold.

Full (current) errata from Intel: download.intel.com/design/processor/specupdt/31327914.pdf.

  • We bet there are many more errata not yet announced -- every month this file gets larger.

  • Intel understates the impact of these errata very significantly. Almost all operating systems will run into these bugs.

  • Basically the MMU simply does not operate as specified/implemented in previous generations of x86 hardware. It is not just buggy, but Intel has gone further and defined "new ways to handle page tables" (see page 58).

  • Some of these bugs are along the lines of "buffer overflow"; where a write-protect or non-execute bit for a page table entry is ignored. Others are floating point instruction non-coherencies, or memory corruptions -- outside of the range of permitted writing for the process -- running common instruction sequences.

  • All of this is just unbelievable to many of us.

An easier summary document for some people to read:

http://www.geek.com/images/geeknews/2006Jan/core_duo_errata__2006_01_21__full.gif

Note: that some errata like AI65, AI79, AI43, AI39, AI90, AI99 scare the hell out of us. Some of these are things that cannot be fixed in running code, and some are things that every operating system will do until about mid-2008, because that is how the MMU has always been managed on all generations of Intel/AMD/whoever else hardware. Now Intel is telling people to manage the MMU's TLB flushes in a new and different way. Yet even if we do so, some of the errata listed are unaffected by doing so.

As I said before, hiding in this list are 20-30 bugs that cannot be worked around by operating systems, and will be potentially exploitable. I would bet a lot of money that at least 2-3 of them are.

For instance, AI90 is exploitable on some operating systems (but not OpenBSD running default binaries).

At this time, I cannot recommend purchase of any machines based on the Intel Core 2 until these issues are dealt with (which I suspect will take more than a year). Intel must be come more transparent.

(While here, I would like to say that AMD is becoming less helpful day by day towards open source operating systems too, perhaps because their serious errata lists are growing rapidly too).

Для не владеющих английским языком ("не владеющих", в смысле - находящихся не в ладах) ниже представлен мой перевод:

В настоящий момент разработчики программного обеспечения и производители железа заняты разработкой "костылей", исправляющих серьезные ошибки в процессорах серии Intel Core 2, содержащих просто адское количество багов, и некоторых из этих багов не просто мелкие дефекты проектирования, а реальные дыры, которые *НЕСОМНЕННО* могут быть использованы для атак с прикладного уровня. Ряд ошибок невозможно ни исправить, ни найти обходное решения для предотвращения их возникновения. Intel ограничивается тем, что предоставляет техническую информацию производителям BIOS'ов и ведущим разработчикам коммерческих операционных систем. Open Source сообщество брошено на произвол судьбы.

Вот полная (текущая) errata: download.intel.com/design/processor/specupdt/31327914.pdf (прим. переводчика: ссылка битая, т.к. номер спецификации постоянно обновляется и последняя версия может быть найдена по базовой ссылке: http://www.intel.com/design/core2duo/ documentation.htm?iid=prod_core2duo+tab_techdocs#specupdt).

  • Мы готовы биться о заклад, что ошибок на самом деле гораздо больше, чем анонсировано - с каждым месяцем errata становиться все больше и больше (так оно и оказалось впоследствии - прим. КК);

  • Intel существенно преуменьшает значимость обнаруженных ошибок - практически все операционные системы вляпаются в эти баги;

  • В сущности, MMU (Memory Management Unit - Блок Управления Памятью) подвергся существенным конструктивным изменениям и работает совсем не так, как в предыдущем поколении x86-процессоров (точнее, теперь он никак не работает - прим. КК). Мало того, что он превратился в сплошное скопище "тараканов", Intel сделала решительный шаг вперед, определив по ее выражению "новые методы обработки страничных таблиц" (см. стр. 58 - тут, правда, не совсем понятно, что именно смотреть и где; поиск по фразе в Google выдает ссылки только на сообщение Theo de Raadt'а, и ни на один документ от самой Intel - прим. КК);

  • Некоторые ошибки имеют прямое отношение к технике "переполнения буферов" (самая популярная разновидность атак на сегодняшний день - прим. КК), где защита от записи или атрибут "неисполняемый" нагло игнорируются процессором. Другие ошибки связаны с некогерентностью (т.е. несогласованностью) инструкций сопроцессора или же производят разрушения памяти - вне области, отведенной в пользование прикладного процессора, посредством "обычных" (т.е. не привилегированных) машинных инструкций;

  • Все это кажется совершенно невероятным, но это факт!

Вот краткий сводный конспект ошибок Core2Duo для нетехнических людей http://www.geek.com/images/geeknews/2006Jan/core_duo_errata__2006_01_21__full.gif (тут Theo de Raadt слегка противоречит сам себе, поскольку приводит конспект совсем другой errara, с другими ошибками и другой нумерацией, поэтому, перечисленные ниже номера ошибок не имеют к нему никакого отношения - прим. КК).

Примечание: некоторые ошибки типа AI65, AI79, AI43, AI39, AI90, AI99 пугают нас так, что душа, минуя пятки, спускается прямо в преисподнюю. Эти "штучки" не могут быть исправлены программным путем, т.е. посредством модификации исходного кода операционной системы и/или приложений и некоторые из них затрагивают все операционные системы, выпущенные до середины 2008 года, поскольку MMU любых Intel/AMD и совместимых с ними процессоров всегда управлялся одним и тем же способом. И вот теперь Intel говорит нам, что TLB-буфера, входящие в состав MMU, должны "сбрасываться" на совершенно иной манер. Но даже сделав это, ошибки процессора, перечисленные в errata, не позволят создать стабильно работающую операционную систему.

Как уже говорилось выше, в обозначенном списке скрываются 20-30 ошибок, которые не могут быть преодолены программным путем на уровне операционной системы и эти ошибки создают потенциальную угрозу для атаки на машину. Готов поставить на заклад кучу денег, что по крайней мере 2-3 из них реально способны на это.

Например, AI90 подходит для атаки на некоторые операционные системы (двоичные сборки OpenBSD в конфигурации по умолчанию к ним не относятся). В настоящий момент я бы не рекомендовал приобретать машины, построенные на базе Intel Core 2, до тех пор, пока дефекты проектирования не будут исправлены (что по моим подсчетам займет больше года). Intel должна стать более "прозрачной" (а не зажимать технические детали, рассылая их только разработчикам BIOS'ов и коммерческих операционных систем - прим. КК). Межу тем, мне хотелось бы отметить, что и AMD с каждым днем становиться все менее и менее полезной для Open Source сообщества, поскольку количество ошибок, обнаруженных в ее процессорах, растет не менее стремительно.

Сводный конспект

Рисунок 2. Сводный конспект основных ошибок Core 2 Duo, на который ссылается Theo de Raadt.

Сенсация или реальная угроза?

Представляет интерес разобраться, что же так напугало Theo de Raadt'а и насколько велика вероятность атаки на Core 2 Duo, тем более, что за время, прошедшее с момента публикации, количество обнаруженных ошибок удвоилось. Анализировать ошибки мы будем в порядке, обозначенном Theo de Raadt'ом, с учетом специфики операционных систем семейства NT (Windows 2000, XP, Server 2003/2008, Vista), Linux и линейка BSD - Free, Net и Open, приводя официальную информацию из errata со всеми выкладками и рассуждениями, а местами - сценариями реализации атаки.

AI65: A Thermal Interrupt is Not Generated when the Current Temperature is Invalid (Температурное Прерывание не Генерируется при Выходе Текущей Температуры за Пределы)

Problem: When the DTS (Digital Thermal Sensor) crosses one of its programmed thresholds it generates an interrupt and logs the event (IA32_THERM_STATUS MSR (019Ch) bits [9,7]). Due to this erratum, if the DTS reaches an invalid temperature (as indicated IA32_THERM_STATUS MSR bit[31]) it does not generate an interrupt even if one of the programmed thresholds is crossed and the corresponding log bits become set.

Implication: When the temperature reaches an invalid temperature the CPU does not generate a Thermal interrupt even if a programmed threshold is crossed.

Workaround: None identified.


Проблема: Когда DTS (Digital Thermal Sensor - Цифровой Температурный Сенсор) достигает одного из установленных пороговых значений, процессор генерирует прерывание, протоколируя его в журнале событий (IA32_THERM_STATUS MSR (019Ch) биты [9,7]). Вследствие конструктивного дефекта, при достижении пороговой температуры (заданной через MSR регистр IA32_THERM_STATUS бит [31]), DTS не генерирует прерывания и не устанавливает биты журнала;

Последствия: При выходе температуры кристалла за пороговые границы, процессор не генерирует прерывания;

Решение: Не найдено;

В общем, не такой уж и страшный дефект, хотя... учитывая, что а) 99% машинного времени процессор "спит", практически не нагреваясь; б) при активной работе одного или нескольких блоков процессора, тепловыделение резко возрастет; в) для отвода тепла с крохотной площади приходится применять высокооборотистые вентиляторы, характеризующиеся высоким уровнем шума, с которым очень сложно (и дорого!) бороться. Вот производители и перешли на адаптивную схему охлаждения, автоматически повышающую обороты вентилятора при нагреве кристалла и практически останавливающее лопасти во время процессорного сна.

Некоторые производители используют внешний теомодатчик, но большая часть полагается на показания процессора - так и дешевле и точнее, но если DTS не работает, то возникает прямая угроза перегрева кристалла, особенно если хакер загрузит его на полную мощность, что очень легко сделать Java-скриптом или Flash-роликом. Кратковременный перегрев для ЦП, в общем-то, не опасен, но вот систематический "перекал" ведет к необратимой деградации кристалла. Первым, как правило, гибнет кэш и система начинает выдавать критические ошибки приложений и выбрасывать голубые экраны смерти.

Таким образом, атаковать систему не нужно. Она и сама умрет через какое-то время.

AI79: REP Store Instructions in a Specific Situation may cause the Processor to Hang (Инструкции Записи с Префиксом REP при Определенных Обстоятельствах могут Завесить ЦП)

Problem: During a series of REP (repeat) store instructions a store may try to dispatch to memory prior to the actual completion of the instruction. This behavior depends on the execution order of the instructions, the timing of a speculative jump and the timing of an uncacheable memory store. All types of REP store instructions are affected by this erratum.

Implication: When this erratum occurs, the processor may live lock and/or result in a system hang.

Workaround: It is possible for BIOS to contain a workaround for this erratum.


Проблема: Во время выполнения серии инструкций записи, предваренных префиксом REP (REP STOSx/MOVSx), содержимое промежуточного буфера может выгружаться в память до того, как туда поступят актуальные данные. Поведение процессора зависит от порядка выполнения инструкций, временных характеристик "спекулятивных" переходов и временных характеристик некэшируемого буфера записи. Этот дефект распространяется на все операции записи с префиксом REP.

Последствия: Проявления дефекта варьируются от зависания процессора или операционной системы;

Решение: Дефект можно обойти на уровне BIOS;

Да... тут есть, о чем задуматься. Инструкции REP STOSx/MOVSx относятся к числу самых популярных. Функции инициализации и копирования памяти в большинстве случаев реализованы именно так и работают они как на прикладном, так и на ядерном уровне. Трудно представить, что произойдет, если вместо записываемых данных в память будет выгружен мусор, случайно оказавшийся в буфере или... умышленно засунутый туда хакером ("Засунутый" - в смысле оставшийся от предыдущей серии операций записи).

К сожалению, Intel не раскрывает технических деталей и нам остается только догадываться, при каких именно условиях возникает преждевременный "выброс" данных в память. То, что дефект устраним на уровне BIOS - это хорошо, но вовсе не факт, что за это не придется расплачиваться производительностью (есть подозрение, что BIOS просто изменяет диапазоны временных характеристик).

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

AI43: Concurrent Multi-processor Writes to Non-dirty Page May Result in Unpredictable Behavior (Параллельные Записи в "Чистые" Страницы Памяти на Многопроцессорных Системах Ведут к Неопределенному поведению)

Problem: When a logical processor writes to a non-dirty page, and another logical processor either writes to the same non-dirty page or explicitly sets the dirty bit in the corresponding page table entry, complex interaction with internal processor activity may cause unpredictable system behavior.

Implication: This erratum may result in unpredictable system behavior and hang.

Workaround: It is possible for BIOS to contain a workaround for this erratum.


Проблема: Когда логический процессор осуществляет запись в "чистую" (т.е. ранее не модифицированную) страницу памяти, а другой логический процессор в это же самое время или осуществляет запись в эту же страницу, или явным образом устанавливает бит модификации в соответствующем поле страничного каталога, "внутриусобные" войны между логическими процессорами, заключенными в один физический кристалл, при определенных обстоятельствах приводят к неопределенному поведению системы.

Последствия: Данный дефект приводит к непредсказуемому поведению системы и возможному зависанию;

Решение: Дефект может быть устранен на уровне BIOS;

Ох, столько мудрости в этих словах "неопределенное поведение". Инженеры их очень любят. Инженеры вообще любят неожиданности, подстерегающие их в непредвиденных местах. Но чего тут гадать. Все предельно ясно. Флаг модификации, являясь разделяемым ресурсом, весьма придирчив к порядку и все операции с ним должны быть упорядочены теми или иными механизмами синхронизации. Даже не столько сам этот бит, а его окружение. Модифицировать отдельные биты процессор не обучен и он оперирует машинными словами (длина которых не обязательно равна двум байтам, в данном контексте - это минимальная порция обмена с памятью, которая на Core 2 Duo по одним данным составляет 16, по другим 32, а по третьим 64 бит). Процессор сначала читает машинное слово целиком в свой внутренний буфер, взводит/сбрасывает один или несколько бит, после чего записывает его обратно. А теперь представим, что процессоров у нас два и они одновременно обращаются к одному и тому же слову. Тогда повторная установка уже установленного бита приведет к его сбросу! Операционная система будет считать, что данная страница не была модифицирована и потому при нехватке памяти не станет выгружать ее в файл подкачки, что приведет к необратимой потере данных!

Как это можно использовать для атаки?! Завесить систему - это ерунда, при желании можно разрушить дисковый кэш, для этого нужно организовать операции записи один и тех же файлов из двух (или более) разных потоков, параллельно с этим "съедая" всю свободную оперативную память. На NTFS самым главным файлом является $MFT, хранящий информацию обо всех остальных файлах тома. Прямое обращение к нему операционная система блокирует, но вот косвенное - создание/удаление/изменение атрибутов одних и тех же файлов из разных потоков - допускает даже с гостевыми правами. А крах дискового тома - это пострашнее зависания. Аналогичным образом обстоит ситуация и с файловыми системами, используемыми в Linux и BSD.

Кстати говоря, автору уже не первый раз приходилось восстанавливать диски, разрушенные именно таким образом. Причем, очень необычным образом. Обычно если внезапно отключается питание или зависает система, то содержимое кэш-буфера теряется целиком, в результате чего том остается в более или менее работоспособном состоянии, но вот когда теряется лишь часть изменений (равная, как ни странно, 4 Кбайтам - т.е. размеру одной страницы), то это дает все основания для заключения, что конструктивный дефект в процессорах проявляется намного чаще, чем этого следовало ожидать.

Грубым решением проблемы является переход в однопроцессорный режим, что осуществляется добавлением ключа /ONECPU в boot.ini). Конечно, производительность при этом падает, но если целостность данных превыше производительности - это не такая уж и безумная мера. А надеяться на производителей BIOS... Где гарантия, что они действительно справятся с ошибкой?!

AI39: Cache Data Access Request from One Core Hitting a Modified Line in the L1 Data Cache of the Other Core May Cause Unpredictable System Behavior (Запрос Кэш-линейки L1-кэша из Одного Ядра Разрушает Модифицированную кэш-линейку Другого Ядра, Приводя к Непредсказуемому Поведению Системы)

Problem: When request for data from Core 1 results in a L1 cache miss, the request is sent to the L2 cache. If this request hits a modified line in the L1 data cache of Core 2, certain internal conditions may cause incorrect data to be returned to the Core 1.

Implication: This erratum may cause unpredictable system behavior.

Workaround: It is possible for the BIOS to contain a workaround for this erratum.


Проблема: Когда запрос данных из Ядра 1 приводит к "промаху" L1-кэша, запрос перенаправляется к L2-кэшу. Если же данная кэш-линейка уже находится в L1-кэше Ядра 2 и была им модифицирована, при определенных обстоятельствах Ядру 1 возвращается неверный результат.

Последствия: Непредсказуемое поведение системы;

Решение: BIOS может справиться с этой проблемой;

Как известно, многоядерные процессоры имеют разделяемый (один на всех) L2-кэш и "индивидуальные" L1-кэши, фактически являющиеся частью ядра. В грубом приближении мы имеем обыкновенную многопроцессорную систему с разделяемой внешней памятью и внутрипроцессорной кэш-памятью. Для поддержания памяти в согласованном состоянии используются специальные когерентные протоколы, разработанные десятки лет тому назад. Казалось бы, в чем проблема?!

А в том, что создатели Core 2 Duo или забыли о когерентности (ну, это уж вряд ли), либо, что более вероятно, реализовали ее неправильно. Насколько часто разные ядра, работают с одними и теми же порциями данных? Очень часто! Ведь при переключении контекстов, потоки, стартовавшие на одном ядре, рано или поздно оказываются на другом! Последние версии операционных систем линейки NT, Linux и BSD наконец-то научились отличать ядра от физических процессоров (в многопроцессорных системах) и потому стараются по возможности избегать переброски потоков с одного ядро на другое, поскольку при этом придется заново заполнять L1-кэш. Есть даже специальные API-функции для закрепления потоков за определенным процессором (ядром), но на практике они не используются и программисты предпочитают доверять системному планировщику, алгоритм которого оптимизируется разработчиками операционной системы с учетом "характера" процессоров, имеющихся на рынке. Но в распоряжении планировщика - сотни потоков и обычно только два (редко - четыре) ядра. Так что, избежать "передислокаций" потоков невозможно, точнее, возможно, но уж слишком неэффективно.

Как можно использовать данный дефект для атаки? Самое простое - ничего не делать с системой. Она и сама упадет. Разрушение дисковых данных достаточно маловероятно, хотя и не исключено на 100%, а вот критические сбои приложений и голубые экраны смерти - вполне ожидаемое явление. Действительно, если программа что-то записала в память (на самом деле в кэш, но это уже не важно), а при последующем чтении не обнаружила никаких изменений, тут может произойти все что угодно.

Автору удалось реализовать разрушение кучи (динамической памяти) путем циклического выделения/освобождения крошечных блоков в Java-скрипте, следствием чего явился крах браузера. Чисто теоретически возможно разрушить кучу так, чтобы передать управление на shell-код, но для этого необходимо учитывать множество специфичных деталей, неизвестных удаленному атакующему, хотя в принципе, достаточно предсказуемых.

Шторм запросов к любому драйверу (например, шторм IP-пакетов) также потенциально способен вызывать крах системы, но учитывая, что шторма зачастую вызывают BSOD'ы даже на "правильных" процессорах (из-за ошибок синхронизации, допущенных разработчиками драйверов), очень трудно определить - с каким дефектом мы имеем дело: с программным или аппаратным. Тем не менее, хакерский потенциал у атак данного типа весьма весомый, что главным образом, обуславливается простотой их реализации.

Самое непонятное в этой истории - какое отношение имеет BIOS к "разборкам" внутри процессора?! Единственное разумное предположение - BIOS просто заливает обновленный микрокод, предоставленный Intel. По-другому справиться с проблемой навряд ли получится.

AI90: Page Access Bit May be Set Prior to Signaling a Code Segment Limit Fault (Атрибут Доступа к Странице Памяти Может Быть Установлен до Генерации Исключения)

Problem: If code segment limit is set close to the end of a code page, then due to this erratum the memory page Access bit (A bit) may be set for the subsequent page prior to general protection fault on code segment limit;

Implication: When this erratum occurs, a non-accessed page which is present in memory and follows a page that contains the code segment limit may be tagged as accessed;

Workaround: Erratum can be avoided by placing a guard page (non-present or nonexecutable page) as the last page of the segment or after the page that includes the code segment limit;


Проблема: Если лимит сегмента кода установлен близко к концу кодовой страницы, то при определенных обстоятельствах следующей за ней странице памяти процессор может назначить атрибут доступа до генерации исключения общего нарушения защиты или выхода за пределы лимитов кодового сегмента;

Последствия: При проявлении данного дефекта, страница памяти, следующая за последней страницей кодового сегмента, получает атрибут доступа, даже если изначально она была недоступна для чтения;

Решение: Пагубное влияние данного дефекта может быть нейтрализовано путем установки сторожевой страницы (отсутствующей в памяти или неисполняемой), отделяющей кодовый сегмент от последующего за ним сегмента;

Вот мы и добрались до дефекта, особо отмеченного Theo de Raadt'ом в качестве подходящего кандидата для атаки на операционные системы (за исключением OpenBSD в конфигурации по умолчанию). Что же это за операционные системы такие?! Ну-ка, ну-ка! В NT лимиты сегментов кода, данных и стека "распахнуты" на все адресное пространство, нижнюю половину которого занимает прикладной код, верхнюю - операционная система. Так что, за пределами кодового сегмента вообще ничего нет. Да и чтобы добраться до его конца, необходимо сначала как-то попасть на уровень ядра, где можно делать что угодно и без всяких дефектов процессора (правда, в Core2Duo есть еще один интересный дефект, обнаруженный автором и не описанный в последней errata - при выполнении кусочка инструкции, находящегося в самом конце кодового сегмента, декодер, определяя длину инструкции по первым байтам, пытается считать ее продолжение, которого нет, в результате чего происходит "заворот" в начало сегмента, первой странице которого также присваивается атрибут доступа, после чего генерируется исключение, которое хакеру необходимо отловить, чтобы система не свалилась в BSOD, но что это даст?! Младшие страницы адресного пространства специально сделаны недоступными в NT для отлова обращения по нулевым указателям, свидетельствующих о том, что программа обращается к невыделенной области памяти, и Windows передает ей исключение, которое та может обработать тем или иным образом, но чаще всего обработчик конструктивно не предусмотрен и тогда система завершает работу приложения в аварийном режиме. Установка атрибута доступа на первую страницу приведет к подавлению исключения и программа упадает не в момент обращения к нулевому указателю, а чуть позже - когда попытается обработать считанный оттуда мусор. Не слишком-то большое достижение, к тому же легко реализуемое на прикладном уровне без обращения к дефектам процессора).

Правда, 16-разрядные приложения имеют свои собственные 16-разрядные лимиты и чисто теоретически благодаря ошибке в процессоре атакующий может получить доступ к данным, которые ему читать не положено. В смысле, по атрибутам страниц не положено, а так... если атакующий может запускать приложения, то отформатировать диск или удалить все файлы быстрее и надежнее. А вот из 32-разрядного приложения вызвать 16-разрядное - ну, не то, чтобы невозможно, но все-таки достаточно сложно (имеется в виду вызов из shell-кода, исполняющегося в 32-разрядном приложении). Другими словами, на Windows этот дефект не оказывает ровным счетом никакого воздействия.

А что насчет BSD и Linux? Штатные ядра также исповедуют плоскую модель. Кодовый сегмент находится в самом конце адресного пространства и ничего интересного за ним нет. Некоторые защитные пакеты, разработанные еще в ту далекую эпоху, когда процессоры поддерживали атрибут "исполняемый" только на уровне селекторов, а необходимость защиты стека, кучи и данных от исполнения заброшенного хакером туда shell-кода уже назрела - произошло вот что: нестандартные ядерные расширения урезали лимиты стека и сегмента данных (расположенных в начале) и отобрали у них атрибут "исполняемый". А за ними расположили сегмент кода. Вот если бы они поступили в обратном порядке (сначала код, потом стек и данные), то у хакеров была бы потенциальная возможность доступа к недоступным данным, вот только... стек и куча доступы и так... без всяких дефектов процессора.

Конечно, можно предположить, что где-то есть операционная система в которой сначала идут пользовательские сегменты кода и данных, а потом расположен сегмент операционной системы, хранящий данные, защищенные от чтения, поскольку, будучи прочитанными, они позволят повысить уровень своих привилегий, например, но... если такая операционная система и есть, то это не Linux, не Windows, не BSD и не QNX... а какая-то студенческая поделка. Вопрос: какой интерес ее атаковать?! Короче, на этот дефект процессора можно вообще не обращать внимания. Ну разве что при разработке новых операционных систем, радикально отличающихся от уже существующих.

Плоская модель памяти

Рисунок 3. Windows использует "плоскую" модель памяти с "распахнутыми" границами сегментов.

AI99: Updating Code Page Directory Attributes without TLB Invalidation May Result in Improper Handling of Code #PF (Обновление Атрибутов Директории Кодовых Страниц без "Инвалидации" TLB Может Привести к Некорректной Обработке Исключения #PF)

Problem: Code #PF (Page Fault exception) is normally handled in lower priority order relative to both code #DB (Debug Exception) and code Segment Limit Violation #GP (General Protection Fault). Due to this erratum, code #PF maybe handled incorrectly, if all of the following conditions are met:

  • A PDE (Page Directory Entry) is modified without invalidating the corresponding TLB (Translation Look-aside Buffer) entry

  • Code execution transitions to a different code page such that both
    – The target linear address corresponds to the modified PDE
    – The PTE (Page Table Entry) for the target linear address has an A (Accessed) bit that is clear

  • One of the following simultaneous exception conditions is present following the code transition
    – Code #DB and code #PF
    – Code Segment Limit Violation #GP and code #PF

Implication: Software may observe either incorrect processing of code #PF before code Segment Limit Violation #GP or processing of code #PF in lieu of code #DB.

Workaround: None identified.


Проблема: Исключение #PF (Page Fault - Страничный Отказ) обычно обрабатывается в с другими исключениями, перечисленными в порядке уменьшения приоритета: #DB (Debug Exception - Отладочное Исключение), Segment Limit Violation (Исключение Выхода за Пределы Сегмента), #GP (General Protection Fault - Общее Нарушение Защиты). Вследствие дефекта проектирования, #PF исключение обрабатывается некорректно при наступлении одного из следующих событий:

  • PDE (Page Directory Entry - Запись Каталога Страниц) модифицируется без "инвалидации" (to invalidate - делать недействительным) соответствующей записи TLB (Translation Look-aside Buffer - Буфер Обратной Трансляции);

  • Транзакция исполнения машинной инструкции находится на стыке двух страниц, причем выполняется одно из следующих условий:
    – Линейный целевой адрес соответствует модифицированной PDE;
    – PTE (Page Table Entry - Запись Таблицы Страниц) для целевого линейного адреса имеет сброшенный бит доступа;

  • Транзакции предшествует одно из двух следующих исключений:
    – #DB и #PF;
    – #GP и #PF;

Последствия: Программное обеспечение должно либо отслеживать некорректное #PF исключение, предшествующее #GP исключению, так же как #PF исключение - перед #DB.

Решение: Не найдено.

Наконец-то мы добрались до дефекта, который Theo de Raadt характеризует как "Ну вот - теперь нам Intel говорит, что TLB нужно обрабатывать совершенно иным путем, не похожим на старый". Ох, и врет! Intel ничего такого не говорит, признавая за собой дефект и расписываясь в бессилии найти приемлемое обходное решение. Дефект, конечно, серьезный и остается только удивляться, как существующие операционные системы ухитряются работать на Core 2 Duo, не падая каждые шесть-семь минут (хотя, возможно, они и падают, но не так часто).

Выход только один - ждать новой ревизии процессора с исправленной ошибкой обработки TLB (после чего все будет "как при бабушке"), либо же модифицировать (причем весьма значительно) ядро операционной системы, чтобы оно стабильно работало и на дефектных ЦП. Microsoft выпуском такой заплатки не озаботилась, хотя похоже, что при ее манерах обращения с TLB, обозначенный дефект не особо и мешает. А вот Theo de Raadt доработал ядро OpenBSD, застраховав систему от возможных "сюрпризов" со стороны процессора. Естественно, ядро исправить (да еще таким необычным способом) - это не просто две строчки кода местами поменять, так что его можно понять. Кому хочется отдуваться за чужие ошибки?! А между тем ошибок в процессорах много...

Ошибка деления в Pentium

Самая громкая ошибка в Pentium была обнаружена в 1995 году и продемонстрирована на следующем примере: x - (x / y) * y, результат которого (если только y != 0) должен быть равен нулю, однако при определенных значениях x и y (x = 4195835, y = 3145727) процессор выдавал... 256! Потрясающая точность, однако!

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

С тех пор, сообщений об ошибках в ЦП как будто бы не отмечалось. И потому заявление Theo de Raadt'а, что Core2Duo содержит огромное количество ошибок, многие из которых допускают удаленный захват управления, стало очередной сенсацией года.

Заключение

Разработчики популярных операционных систем за последние годы существенно усилили их защиту и золотое время атак на переполняющиеся буфера закончилось. Основные лазейки уже закрыты и поиск реально "работающих" дыр требует все больших и больших усилий. Но усилило ли это общую безопасность?! Едва ли. Это только раззадорило хакеров, спровоцировав активный поиск принципиально новых методов атак.

Нетронутую целину дефектов железа хакеры только-только начали осваивать. До сих пор не представлено ни одного proof-of-concept exploit'а и не зафиксировано случаев вторжения, основанных на ошибках ЦП, однако... в атмосфере определенно что-то происходит. Что-то такое... не предвещающее ничего хорошего.

Впрочем, не будем изображать из себя пророков, предоставив событиям развиваться своим чередом, а сами тем временем приложим максимум усилий по обеспечению собственной безопасности, скачивая свежие прошивки BIOS и выбирая продукцию тех производителей, которым можно верить, и которые действительно борются с дефектами процессоров, отмечая свои достижения в сопроводительных файлах. Что же касается операционных систем, то в линейке BSD - OpenBSD несомненный лидер, Linux'ы все на одно лицо и особой разницы между ними нет (у одних - одни недостатки, у других - другие). Microsoft, похоже, бороться в ошибками процессоров вообще не собирается, а это большой минус, особенно на рынке серверов, где OpenBSD чувствует себя вполне уверенно. А вот перевод рабочих станций на OpenBSD, скорее всего, окажется дороже, чем убытки от возможных атак. Впрочем, свой выбор каждый делает сам.

https://nebka.ru/?uid=1&post=20963