Эксплоиты и тесты производительности, связанные с уязвимостями Meltdown и Spectr

Автор denkin, января 11, 2018, 02:19:39

« предыдущая - следующая »

denkin

ЦитироватьИсследователи безопасности, выявившие уязвимости в системе спекулятивного выполнения команд современных процессоров, открыли доступ к рабочим протипам эксплоитов, созданным для демонстрации возможности совершения атак Meltdown и Spectre. В том числе открыт код библиотеки libkdump, которая использовалась в демонстрациях возможности перехвата ввода паролей, обхода KASLR, доступа к памяти хост-системы из гостевой системы KVM и определения содержимого произвольных областей физической памяти (physical_reader и memdump). Наилучшие результаты работы эксплоитов отмечаются на процессорах с поддержкой Intel TSX (Intel Core i7-5xxx, i7-6xxx или i7-7xxx). Ранее доступ к репозиторию на GitHub был ограничен.

Новость на Opennet.
Подробности

"Кроме того, накопилась большая подборка заметок с оценкой изменения производительности систем, после применения к ядру Linux патчей KPTI и retpoline для блокирования атак Meltdown и Spectre. Общий вывод указывает на то, что накладные расходы вполне терпимы на системах, поддерживающих PCID (Processor-Context ID). На системах без поддержки PCID замедление работы существенно и необходимо отдельно оценивать, что важнее, провал производительности, который может составлять до 30%, или риск эксплуатации уязвимости Meltdown (например, атака маловероятна на однопользовательских системах и рабочих станциях с обновлёнными версиями браузеров).

В обычных условиях при использовании патча KPTI переключение контекста во время системного вызова приводит к сбросу кэша с данными трансляции физических адресов в виртуальные, что значительно снижает производительность. PCID позволяет обойтись без сброса кэша трансляции адресов (TLB, Translation Lookaside Buffer), давая возможность привязать содержимое прокэшированных страниц памяти TLB к идентификатору контекста и ограничить операции сопоставления только для разрешённого в данный момент контекста (элементы кэша TLB с другим PCID не затрагиваются при переключении контекста).

PCID поддерживается в большинстве моделей процессоров, выпускаемых с 2010 года (проверить можно по наличию флага "pcid" в /proc/cpuinfo). В гостевых системах KVM и VMWare, а также в половине окружений AWS, PCID не доступен. Кроме того, поддержка PCID появилась только в ядре Linux 4.14, поэтому снижение накладных расходов будет заметно только на системах с ядром 4.14+ или в дистрибутивах, портировавших поддержку PCID в более старые ядра. Для систем x86 исправления включены в обновление 4.15-rc7 и 4.14.12 (рекомендовано подождать 4.14.13 с дополнительными правками) и также подготовлены для веток 4.9 и 4.4. Исправления для ARM64 включены в состав вариантов ядра для платформы Android 3.18, 4.4 и 4.9, но в основном ядре появятся только в выпуске 4.16.

Некоторые другие события, связанные с уязвимостями Meltdown и Spectre:

