Группа исследователей из Амстердамского свободного университета и компании IBM разработала новый вариант атаки на механизм спекулятивного выполнения в современных процессорах, получивший кодовое имя GhostRace (CVE-2024-2193). Проблема проявляется в процессорах, производимых компаниями Intel, AMD, ARM и IBM. Для демонстрации принципов проведения атаки опубликован прототип эксплоита, позволяющий извлекать данные из памяти ядра Linux с производительностью 12 Кб в секунду при уровне надёжности, типичном для атак класса Spectre. При проведении атак на системы виртуализации, атакующий из гостевой системы может определить содержимое памяти хост-окружения или других гостевых систем...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=60781
Эльбрус с Байкал безопасны и потому дорого стоят.
> Эльбрус с Байкал безопасны и потому дорого стоят.Фирма кукиш - нигде не купишь! А если купишь - то не продашь!
Покусанный маркетологом?
Неуловимый Джо.
Спекулятивное выполнение есть? Есть. Значит, потенциально не безопасен.
Байкал и вовсе обычный ARM.
Докажи. Тут вот черным по белому написано,а ваши домыслы немного стоят.
Не, подожду, пока ты докажешь, что они безопасны.
> Эльбрус с Байкал безопасны и потому дорого стоят.Нет, не потому.
>в процессорах производимых компаниями Intel, AMD, ARMИнтересные данные, продажи за 4-й квартал 2023 года:
https://wccftech.com/intel-global-desktop-notebook-pc-cpu-sh.../
Продажи платформ ПК и не думают падать нигде кроме США. А как же пророчества что рынок ПК вот-вот вымрет в пользу смартфонов и планшетов? Неужто маркетологи опять нас обманули, надули?
Скорее кризис идей
Телефон сейчас вполне тянет задачи офисного ноута, а вот ПО и где докстанции? Хороший вопрос
В первую очередь, для цели замещения,
смарт должен базироваться на "традиционных"
пк-шных ОС
> Скорее кризис идей
> Телефон сейчас вполне тянет задачи офисного ноута, а вот ПО и где
> докстанции? Хороший вопросНу попробуй CAD или активное ворочание графики или програмизм с средствами ввода как на смарте или планшете. И как тебе эффективность? Это - инструменты для потребления контента. А для созидания все утыкается в убогие средства ввода. Емкостной точ как правило дубовый и очень неточный, если больше трех контролов размером с кулак - пользователь взвоет. Клавиатуры как правило нет, только наэкранка, на которой только с нокией с T9 соревноваться можно, и то только после заточки пальцев точилкой. И вот чего такого "офисного" или продвинутого на этом вообще делать можно? Не, мувики в хипстаграм постить с своей суперценной рожей - это не оно. Ценность этого всего - около ноля.
> Клавиатуры как правило нет, только наэкранка, на которой только с нокией с T9 соревноваться можно, и то только после заточки пальцев точилкой.Ну, просто текст свайпом я набираю быстрее, чем на физической клавиатуре, но это только для чятиков годится, потому что как специальные символы — всё, эффективность падает на два порядка.
спешу напомнить, царь-батенька николай 2 отрекся от престолав смысле, уже последние лет 15 можно к любому планшету прицепить клавиатуру по bt или проводу на крайняк
Кому дался ваш cad
Cad и подобные это 1% от ПК
Потом частично это решается облаками, я имею ввиду весь класс такие Аля кадовских проблем
В 90% людям поиграть, да в нет полазить с почтой и онлайн офисом
> при уровне надёжности, типичном для атак класса Spectre.И какой он, этот "уровень надёжности"? У меня такое впечатление, что все эти уязвимости не применимы в реальных сценариях.
Наверное, имеется в виду 99.99999999999999999999% точность извлекаемых данных.
у тебя неправильное впечатление, уже был продемонстирован эксплойт для spectre/meltdown, написанный на JS в браузере. Осталось только тебя заманить на такой сайт и выполнить тот JS
Ну хорошо, допустим, у меня старая версия браузера, которая об этих ваших мельдониях не знает, и даже почему-то не стоит noscript. Но дальше-то что? Уведут пароли от опеннета и порнхаба? Ужас-ужас, да.Все эти лабораторные "уязвимости" от грантопилов, позорящих звание учёного, уже порядком достали.
Нет, они просто читают всю память. Если у тебя там где-то закэшированы данные кредиток/кошельков, они будут прочитаны. Если ты пользовался какими-нибудь госуслугами, у тебя уведут квартиру например, будешь жить в коробке под мостом. В старых браузерах такие атаки работают особенно быстро и эффективно.
в любых браузерах нестоит хранить пароли
> в любых браузерах нестоит хранить паролиОни не память браузера читают. Кстати, в браузере пароли или на диске или в интернете, а не в памяти. Ты мог месяц назад где-то залогиниться, и эти данные остались висеть в памяти. Или более реалистично данные gpg/ssh-agent или сессию криптотокена выцепят простым безобидным скриптом в браузере.
》 госуслугами, у тебя уведут квартируЭто как? Есть линк на почитать?
> Ну хорошо, допустим, у меня старая версия браузера, которая об этих ваших мельдониях не знаетВот именно что в старых браузерах оно как раз и работает, где не был реализован workaround прям в браузере.
NoScript наверно может спасти
Между прочим, в том же ФФ в последнее время стали демонтировать эти самые "воркэроунды" вокруг мельдониев и спектров. Объясняют это 1) отсутствием доказанных случаев использования атаки через вэб и браузеры 2) "улучшением процессоров" (а ты купи новый проц и не парься) 3) борьбой с тормозами.В Хромиуме - тоже самое. Так что вопрос "безопасен и старый браузер" теперь получает новую грань - насколько он старый?
приватные вкладки и контейнеры не спасают?
> Ну хорошо, допустим, у меня старая версия браузера, которая об этих ваших
> мельдониях не знает, и даже почему-то не стоит noscript. Но дальше-то
> что? Уведут пароли от опеннета и порнхаба? Ужас-ужас, да.А также какие-нибудь ключи шифрования, вплоть до какого-нибудь шифрованого раздела, с ключами где-то в недрах ядра. Спектрам то пофиг - фича в том и состоит что все нормальные проверки пролетают. Пакость и читает все что хочет.
Если утрировать - вы лабораторный мыш, тыкают иголками и изучают реакцию как хотят.
> Все эти лабораторные "уязвимости" от грантопилов, позорящих звание учёного, уже порядком
> достали.Большинство лабораторных макетов легко переводятся в практическую плоскость. Про RC4 тоже грили что мол небольшой bias - фигня. Благодаря этой фигне теперь WEP крякается за пару минут, везде.
Поэтому в современных версиях Wi-fi WEP уже нет
Допустим, уязвимость позволяет получить содержимое ОЗУ. Вопрос: как полученные данные интерпретировать атакующему? В самом деле, полученные данные с точки зрения атакующего выглядят как набор байтов и ничего больше.
Файл пароли.docx на Вашем рабочем столе тоже выглядит как набор нулей и единиц.
> Допустим, уязвимость позволяет получить содержимое ОЗУ. Вопрос: как полученные данные
> интерпретировать атакующему?Элементарно ватсон. Хоть весь дамп вашей оперативы последовательно юзать для попытки расшифровки "вот этого вот" если алгоритм и параметры ключа известны (а они известны).
Можно даже весь дамп рамы в эн гигз, сдвигаясь на 1 байт и пробуя заново, опробовать как кандидат на ключи расшифровки - что-нибудь да подойдет, куда ж оно денется?! Вариантом не очень много - переберутся за реалистичное время. Сущая фигня VS настоящий брутфорс длинного пароля например.
Единственное ограничение - надо как-то уметь отличать успешную расшифровку от неуспешной. Но в ряде случаев это вполне возможно.
осталось за малым
получить этот дамп оперативы
> способных привести к обращению к уже освобождённым областям памятиUse-After-Free прямо в вашем процессоре. Нойс!
Надо было делать процессор на Расте
> разработчики Xen подготовили измененияГенитально!!!
/* Free an allocation, and zero the pointer to it. */
-#define XFREE(p) do { \
- xfree(p); \
- (p) = NULL; \
+#define XFREE(p) do { \
+ void *_ptr_ = (p); \
+ (p) = NULL; \
+ xfree(_ptr_); \
} while ( false )
Разве это не двойное освобождение? Если что, то не программист.
Нет, просто скопировали адрес указателя в другой указатель и его освободили, а первый занулили
Предположил, что можно освободить после (p) = NULL, когда указатель уже ни на что не указывает? Что освобождается непонятно что. Опять же, не программист - просто стало интересно, разберусь в этом или нет.
Согласно стандарту языка C - free(NULL) ничего не делает. Поэтому если макрос выше вызвали так:void *p = malloc(...);
XFREE(&p);то после его завершения p == NULL, а если так XFREE(p);, то `p` будет висячий указатель
Пардон, это ж не функция, а inline макрос, не будет там висячего указателя
>/* Free an allocation, and zero the pointer to it. */
> -#define XFREE(p) do { \
> - xfree(p); \
> - (p) = NULL; \
> +#define XFREE(p) do { \
> + void *_ptr_ = (p); \
> + (p) = NULL; \
> + xfree(_ptr_); \
> } while ( false )Кошка пробежалась по клавиатуре?
>Intel, AMD, ARM и IBMОпять унизили эмуляторов pdp-11.
Ну почему же унизили? Эмуляторы выполняются всё на тех же Intel, AMD, ARM и IBM, всё с тем же спекулятивом.
Тот неловкий момент, когда уже не хочешь 6.2ГГц*42ядра, а хочешь чтобы в ноуте стоял скромный шестиядерник на 4ГГц по технологии 3нм с кэшем чуть больше старого, ни за какими спекуляциями не спешащий, просто чтобы работал стабильно и яйки в угли не сжигал...
Производительность - это характеристика отнюдь не самой последней важности. Особенно в рамках датацентров.
Не припомню ни один датацентр, который бы поместился у меня на коленях, да и вообще на рабочем месте. Это у вас в селе такие? Весь интернет скачали уже дискокачалкой?
Ваши колени и рабочие места интересует производителей не очень сильно, основная прибыль у них именно от корпоратов. Поэтому хотелки корпоратов будут всегда на первом месте.
Корпораты как раз и оплачивают эти самые рабочие места (и, внезапно, для простых людей это всё чаще всякие миниПК и чуть ли не одноплатники за монитором, а то и прямо в мониторе), а так же системы охлаждения для "дофига серверных". И, совершенно внезапно, им там печи выходят неадекватно дороже
> для простых людей это всё чаще всякие миниПК и чуть ли не одноплатники за монитором, а то и прямо в монитореДля _людей_ там как раз самые обычные Деллы и Маки. То, что ты описал — это POSы, терминалы, и прочий животный мир.
Лучше бы они взяли старый хеоn 26XX выкинули весь 32 битный мусор, убрали двухпоточность, добавили кэша и сделали на новом тех. процессе. Получили бы нормальный честный 16 ядерный процессор для рабочих станций и продавали бы его вагонами.
Пробовал отключать HT на 2696v3 - ничем хорошим это не закончилось. Даже выросли задержки в perf sched.
Ну так вы на готов решении пробовали, а речь шла о кастомизации проверенного решения.
А им, что делать ?
https://opennet.ru/60108-top500
Подбирать сковородки для иичек в соответствии с их желаниями. Нравится жарить - пусть жарят. Многим другим 6 нормальных ядер за глаза.
> ни за какими спекуляциями не спешащийХотите Pentium 1?
A53, но со 100+ ядрами по 2 нм.
Да что ж ты делать-тьо будешь. https://arxiv.org/pdf/2007.06865.pdf
Как так, везде раньше говорилось, что A53 - in order?
Я бы предпочёл 4096 упрощённых ядер производительности на уровне первопня, чтобы по большую часть времени каждому потоку, включая ядру ОС, было выделено по своему ядру без каких-либо переключений контекста (io_uring). А если нужна параллельная обработка, то программер сам распараллелит.
Про принципиально нераспараллеливаемые задачи (а их полно) и про закон Амдала вы, конечон, не слышали. Ну и как программеры параллелят, мы по игрушкам видим.
Не надо создавать себе принципиально нераспралаллеливаемых задач, и Амдал не будет проблемой.Насчёт игрушек, те что я видел изнутри реально болт кладут на архитектуру. Они используют ту архитектуру, которой их научил туториал, с которого они вошли в игровое программирование, и даже не задумываются о чём-то ином. Некоторые не читали туториалов, и поэтому у них ещё хуже. Конечно же, я не видел кода всех игрух, и может моя выборка нерепрезентативна, но...
В игре очень много чего параллелизуется, достаточно сделать описание сцены read-only, и обсчитывая изменения за временной тик создавать новое описание сцены взамен старого. При этом можно заодно избавиться от сложной-заморочной кучи, и обойтись двумя стеками, память в которых освобождается ресетом указателя в максимальный адрес стека, а выделяется вычитанием размера структуры от этого указателя.
Люди вламываются в закон Амдала постоянно только потому, что (почти) все библиотеки и языки десятилетями писались исходя из идеи выжать максимум из одного устройства исполняющего код последовательно. И куда не глянь, алгоритмы сжатия, криптография, компиляторы, все они заточены под последовательную работу, а возможность распараллеливания им прибили сбоку гвоздями задним числом, самоотверженно борясь с Амдалом. Искусственно создали себе проблему, героически её преодолели. Это результат болезни, под названием машина тьюринга головного мозга.
Ухты,а пацаны из stellaris и distant world 2 не в курсе как все просто. Может ты к ним наймешься?
> stellaris и distant world 2Что это за маргинальщина? В первый раз слышу.
Нет, не наймусь. Я не знаю, почему игровая индустрия настолько тупо следует устоявшимся практикам, поскольку не работал там, но у меня есть гипотеза.Кармак, когда создавал Quake, многократно переписывал код, перебирая разные архитектуры, пока оно не заработало. Сегодня тоже придётся переписывать многократно, отрабатывая нюансы подхода, но это потребует гораздо больше человекочасов, один Кармак не справится. Сегодня игры гораздо сложнее и тянут в себя депендансы миллионами строк, и _все_ эти миллионы строк надо довести до состояния, когда они могут выполнятся на многих ядрах. Это дорого. А игровая индустрия, насколько я её вижу, вся заточена на "тяп-ляп и в продакшн". По моим данным (может устаревшим 10 лет назад) в игровой индустрии не так уж и много денег: конкуренции много и далеко не каждый проект окупается, поэтому им не до жиру.
И если я нигде серьёзно не ошибся в оценке ситуации, то если я к ним наймусь учить их как надо писать игры, то пока мы будем отрабатывать подход и переписывать депендансы, они разорятся.
Но ты можешь сам попробовать. Идея держать данные read-only -- древняя идея, функциональные языки этим бредят уже полвека, но сегодня, на фоне увеличения количества ядер, эта идея перестала быть исключительно теоретической. Она очень популярна сегодня. И может быть со временем, игровой индустрии придётся следовать ей, потому что дедовские методы работы с многопоточностью, типа мьютексов и семафоров, не работают. Всё что они позволяют сделать -- это многопоточную программу выполнять на многих ядрах последовательно. И если ты сейчас начнёшь творить, то может лет через десять ты станешь одним из первых специалистов по тому, как надо писать многопоточные игры, и игровые студии будут наперебой предлагать тебе золотые горы, лишь бы ты на них поработал.
Ну вот, казалось бы, простейшая задача — эмуляция какого-нибудь 8086. Да хотя бы Z80. Распараллель-ка её на 4096 ядер. Да хотя бы на два распараллель.
Машина тьюринга головного мозга... Эмуляция -- это не конечная задача, которая нужна человеку, это инструмент для запуска программ, которые решают задачи, нужные человеку и которые, так получилось, требуют эмуляции для запуска. И если тебе нужно параллелить, то тебе не эмулятор надо параллелить, а исходную программу.
Это уже давно есть, называется GPGPU
> Это уже давно есть, называется GPGPUЗачем, каждому по пачке Xilinx FPGA и пусть сделают ЦПУ под себя
Это чтобы накладные расходы на переключение и передачу между ними занимали больше ресурсов, чем полезная работа? И всё это вместе успешно ещё и троттлилось, потому что дофига энергосберегающие ядра ещё ничего не успели сделать, но уже вспотели, а ОС так и не научилась нормально раскладывать задачи в соответствии с возможностями ядер
Ещё немного и вы изобретёте ILLIAC IV: https://en.wikipedia.org/wiki/ILLIAC_IV?useskin=vector
> Я бы предпочёл 4096 упрощённых ядер производительности на уровне первопня, чтобы по
> большую часть времени каждому потоку, включая ядру ОС, было выделено по
> своему ядру без каких-либо переключений контекста (io_uring). А если нужна параллельная
> обработка, то программер сам распараллелит.И на первой же задаче которая не параллелится (а таких есть!) ты получишь производительность первого пентиума. С сложностью и стоимостью вон той вундервафли! А оно такое надо? Если да - GPU себе купи, довольно близкое к пожеланию. Не совсем то но довольно похоже по идее. Но полный хлам как general purpose проц при его цене и потреблении, не для этого оно. Это как на дорожном катке за хлебушком подруливать. Не то чтобы так совсем нельзя, но...
> Для блокирования атаки предлагается использовать сериализацию примитивов
> синхронизации, т.е. добавление процессорной инструкции LFENCE после команды
> cmpxchq, проверяющей состояние блокировки.В IBM тоже поколение пепси и тик-тока пришло?
1. LFENCE не выполняется до тех пор, пока все предыдущие инструкции не завершатся локально!
2. ... инструкция, загружающаяся из памяти и предшествующая LFENCE, получает данные из памяти до завершения LFENCE!!!
3. Процессоры могут спекулятивно извлекать и кэшировать данные из областей
системной памяти, которые используют типы памяти WB, WC и WT. Эта спекулятивная
выборка может произойти в любой момент и не связана с выполнением инструкций.
Таким образом, он не упорядочен относительно выполнения инструкции LFENCE;
данные могут быть спекулятивно помещены в кэш непосредственно перед, во время
или после выполнения инструкции LFENCE.Intel® 64 and IA-32 Architectures Software Developer’s Manual (c)
Получается, что их заплатка бесполезна?
> Получается, что их заплатка бесполезна?Только на UP машине
>LFENCEЧто из-за придурков, включивших такую защиту во флагах компилятора, повыкидавать все камни без Intel Management Engine?
>Группа исследователей из Амстердамского свободного университетаАльма-матер Эндрю Таненбаума. Там создавали Minix-ы.
>AMD опубликовала отчёт о наличии уязвимости, в котором рекомендовала использовать типовые приёмы защиты от атак класса Spectre v1. Компании Intel и ARM пока не отреагировали.
Вот поэтому я выбираю железо от AMD.
вот на этот случай и нужен проц с широким командным словом и закрытой архитектурой...
А, ну да, Security by obscurity работает безотказно.
Счёты нужны! И хранить строго в сейфе, а то вдруг вас посчитают.
Правильно, уязвимости должны быть известны только определенным компетентным органам. Они знают как правильно ими распорядится для нашей с вами безопастности.
Мистер капрал, ради вашего же блага подсматривающий за вами из intel me, оценил вашу преданность идеалам людей в высоких цилиндрах и с пенсне.
Нет, нужен проц типа трансметы, чтобы заплатки ставить только обновлением прошивки.
Sparc S7-2 не изучали? :-)
Ждем новый патч, который порежет производительность процов еще процентов на 40!
По моему, сама идея спекулятивного выполнения - отстой. Вместо того, чтобы повышать утилизацию процессора для выполнения реалтайм-задач, и создавать алогритмы, которые хорошо параллелятся, занимаются этой ерундой. Благодаря таким атакам возможно что в один прекрасный момент плюнут и зарубят эту технологию на корню.
Не зарубят. Арм долго держался, но и он, брут (c) И даже с этой идеей дальше мобилки и настольной подставки для браузера не годится.
Вам в МЦСТ.
А нам бы быстрый процессор.
опять гаджеты
когда уже запретят чтение сегментов кода? ъ
чтобы не W^X а R^X
и все атаки с гаждетами в пролёте
> Предложенный для включения в ядро Linux метод защиты приводит к снижению производительности приблизительно на 5% при прохождении теста LMBench, так как вызов LFENCE запрещает упреждающее выполнение следующих инструкций, до того как будет завершена фиксация всех предыдущих операций.Ээээ. Я когда в юности учился погромированию, читал, что фенсы вообще-то всегда ставят при конкурентном обращении к памяти.
И преподы в универе так же говорили.
И если фенс не поставить, у тебя код тупо не будет работать как должен, причём стрёмно и эпизодически.
Я что-то не так понял в погромировании этом?
Вообще конечно не очень здорово и что делать непонятно. Правильно ли я понимаю возможную атаку: поставил себе на телефон приложение "фонарик", а оно такое в обход всей системы прав твои секреты отправило злоумышленникам?
>приложение "фонарик" ... отправилоМорзянкой.
Очередная раболаторная фигня, без рута и/или модулей ядра (внедрения гаджета) не работающая.
"Предложенный для включения в ядро Linux метод защиты приводит к снижению производительности приблизительно на 5%"Может это, хватит уже? mitigations=off ныне стало насущной небоходимостью.
Так получается атака пока только на Linux возможна? Про Windows нигде ничего не нашел по инету инфы.