Обсуждение:Spectre (уязвимость)

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Speculative Store Bypass (v4)[править код]

Инженеры Microsoft и Google совместными усилиями обнаружили новую уязвимость в процессорах Intel, AMD, ARM похожую на Meltdown и Spectre. Угрозу назвали Speculative Store Bypass (v4) (CVE-2018-3639). Аналогично Spectre, эксплойт также использует спекулятивное выполнение команд, которое предоставляют современные CPU [1].--Sergius EU (обс.) 14:49, 23 мая 2018 (UTC)[ответить]

  1. Найдена новая уязвимость в процессорах — статья на geektimes

Я не понимаю логики %([править код]

Таблицы защиты у процессора «всегда под рукой», в оперативку за ними приходится лезть в <1% случаев. Иначе бы защищённый режим больше тормозил, чем работал.

А если они под рукой, то почему нельзя просто это &&()&^&*^%^&*% спекулятивное вычисление вести ровно до того момента, пока оно не затрагивает чужие области памяти? В смысле, совсем. Прямо или косвенно.

Если какая-то спекулятивная ветка вовлекает что-то, что данный процесс не может «законно» получить — очевидно, мы предсказали ветвление неправильно. Т. е. проверять защиту не только на стадии фактического исполнения, но и на стадии гипотетического исполнения. Таблица, которая у нас лежит в >99% случаев в L1, спокойно может быть доступна каждой из «предсказывалок», точнее, её можно развести на все их. А в <1% случаев один хрен надо будет её сначала вытягивать в L1 — без неё мы не сможем перейти от спекуляций к факту, т. е. без неё вообще мы не можем выполнять команды доступа к памяти — их же все и каждую по ним проверяют. Только кто-то втягивает в вычисление то, чего знать не может — его ветка абортится. «Если всё равно он это сделать не сможет — очевидно, имелась в виду другая ветвь». Простая, деревянная логика. Если, конечно, по факту прога всё равно попытается — нууу, тут всё, нарушение защиты, краш и т. д.

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

Да, микрокодом такое не исправить, но Гугл в лице своих исследователей ведь сейчас доказывает, что ошибка вообще и в принципе неустранимая, даже с переделкой архитектуры? Какие-то общие слова про «любая дополнительная защита сама по себе выдаёт информацию тем фактом, что она срабатывает». Скажите на милость! То, что я описываю — срабатывает по самому факту вовлечения в вычисления данных вне нашей области памяти. И что из этого можно узнать? Ну, попробуем мы прочитать массив[не_наш_массив[индекс]]. Если бы мы сначала взяли не_наш_массив[индекс], а при попытке обратиться к массив[не_наш_массив[индекс]] защита бы то срабатывала, то нет (в зависимости от значения не_наш_массив[индекс]), то это бы о чём-то говорило. Но ведь она обрубит ветку ещё в тот момент, когда спекуляции потребуется величина не_наш_массив[индекс]! Всё, никаких выборок из памяти, никакой перекладки в кэш, причём независимо от значений «не наших» величин.

Да, при вызове системных функций, скорее всего, спекуляция на стадии перехода просто не будет работать. Но она там вряд ли и так работает эффективно.

Да, это именно обсуждение статьи, а не предмета статьи. Потому что такое большое непонимание — это прямой крик души, какой именно контент надо отыскать в АИ и натаскать в статью. В этом месте в картине одна огромная дыра, и не только эта статья, но и вообще какие-либо известные мне публикации не дают ответа — ну с какого перепугу-то уязвимость принципиально неустранимая? 81.195.21.107 23:59, 23 февраля 2019 (UTC)[ответить]

Исправить, наверняка, можно. Но для этого придется перевыпустить все процессорные чипы. А старые - отозвать. Ну, примерно как с автомобилем: если в нем обнаружилась неисправность - именно "дефолтная" неисправность, т.е. не отклонение от принципа, а ошибка в самом принципе - тогда отзывают назад всю партию. Потому что все автомобили в партии сделаны по одному образцу, а значит, обладают тем же недостатком. Короче, это не теоретическая, а практическая проблема. Но поскольку производителям делать этого очень не хочется, они сейчас будут делать вид, что проблема именно в теории. И решать ее своими "костылями" на программном уровне (т.е. там, где ее как раз нельзя решить). Зато хорошая иллюстрация того, на каких соплях держится современный мир, что лежит в основе всего - ошибка!Clothclub (обс.) 11:12, 22 сентября 2021 (UTC)[ответить]