Тотальная уязвимость

Тотальная уязвимость

Night Telpe
UPD. Вышел Chrome 64, в котором проблема решена
UPD. В Firefox Android версии 57.0.4 уязвимость устранена.
UPD. Доступны обновления Win 7-8

3 января 2018 на сайте Google Project Zero появилась информация об уязвимостях, которым подвержены практически все процессоры Intel начиная с 1995 года. А также некоторые процессоры AMD, ARM и другие.

К сожалению, одна из уязвимостей оказалась настолько обобщенной, что ей можно воспользоваться через код, который работает в браузере на открытой странице.

Что это значит? Любая реклама на случайно посещенном сайте может получить доступ к памяти браузера со всеми вашими паролями, историей браузера и другой информацией.

Звучит несколько сюрреалистично, но так оно и есть.

Я пишу это для широкого круга лиц. Как можно более простым языком. Технические детали и ссылки я помещу в конце. Я это делаю с позиции продвинутого пользователя, так как я не специалист по безопасности. Моя задача рассказать, что я узнал за время исследования вопроса и помочь другим избежать проблем в будущем.
В целом, я склонен к крипто-панике. Вы вольны игнорировать предупреждения таких сумасшедших, как я. Но потом не говорите, что вас не предупреждали!

Если вы нашли в статье ошибки, пишите мне. Ссылка на профиль в начале статьи.

Оглавление

Что случилось
Защита браузеров
Chrome Desktop
Firefox Desktop
Chrome Android
Firefox Android
Firefox focus
Chrome Custom Tabs
Android WebView
iOS
Простая проверка
AdBlock
Радикальный метод
Защита системы
Смените пароль
Выбор новых девайсов
Обновление Windows 10
Обновление Windows 7-8
Обновление Ubuntu
Обновление Android
iOS/MacOS
Ссылки

Что случилось

Самое доступное описание проблемы можно найти здесь: https://meltdownattack.com/

Внутренняя лаборатория Гугла Project Zero обнаружила эти уязвимости ещё летом 2017. Они установили эмбарго на разглашение деталей и связались с другими компаниями для совместного решения проблемы. До того, как об уязвимости станет известно всем, включая злоумышленников.

Для простоты можем считать, что уязвимости две. Первую назвали Spectre, вторую Meltdown. Обе они позволяют вредоносной программе прочитать из памяти практически любую информацию. Пароли, ключи и фото ваших котиков.

Хорошая новость заключается в том, что пока нету подтвержденных случаев такого взлома. Плохая новость - это не значит, что их не было. Тем более описание проблемы и примеры программ уже доступны в интернете. Рано или поздно зловреды появятся.

Ещё более печален тот факт, что той же проблеме подвергнуты и браузеры. Она менее трагичная - вредоносный код может получить доступ только к памяти самого браузера, а не всей системы. Но там тоже есть много интересного: сохраненные пароли, открытые вкладки и т.д. И самое страшное - эту фигню можно подцепить абсолютно случайно. Например через рекламу на сайте с "бесплатными" фильмами.

Поскольку проблема с браузером мне представляется наиболее лютой, с нее и начнем.

Защита браузеров

Технические детали атаки на браузеры можно найти здесь: https://spectreattack.com/spectre.pdf

Конечно разработчики браузеров не сидят сложа руки. Вместе с анонсом уязвимости Гугл опубликовал сообщение о том, как избежать проблем с его продуктами. Вот оно.

Но как-то странно видеть, что апдейт Хрома, который решит эту проблему нам ждать только 23 января. Но не сидеть же нам сложа руки? Посмотрим, что можно сделать.

Chrome Desktop

UPD. Вышел Chrome 64. В нем уязвимость подперта. Дополнительных действий не требуется. Есть вы включали strict site isolation - ее можно отключить.

Первое, что предлагает сделать Гугл - включить опцию chrome://flags/#enable-site-per-process (так и вводим в командную строчку). Это позволяет изолировать каждую вкладку в отдельном процессе и не дать негодному коду подсмотреть, что вы делаете в других вкладках.

Беда в том, что это негативно сказывается на производительности, особенно когда открыто много вкладок. Плюс у этого режима есть масса известных проблем. Некоторые сайты могут работать не правильно.

В любом случае - это полумера. Проблему это не решает, просто уменьшает ее масштабы. После выхода Chrome 64 эту опцию можно отключить.

Но есть еще способы себе помочь. Это опция chrome://flags/#shared-array-buffer которую надо выключить. Это один из уязвимых компонентов javascript. Без него у вас ничего не сломается, честно.

Это тоже не панацея, но несколько увеличит выши шансы на счастливую старость.

Firefox Desktop

Фаерфокс няшки. С версии 57 они отключили все потенциально уязвимые компоненты. Вот пост об этом.

Chrome Android

Нужно проделать ровно те же действия, что и с десктопным. И ждать выхода Chrome 64.

Firefox Android

UPD. В версии 57.0.4 уязвимость устранена.

В версии 57.0.1 уязвимые компоненты включены. Как полумера можно набрать about:config, найти там javascript.options.shared_memory и выключить его. И ждать обновлений. Когда они выйдут, я дополню статью.