Компания Intel вчера выпустила обновление микрокода для большого числа актуальных и устаревших моделей процессоров. Обновление доступно в виде пакетов для Red Hat Enterprise Linux, SUSE Linux Enterprise Server, CentOS, Fedora, Ubuntu, Debian и Chrome OS, позволяющих обновить микрокод без обновления BIOS. Обновление микрокода не отменяет необходимости применения патчей к ядру Linux;
Компания Intel также опубликовала результаты собственной оценки влияния исправлений на производительность. В тестах SYSmark 2014 SE на системах с восьмым поколением CPU Intel Core наблюдается снижение производительности на 2-14% (в среднем 6%);
По информации от компании Red Hat использование патчей для устранения уязвимостей в Red Hat Enterprise Linux 7 приводит к замедлению выполнения задач на 1-20%:
Наибольшее проседание производительности (8-20%) наблюдается в работе СУБД на нагрузках OLTP, при случайном доступе к прокэшированной памяти, при активном буферизированном вводе/выводе, при большой интенсивности переключения контекста между ядром и пользовательским уровнем (выполнение системных вызовов). Большие потери наблюдаются в тестах tpc, sysbench, pgbench, netperf (до 256 байт) и fio (случайный доступ к памяти NvME).
Падение производительности на 3-7% отмечается при выполнении аналитических запросов в СУБД, в системах поддержки принятия решений (DSS) и в Java VM, в моменты интенсивного обмена информацией по сети или при обращениях к диску.
Снижение производительности на 2-5% наблюдается в решениях HPC (High Performance Computing) при большой вычислительной нагрузке на CPU, если большинство работ выполняется в пространстве пользователя с применением привязки к ядрам CPU или использованием numa-control (например, тесты Linpack NxN и SPECcpu2006);
Минимальное влияние на производительность (менее 2%) проявляется в системах, в которых применяются методы прямого доступа к ресурсам в обход функций ядра и различные техники offload-ускорения. Например, тесты DPDK (VsPERF 64 байт) и OpenOnload (STAC-N).
Доступно обновление ядра c устранением уязвиомости Meltdown для Ubuntu 12.04 (ядро 3.2), 14.04 (ядро 3.13), 16.04 (4.4) и 17.10 (4.13);
Phoronix изучил падение производительности при использовании в Ubuntu ванильного ядра 4.14 и патчей KPTI+Retpoline, падение производительности довольно ощутимо: от 9% до 4 раз в тесте Flexible IO Tester, 18-23% в тесте FS-Mark, 16-22% в тесте Compile Bench, 22-27% в тесте NGINX Benchmark и 26-32% в тесте Apache Benchmark;
Проект Debian GNU/Linux выпустил обновление 64-разрядных сборок ядра (3.2, 3.16, 3.9 и 4.14) с патчами KPTI для wheezy, jessie, jessie-backports, stretch и unstable/sid. Для 32-разрядных систем, а также для веток stretch-backports, testing/buster и experimental обновления пока недоступны. Патчи для блокирования Spectre находятся в процессе рассмотрения, из приложений Spectre пока устранён в пакете с Firefox в Debian unstable, обновление Chromium пока не добавлено;
Для SUSE/openSUSE выпущено обновление ядра с патчами для противостояния Meltdown и Spectre;
Для ALT доступно обновление ядра до версий 4.9.75 (LTS) и 4.14.12 (дополнительное), включающих патчи KPTI;
Разработчики OpenBSD и FreeBSD готовят патчи для своих систем. Theo de Raadt, основатель OpenBSD, высказал возмущение практикой упреждающего информирования о проблемах только самых крупных компаний, что ставит остальные в ранг проектов второго сорта. Для DragonFly BSD опубликован начальный вариант патча, который приводит к снижению производительности на 5-12% на процессорах серии Skylake и 12-53% на CPU Haswell;
IBM выпустил обновление микрокода для устранения уязвимости Meltdown в процессорах POWER7+ и POWER8. Также опубликованы специфичные для CPU POWER патчи для устранения проблемы в дистрибутивах Linux (RHEL, SUSE, Ubuntu). Для POWER9 обновление запланировано на 15 января. Исправление для AIX и IBM i ожидается 12 февраля;
Доступно обновление проприетарных драйверов NVIDIA (390.12, 384.111) с блокированием применения атаки Spectre к драйверам;
Для распределённой ФС Lustre отмечена потеря производительности при применении KPTI патчей от 10% до 45% в зависимости от конфигурации и нагрузки. Наибольшие потери наблюдаются при связке "zfs+compression+lustre" и выполнения rsync для большого числа мелких файлов;
Инженеры из компании Branch Metrics отметили увеличение нагрузки на CPU примерно на 20% после применения патчей против Meltdown к окружению на базе AWS EC2. Другие пользователи отмечают падение производительности AWS EC2 на 5-30%;
Отмечено падение производительности Python на 37% после применения обновления c защитой от Meltdown на платформе Windows 7. Microsoft подтверждает потерю производительности, но не приводит конкретных цифр. Также наблюдаются серьёзные проблемы с совместимостью обновления от Microsoft с антивирусным ПО и надстройками для защиты Windows."
(ц)

[свернуть]