Ходил сегодня целый день по магазинам, обновлял домашний компьютер. Прикупил процессор Intel Pentium G4600. Пришёл домой включил телевизор и стал смотреть про то что
во всех процессорах Intel за последние 10 лет есть баг, позволяющий получить доступ к ядру ОС. Ну что ж, подумал я, надеюсь, моё приобритение как минимум лет 5 мне послужит.
Подробностей пока нет, патчи которые выпущены изолируют (что там было до этого? обычная защита доступа к чужой странице/области памяти?) ту часть ядра памяти которая доступна в непривелегированном режиме (наверное) от пользовательского процесса. Все сокрушаются что это
потеря в производительности. В общем, подробностей мало, катастрофически мало, но наверняка они скоро появятся с разбором от настоящих специалистов.
С другой стороны многие способы ускорения это хаки, иногда грязные, т.е. система где виртуальное адресное пространство приложения работает в виртуальном адресном пространстве ОС, которая в свою очередь работает в виртуальном адресном пространстве гипервизора, который работает в виртуальном адресном пространстве процессора и всё это сверху на каждом уровне замазано виртуальными страницами не может работать быстро, хотя я может и ошибаюсь. Сети к этому же приближаются, оверлейные туннели в туннелях сверху MPLS на q-in-q, в общем если найдут баг в основе...
Второй момент - баг наверное не такой легковоспроизводимый если на него 10 лет не могли наткнуться. Как минимум даже в данной ситуации кто-то должен выполнить код в системе чтобы его воспроизвести, гигиена безопасности поможет. Я на это надеюсь, потому что процессоры Intel просто везде, включая сетевое оборудование тоже, и встраиваемые устройства и пресловутый IoT, так что это в самом деле не очень весело.
А ещё процессоры очень сложные штуки, от физики до программирования - просто программирование там выливается в набор триггеров и логических элементов завязанных с обычными микрокодами. И то что багу 10 лет немного приоткрывает нам тот факт, что проектирование процессоров не многим отличается от проектирование программ например. Набор готовых библиотек собирается вместе внедряется новый функционал не много, и получается новая модель. Вот только рефакторинг дорого обходится, очень. Отладка то же дорого, а вот количество ошибок, наверняка, не меньше и то что мы о них узнаём достаточно редко - нам просто везёт.