Исследователи безопасности, выявившие уязвимости в системе спекулятивного выполнения команд современных процессоров, открыли доступ к рабочим протипам (https://bugs.chromium.org/p/project-zero/issues/detail?id=1272) эксплоитов (https://github.com/IAIK/meltdown/), созданным для демонстрации возможности совершения атак Meltdown и Spectre (https://www.opennet.ru/opennews/art.shtml?num=47856). В том числе открыт код библиотеки libkdump (https://github.com/IAIK/meltdown/tree/master/libkdump), которая использовалась в демонстрациях возможности перехвата (https://github.com/IAIK/Meltdown/tree/master/videos/spy.mp4) ввода паролей, обхода KASLR, доступа (https://bugs.chromium.org/p/project-zero/issues/detail?id=1272) к памяти хост-системы из гостевой системы KVM и определения (https://github.com/IAIK/Meltdown/tree/master/videos/memdump.mp4) содержимого произвольных областей физической памяти (physical_reader (https://github.com/IAIK/meltdown/blob/master/physical_reader.c) и memdump (https://github.com/IAIK/meltdown/blob/master/memdump.c)). Наилучшие результаты работы эксплоитов отмечаются на процессорах с поддержкой Intel TSX (Intel Core i7-5xxx, i7-6xxx или i7-7xxx). Ранее доступ к репозиторию (https://github.com/IAIK/meltdown/) на GitHub был ограничен (https://news.ycombinator.com/item?id=16107578).
Кроме того, накопилась большая подбора заметок с оценкой изменения производительности систем, после применения к ядру Linux патчей KPTI (https://www.opennet.ru/opennews/art.shtml?num=47864) и retpoline]] для блокирования атак Meltdown и Spectre. Общий вывод (https://groups.google.com/forum/m/#!topic/mechanical-sympath...) указывает на то, что накладные расходы вполне терпимы на системах, поддерживающих PCID (Processor-Context ID). На системах без поддержки PCID замедление работы существенно и необходимо отдельно оценивать, что важнее провал производительности, который может составлять до 30%, или риск эксплуатации уязвимости Meltdown (например, атака маловероятна на однопользовательских системах и рабочих станциях с обновлёнными версиями браузеров).
PCID поддерживается в большинстве моделей процессоров, выпускаемых с 2010 года (проверить можно по наличию флага "pcid" в /proc/cpuinfo).
В гостевых системах KVM и VMWare, а также в половине окружений AWS, PCID не доступен. Кроме того, поддержка PCID появилась только в ядре Linux 4.14, поэтому снижение накладных расходов будет заметно только на системах с ядром 4.14+ или в дистрибутивах, перенёсших поддержку PCID в более старых ядрах. Для систем x86 исправления включены (http://kroah.com/log/blog/2018/01/06/meltdown-status/) в обновление 4.15-rc7 и 4.14.12 (рекомендовано подождать 4.14.13 с дополнительными правками) и также подготовлены для веток 4.9 и 4.4. Исправления для ARM64 включены в состав вариантов ядра для платформы Android
3.18, (https://android.googlesource.com/kernel/common/+/android-3.18)
4.4 (https://android.googlesource.com/kernel/common/+/android-4.4) и
4.9 (https://android.googlesource.com/kernel/common/+/android-4.9), но в основном ядре появятся только в выпуске 4.16.
Некоторые другие события, связанные с уязвимостями Meltdown и Spectre:
- Компания Intel вчера выпустила (https://downloadcenter.intel.com/download/27431/Linux-Proces...) обновление микрокода для большого числа актуальных и устаревших моделей процессоров. Обновление доступно в виде пакетов для Red Hat Enterprise Linux, SUSE Linux Enterprise Server, CentOS, Fedora, Ubuntu, Debian и Chrome OS, позволяющих обновить микрокод без обновления BIOS. Обновление микрокода не отменяет необходимости применения патчей к ядру Linux;
- Компания Intel также опубликовала (https://newsroom.intel.com/news/intel-offers-security-issue-.../) результаты собственной оценки влияния исправлений на производительность. В тестах SYSmark 2014 SE на системах с 8 поколением CPU Intel Core наблюдается снижение производительности на 2-14% (в среднем 6%);
- По информации (https://access.redhat.com/articles/3307751) от компании 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 (https://usn.ubuntu.com/usn/usn-3525-1/) (ядро 3.2), 14.04 (https://usn.ubuntu.com/usn/usn-3524-1/) (ядро 3.13), 16.04 (https://usn.ubuntu.com/usn/usn-3522-1/) (4.4) и 17.10 (https://usn.ubuntu.com/usn/usn-3523-1/) (4.13).
На системах без поддержки PCID падение производительности довольно ощутимо: падение (https://www.phoronix.com/scan.php?page=news_item&px=KPTI-Ret...) производительности до 4 раз в тесте Flexible IO Tester (на CPU с поддержкой PCID - 9%), 18-23% в тесте FS-Mark, 16-22% в тесте Compile Bench, 22-27% в тесте NGINX Benchmark и 26-32% в тесте Apache Benchmark;
- Проект Debian GNU/Linux выпустил (https://www.decadent.org.uk/ben/blog/meltdown-and-spectre-in...) обновление 64-разрядных сборок ядра (3.2, 3.16, 3.9 и 4.14) с патчами KPTI для wheezy, jessie, jessie-backports, stretch и unstable/sid. Для 32-разрядных систем, а также для веток stretch-backports, testing/buster и experimental обновления пока недоступны (https://security-tracker.debian.org/tracker/CVE-2017-5754). Патчи для блокирования Spectre находятся в процессе рассмотрения, из приложений
Spectre пока устранён в Firefox в Debian unstable, обновление Chromium пока не добавлено;
- Для SUSE/openSUSE выпущено (https://lists.opensuse.org/opensuse-security-announce/2018-0...) обновление ядра с патчами для противостояния Meltdown и Spectre;
- Разработчики OpenBSD (http://undeadly.org/cgi?action=article;sid=20180106082238) и FreeBSD (https://lists.freebsd.org/pipermail/freebsd-security/2018-Ja...) готовят патчи для своих систем. Theo de Raadt, основатель OpenBSD, высказал (https://www.itwire.com/security/81338-handling-of-cpu-bug-di...) возмущение практикой упреждающего информирования о проблемах только самых крупных компаний, что ставит остальные в ранг проектов второго сорта. Для DragonFly BSD (https://www.dragonflydigest.com/2018/01/08/20690.html) опубликован (http://gitweb.dragonflybsd.org/dragonfly.git/commit/8ed06571...) начальный вариант патча, который приводит к снижению производительности на 5-12% на процессорах серии Skylake и 12-53% на CPU Haswell;
- IBM выпустил (https://www.ibm.com/blogs/psirt/potential-impact-processors-.../) обновление микрокода для устранения уязвимости Meltdown в процессорах POWER7+ и POWER8. Также опубликованы специфичные для CPU POWER патчи для устранения проблемы в дистрибутивах Linux (RHEL, SUSE, ...
URL: https://news.ycombinator.com/item?id=16107578
Новость: http://www.opennet.ru/opennews/art.shtml?num=47880