Firefox focus

about:config не работает. Версия 4.0.1 уязвима. Ждем обновления.

Chrome Custom Tabs

Есть такой зверь в андроидах. Он появляется на свет божий, когда вы открываете веб-страницу из другого приложения. Например ВК или Телеграм. Выглядит он вот так:

К счастью, эта штука обновляется вместе с Хромом и имеет те же настройки. И те же проблемы.

Android WebView

Тут вещи становятся сложнее.

Он тоже помогает отображать веб-страницы внутри приложения. Но немного в другом виде. И другими возможностями для разработчика.

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

До версии Android 5 Web View уязвим и является частью системы. Так что вас спасет только полное обновление системы до версии 5. Об этом ниже.

После Android 5 Web View можно обновить через Google Play. Приложение называется Android System WebView. Надо ожидать, что в версии 64 проблему тоже исправят. Я не могу это проверить потому что...

После Android 7 Android System WebView выключено. В качестве WebView используется Chrome. Но настройки, которые мы сделали в браузере не работают в этом контексте. Поэтому we are DOOOOMED. WebView в этом случае уязвимо.

Мой выбор - отказаться от использования приложений с WebView, которые показывают случайный контент из интернета. Например Pocket. 23 января после обновления Chrome проблема должна решиться.

iOS/Mac

По идее Chrome и Firefox должны иметь те же настройки. Обновление Safari обещают выпустить в ближайшее время. Про WebView внутри приложений информации нет.

Простая проверка

Самый быстрый способ проверить любой браузер - это обновить его до последней версии, зайти на сайт https://eloquentjavascript.net/code/, написать там console.log(SharedArrayBuffer); и нажать run code. Если появилась красная надпись ReferenceError: SharedArrayBuffer is not defined - это хорошо. Хотя не дает никаких гарантий.

Решение довольно топорное, но первое что пришло в голову. А о втором я не думал.

TODO. Раз уж меня это так взволновало, то имеет смысл сделать простую страничку с автоматической проверкой.

В остальном мы ждем Chrome 64 и обновления мобильного фаерфокса. И тогда только можно будет спать спокойно.

AdBlock

Поскольку главная опасность идет даже не от самой страници, а от всякой фигни, которую в нее встраивают автоматически и не глядя, то AdBlock спасет вас в большинстве случаев.

Я же советую uBlock Origin. Он работает лучше и честнее AdBlock. Так же его можно поставить на мобильный Firefox.

Радикальный метод

Для Firefox есть расширение NoScript , которая позволяет блокировать код на страницах вообще и разрешать его только на определенных сайтах.

Это отличное решение для параноиков. Я уже давно к нему присматриваюсь и собираюсь попробовать. Это решает проблему на корню.

Для Хрома должно быть что-то аналогичное.

Не советую для неопытных пользователей. А то вы меня проклянете.

Дополню этот раздел результатами.

Защита системы

Браузер - это пол беды. Вредоносный код может попасть к вам в виде приложения - и тут совсем хана.

Хорошая новость в том, что если вы запускаете только те приложения, которым доверяете - то шанс что что-то пойдет не так минимальный. В отличии от браузера, где можно нарваться совершенно случайно.

Как я уже писал выше, уязвимости две.

Meltdown эксплуатируется довольно просто. К счастью, ей подвержены только процессоры Intel. И обновление системы должно от него спасти. К несчастью, все известные методы защиты снижают производительность операционной системы и всех программ. Правда те, кто уже делал тесты утверждают, что простые пользователи этого не заметят. А вот сервера могут застонать.

С Spectre все намного хуже. Его сложнее эксплуатировать. Но он принципиально не устраним, так как это проблема на уровне процессора. Причем не только Intel. ARM, AMD и многие другие оказались уязвимы. Единственное надежное решение - это покупка нового процессора. Будут выпускаться обновление Windows и других систем, которые постараются сделать его эксплуатацию сложнее. Но это будут полумеры и вечная гонка плохих и хороших парней. По крайней мере, все так говорят.

Гораздо хуже, что такой же проблеме подвержены сервера. Сейчас у многих компаний система выставлена так, что они запускают много "виртуальных серверов" на одной физической машине. Раньше они были полностью изолированы друг от друга. Но Spectre и Meltdown позволяют злому серверу-шпиону прочитать ваши данные, которые хранятся у доброго сервера, если судьба сведет их на одной физической машине.

Крупнейшие компании уже давно занялись вопросами этих уязвимостей. Google, Amazon, Microsoft уже выпустили отчет о том, что вот-вот все починят.

Этим ребятам я бы стал доверять (особенно Гуглу, который первый нашел проблему). А вот к более мелким компаниям могут быть вопросы.

Отдельная печаль, что по прогнозам специалистов, антивирусы не смогут достоверно определить вредоносные программы, которые используют эти уязвимости. Еще их использование не оставляет никаких следов.

Смените пароль

Если вы давно не меняли пароль от всего в интернете, то где-нибудь весной, когда пыль уляжется, самое время это сделать. И следите за подозрительной активность в своих важных профилях.

Выбор новых девайсов

