Архив метки: демоны

Критические уязвимости во всех процессорах

Я как-то сразу не осознал насколько все плохо. Уязвимости Meltdown и Spectre оказались намного серьезнее, чем это могло показаться на первый взгляд.

Проблема сидит где-то между математикой и физикой — побочный эффект от конвейерной обработки данных. У процессора можно запросить данные чужого участка оперативной памяти, конечно же, процессор их не даст, но можно попросить на основе этих данных уже свой участок оперативки. Он тоже не будет предоставлен, но будет помещен в кеш. Нормально это описано в этом комментарии.

Объяснение от меня:
Процессор знает телефон Путина. Мы хотим вычислить его поциферно. Мы выкладываем десять листков бумаги на пол, на каждом из них написана цифра — предполагаемая первая цифра. Мы говорим процессору: если 100 поделить на 0 == 666, то пометь, пожалуйста, первую цифру телефона крестиком. Процессор начинает вычислять 100 / 0, а пока он этим занимается, чтобы не терять времени он делает более быструю операцию — узнает телефон, берет его первую цифру и заносит свой виртуальный карандашик над листком. Права доступа при этом не проверяются — это более долго, это можно сделать и потом.

Деление завершается с ошибкой, и поток, задавший неудобный вопрос будет убит. Но можно успеть создать ребенка, он же не будет ответственен за родителя, верно? Ребенок смотрит на десять одинаковых, непомеченных листков, и начинает командовать процессору метить поочередно все листки крестиком. Только к пометке одного из листков процессор будет готов, остальные будут метиться медленнее — их нет в кеше. Таким образом из побочного эффекта в виде скорости доступа мы можем получить информацию о чужом участке оперативки. К чему это приводит известно на примере Heartbleed.

На физическом уровне вместо операции записи (пометить крестиком) используется операция чтения (просто посмотреть на то что написано на листке). На моей машине воспроизводится. Уязвимо тотально все, что осталось целым пока непонятно. Железного фикса не сделать, как выпускать новые поколения процессоров я пока не понял. Софтовый фикс состоит в том, что после каждого прерывания зачищать кеш. Падение производительности при этом катастрофическое (5-30%).

Пока что не понятно можно ли воспроизвести эту дыру через javascript, но скорее всего можно. Так что уязвимы все устройства, где есть браузеры. Особо уязвимы хостеры виртуалок, потому что изоляции между виртуалками больше не существует.

Исходные статьи дублирую здесь: spectre, meltdown.

Переезд на новый сервер

Я тут переехал на новый сервер. Очень давно пора было это сделать, жить на сервере с одним диском — идея не очень хорошая. Бывший сервер:
Процессор: Intel Atom N2800
Passmark: ~600
Оперативная память: 2G DDR3 1066MHz (привет meminfo, lshw и dmidecode)
Диск: 500Gb hitachi travelstar 7200rpm
Канал: 100mbit/s + DDoS protection
Провайдер: kimsufi, Франция
Текущий аптайм: 803+ дня
Цена: 5евро в месяц

Новый сервер:
Процессор: Intel Core i7-2600
Passmark: ~8300
Оперативная память: 8x4Gb DDR3 1333MHz (32 гига суммарно)
Диски: 2x3TB Seagate Barracuda 7200rpm (raid1)
Канал: 250mbit/s (40tb/month лимит)
Провайдер: hetzner, Германия
Цена: 34евро в месяц

Процесс переезда оказался ожидаемо болезненным.
Читать далее

100500 способов передать данные в программу

Задача: надо считать ssl-сертификат и приватный ключ.
Они, естественно, зашифрованы.
Сертификат находится в известном файле, но надо безопасно считать пароль.

Сертификат считается считанным безопасно, если имея права рута единственная возможность узнать пароль — сделать дамп памяти сервера.
Читать далее