Security for all - #6 - 8 мая 2018
Двухфакторная аутентификация - 2FA
Сегодня
Amazon пригрозил заблокировать аккаунт мессенджера Signal, опубликован PoC для Windows, вызывающий падение системы, локальное повышение привилегий в Linux, уязвимость в WebEx проигрывателе от Cisco, Gihub и Twitter писали пароли во внутренние логи в открытом виде.
В конце я расскажу про двухфакторную аутентификацию - какие варианты бывают и какие у каждого из них есть достоинства и недостатки.
Предисловие
Если у вас есть вопросы, вы можете меня найти в твиттере (https://twitter.com/andrey_danin) или Telegram (https://t.me/Stuw_res). Ссылки на сайте подкаста: https://stuw.github.io/
Вспомогательные темы
BSOD - Blue Screen of Death - синий экран смерти. Режим, в котором Windows не может продолжать работу. Система переводит графический адаптер в упрощенный режим и выводит на экран информацию о проблеме. Надписи на этом экране сделаны светлыми буквами на синем или голубом фоне. Именно поэтому этот режим так и называется.
CDN - Content Delivery Network - сеть доставки контента. Используется как входная точка для сайтов. Данную услугу предоставляют компании, которые имеют множество серверов по всему миру. CDN используется главным образом по трем основным причинам: во-первых для уменьшения нагрузки на основной сервер сайта: в сети доставки контента имеется множество серверов, эти сервера сохраняют часть контента, который не меняется и отдают его браузерам пользователей не запрашивая данные с основного сервера во-вторых для ускорения доступа к сайту: сервера CDN располагаются ближе к пользователям, поэтому закэшированный контент отдается быстрее, чем если бы пользователь запрашивал данные с основного сервера в-третьих для защиты от DoS атак: сеть CDN располагает гораздо большими ресурсами, чем отдельно взятый сервер, в обработке запросов может участвовать не один сервер, а целая группа. К тому же провайдеры CDN могут анализировать трафик нескольких серверов, для которых они предоставляют доступ и точнее выявлять вредоносные хосты основываясь на большем объеме анализируемых данных.
Domain Fronting - техника, которая позволяет скрыть реальный сервис, к которому пытается получить приложение или браузер. Как это работает? При доступе к веб серверу по защищенному каналу участвует два протокола - TLS и HTTP. Именно они и представляют из себя протокол HTTPS. Сначала для организации защищенного соединения используется TLS, после этого внутри TLS соединения для обмена данными с web сервером используется HTTP.
При подключении к серверу через TLS клиент должен указать в расширении SNI (server name indication), к какому доменному имени он подключается, чтобы сервер выбрал правильный сертификат. В протоколе HTTP клиент также должен указывать, к какому web серверу он подключается. Это нужно, т.к. на одном физическом сервере может располагаться несколько веб сайтов. Получается, что имя сервера указывается и в протоколе TLS, и в протоколе HTTP. В случае с Google и Amazon компоненты обрабатывающие два вышеупомянутых протокола разные, поэтому есть возможность в TLS указать одно доменное имя, а в HTTP другое. Провайдеру или регулятору видно только доменное имя, которое указано в TLS. Именно на этом и строится техника обхода блокировок - в TLS указывается разрешенное доменное имя, а уже в HTTP доменное имя нужного сервера.
Новости
Amazon пригрозил заблокировать аккаунт мессенджера Signal
Signal - приложение с открытыми исходным кодом для обмена сообщениями. Основная его особенность и упор - безопасный обмен сообщениями с использованием end-to-end шифрования. Т.е. содержимое сообщений может быть видно только конечным получателям. Такой обмен не может быть расшифрован посередине, например, на стороне сервера, который выступает в роли посредника.
Signal использовал технику domain fronting на платформе Google, для того чтобы избежать блокировок в некоторых странах, например в Египте и Иране. Т.к. поисковый гигант данную возможность закрывает, разработчики мессенджера стали искать другие возможности и обратили внимание на CDN CloudFront, о чем сделали анонсы. Компании Amazon не понравилось, что их сервис может использоваться для обхода блокировок, они уведомили владельца аккаунта, что за неправомерное использование чужих доменных имен, аккаунт может быть заблокирован, т.к. это противоречит политике использования сервиса.
https://signal.org/blog/looking-back-on-the-front/
PoC для BSOD в Windows
Исследователь из компании Bitdefender Марьюс Тивадар выложил на github PoC, способный вызвать BSOD в ОС Windows. Проблема кроется в логике обработки файловой системы NTFS. Злоумышленник может вызвать сбой системы подключив USB флешку со специально сформированной файловой системой. Для эксплуатации не нужны права администратора. Нужен лишь локальный доступ. Проблему удается воспроизвести даже на заблокированном компьютере.
Microsoft была уведомлена о проблеме в июле 2017 года, но до последнего времени не спешила исправлять уязвимость. К счастью баг может спровоцировать только отказ в обслуживании. Выполнение кода с его помощью невозможно.
https://threatpost.ru/researcher-publishes-poc-capable-of-triggering-bsod-on-windows/25895/ https://github.com/mtivadar/windows10_ntfs_crash_dos
Локальное повышение привилегий в Linux
Уязвимость позволяет локальному пользователю чтение и запись в пространство ядра, создавая таким образом уязвимость повышения привилегий. Уязвимость была внесена в ядро 8 лет назад.
Проблему нашли исследователи из Check Point Research. Они взяля за основу техники, описанные еще в 2017 году. Нашли места вызовов драйверами функции mmap и проанализировали их. В драйвере drm udl (драйвер, обеспечивающий работу технологии DisplayLink) была обнаружена проблема, связанная с переполнением целочисленных переменных.
Патч с исправлением внесен в ядро linux в конце марта.
https://research.checkpoint.com/mmap-vulnerabilities-linux-kernel/
Уязвимость в WebEx проигрывателе от Cisco
Уязвимость в плеере для просмотра записей онлайн совещаний и вебинаров WebEx от Cisco позволяет злоумышленнику удаленно выполнить код на машине жертвы. WebEx - достаточно популярная платформа в корпоративной среде. Часто через нее устраивают вебинары. Атакующий может эксплуатировать эту уязвимость послав жертве ссылку на файл или письмо с прикрепленным вредоносным файлом в формате ARF (Advanced Recording Format). При успешной атаке на машине пользователя может быть выполнен код, подготовленный злоумышленником.
Немного усугубляет проблему то, что плеер может быть установлен автоматически, когда пользователь обращается к файлу на сервере WebEx.
Уязвимости подвержены версии для всех трех платформ: Windows, Linux, macOS. Чтобы обезопасить себя, нужно обновить ПО для WebEx до последней версии. Или полностью его удалить :)
https://threatpost.ru/critical-cisco-webex-bug-allows-remote-code-execution/25934/
Gihub и Twitter писали пароли во внутренние логи
Сразу две компании объявили о том, что в их системах пароли попадали во внутренние логи в открытом виде.
Github разослал некоторым пользователям письмо о том, что из-за ошибки в системе сброса пароля, пользовательские пароли записывались в лог в открытом виде.
Буквально через несколько дней компания Twitter в своем блоге сообщила, что в их системе также была ошибка, из-за которой пароли попадали во внутренние логи в открытом виде. Компания попросила всех пользователей сменить пароли.
Обе компании для хранения паролей в базах данных используют надежный алгоритм bcrypt, который был разработан специально для того, чтобы усложнить злоумышленникам жизнь в случае компрометации базы данных.
https://blog.twitter.com/official/en_us/topics/company/2018/keeping-your-account-secure.html
2fa
Именно две новости о паролях и вынудили меня внепланово перейти к теме двухфакторной аутентификации.
Что это такое и как работает?
В некоторых случаях пароль пользователя становится известен злоумышленникам. Это может произойти по разным причинам, но ситуация получается одна: злоумышленники могут залогиниться от имени пользователя, но нужно сделать так, чтобы они не могли воспользоваться аккаунтом.
Для этого придумали использовать второй фактор - что-то, чем обладает пользователь и не обладает злоумышленник. При чем этот фактор не должен быть вторым паролем, т.к. иначе ситуация сводится к более длинному паролю.
Какие виды бывают?
В качестве второго фактора можно использовать смс, e-mail или одноразовые пароли.
СМС
Смысл должен быть знаком каждому, кто пользуется, например, интернет банком. После ввода правильного логина и пароля, система генерирует код и посылает пользователю в виде СМС. Пользователь должен ввести пришедший код на сайте, и только после этого система позволит выполнять какие-то действия.
У этого метода есть недостаток. Несмотря на то, что телефон с сим картой есть только у пользователя, злоумышленники могут перехватить СМС. Это возможно потому, что системы мобильной связи разрабатывались давно и имеют некоторые проблемы. Так злоумышленники могут за не очень большие деньги получить доступ к сетям мобильной связи. Известны случаи использования этого метода.
С электронной почтой ситуация похожая - после успешного логина система формирует специальную ссылку, которую отправляет по e-mail. Мы переходим по этой ссылке и подтверждаем, что именно мы, а не кто-то другой, зашли в аккаунт.
В этом случае проблема может быть, если почтовый аккаунт также скомпрометирован. Но если это так, то ущерб возможен и для других аккаунтов, т.к. через почту очень часто можно сбросить текущий пароль и завладеть аккаунтом.
Одноразовые пароли
Чаще всего под двухфакторной аутентификацией понимается использование одноразовых паролей, меняющихся со временем. Работает он достаточно просто. При настройке двухфакторной аутентификации сервер генерирует секрет и отображает его. Мы открываем специальное приложение (Google Authenticator, Яндекс.Ключ или любое другое) и сохраняем этот секрет в нем. На современных смартфонах этот процесс сильно упрощен путем использования QR-кодов. После этого сервер и приложение знают общий секрет, на основе которого и формируется одноразовый пароль. Чаще всего пароль меняется каждые 30 секунд. Без знания секрета подобрать пароль практически невозможно.
Как восстановить доступ в случае утери?
У любого метода, который используется в качестве второго фактора есть проблема утери этого самого фактора. Например, вы могли забыть телефон, и теперь не можете получить СМС или сгенерировать одноразовый пароль.
При использовании одноразовых паролей есть несколько вариантов решения.
Первый - использовать СМС или электронную почту в качестве запасного варианта. Стойкость защиты всей системы сводится к стойкости самого слабого звена. Поэтому если у злоумышленников есть доступ к нашим СМС или электронной почте, то одноразовые пароли будут бесполезны.
Второй - использовать коды восстановления. Система генерирует набор таких кодов, и их можно использовать в качестве второго фактора. Этот вариант более надежный, но менее удобный. Нам нужно где-то надежно хранить эти коды. Например, можно их распечатать и носить с собой в кошельке или бумажнике. Что произойдет в случае компрометации базы данных? Напоследок я предлагаю Вам подумать над вопросом: защищают ли одноразовые пароли в случае, если злоумышленники получили содержимое базы данных сервера?
Спасибо за внимание. Всех с праздником Великой Победы.
До следующей недели.