При покупке новых устройств старайтесь точно узнать, что процессор в них не подвержен этим серьезным недостаткам.

Если это Intel - то подойдут только процессоры, выпущенные после января 2018. (Может в этом и был план?)

UPD. ... 9-е поколение Intel Core будет иметь ту же уязвимость в полном объёме и полном составе.
(c) https://geektimes.ru/post/297029/

ARM выпустила полный список "плохих" процессоров. https://developer.arm.com/support/security-update

Про другие процессоры ничего не скажу. Надо гуглить.

Обновление Windows 10

Microsoft уже выпустил апдейт безопасности. До меня он почему-то не докатился сегодня сам, и я ставил его руками (потому что паранойю).

До вторника 09-01-2018 апдейт должен прийти в любом случае.

Установлен ли он, можно проверить "Панель управления -> Программы и компоненты -> Установленные обновления". Ищите KB4056892.

Руками апдейт можно скачать вот здесь: https://support.microsoft.com/en-ca/help/4056892/windows-10-update-kb4056892

Не обошлось без танцев с бубном. В настройках центра обновления есть опция из какого "канала" их ставить.

Надо выбрать тот вариант, который не для организаций. Потом обновить Windows. Потом поставить скаченный апдейт безопасности руками.

А можно просто подождать, пока все само обновится.

Обновление Windows 7-8

Обновления доступны по ссылкам. Судя по всему ставить их надо вручную.

Win 7 SP1 https://support.microsoft.com/en-us/help/4056897/windows-7-update-kb4056897

Win 8.1 https://support.microsoft.com/en-us/help/4056898/windows-81-update-kb4056898

Обновление Ubuntu

UPD. Обновление выпущено. Стабильное ядро версии 4.4.0-109 доступно в репозитории.
Внимание. Избегайте ядра версии 4.4.0-108. По сообщениям некоторых пользователей они испытывают проблему с загрузкой системы.
Подробнее: https://habrahabr.ru/post/346444/

Обновление статуса здесь: https://wiki.ubuntu.com/SecurityTeam/KnowledgeBase/SpectreAndMeltdown

Обратите внимание на поддерживаемые версии. Для моего 17.04 не было обновлений ядра. Пришлось апгрейдиться до 17.10

По состоянию на 2018-01-09 ждать обновления ядра стоит со дня на день. Патч уже проходит стадию тестирования.

Если особенно не терпится - можно поставить ядро из репозитория https://launchpad.net/~canonical-kernel-team/+archive/ubuntu/pti/

Обновление Android

Для начала узнайте, какой у вас процессор. Если его нет в списке

https://developer.arm.com/support/security-update

и у вас Android 5 или выше, то можно не париться.

В противном случае крайне советую обновиться. Даже если с процессором все ок, до 5го андроида у вас проблемы с WebView.

С обновлениями у андроида все плохо. Если его можно поставить штатными средствами, то вам нужно ждать обновления безопасности 2018-01-05. Подробнее тут.

Вот эта цифра должна поменяться после апдейта

Если обновлений нет и не предвидится, поищите кастомные прошивки версии 5 и выше. Обращайте внимания на версию обновлений безопасности. Прямо сейчас их еще скорее всего нет. Должны появиться в ближайшем будущем.

Поискать прошивку для своего телефона можно например здесь: https://download.lineageos.org/

Если обновить девайс хотя бы до Android 5 нет возможности - советую отправить его на свалку истории.

iOS/MacOS

UPD. Apple частично закрыла уязвимость в обновлении macOS 10.13.2, вышедшем ещё 6 декабря. Ещё несколько исправлений добавят в 10.13.3, находящейся на стадии бета-теста. (c) DTF

UPD.

Эпл подтвердили, что уязвимости подвержены все устройства на Mac и iOS. Апдейты уже выпущены. Скоро будет выпущено обновление для Safari.

Если кто-то дополнит эту статью информацией об продуктах Apple - будет здорово.

Ссылки

https://meltdownattack.com/
Meltdown:
https://meltdownattack.com/meltdown.pdf

https://en.wikipedia.org/wiki/Meltdown_(security_vulnerability)
Spectre:
https://spectreattack.com/spectre.pdf

https://en.wikipedia.org/wiki/Spectre_(security_vulnerability)


Отличный цикл статей на Хабре:
Meltdown: https://geektimes.ru/post/297029/
Spectre: https://geektimes.ru/post/297031/
Хорошо ли мы себя вели: https://geektimes.ru/post/297065/


Пост на Хабре: https://habrahabr.ru/post/346026/
Большой тред по теме: https://news.ycombinator.com/item?id=16065845
Reading privileged memory with a side-channel: https://googleprojectzero.blogspot.com.by/2018/01/reading-privileged-memory-with-side.html
Mitigations landing for new class of timing attack: https://blog.mozilla.org/security/2018/01/03/mitigations-landing-new-class-timing-attack/
Actions Required to Mitigate Speculative Side-Channel Attack Techniques: https://sites.google.com/a/chromium.org/dev/Home/chromium-security/ssca
Site Isolation: https://www.chromium.org/Home/chromium-security/site-isolation