Если заголовок вызывает у кого-то легкое ощущение дежавю, совсем неудивительно. В марте 2016 года израильская компания StartCom, которой принадлежит сервис StartSSL и проект по выдаче бесплатных SSL-сертификатов всем желающим StartEncrypt, уже страдала от аналогичной проблемы.
Теперь ситуация повторяется: эксперты датской фирмы CompuTest сообщили, что StartEncrypt содержит ряд уязвимостей, эксплуатируя которые, злоумышленники могут получить сертификат для любого домена, который им не принадлежит.
Инициатива StartEncrypt была запущена в начале июня текущего года, разработчики вдохновились примером коллег, создавших Let’s Encrypt. Проект предоставил всем желающим возможность получить бесплатный SSL-сертификат, для применения которого понадобится только скачать и установить собственный Linux-клиент компании. Посредством клиента осуществляется процесс валидации домена: данные передаются StartSSL, после чего создается сертификат для домена, который работает на только что проверенном сервере,
Казалось бы, система продумана неплохо, однако специалисты CompuTest утверждают, что процесс валидации небезопасен. Злоумышленники могут получить сертификаты для чужих доменов, в том числе для доменов крупных компаний, таких как Facebook, Google, Dropbox и так далее. Затем эти сертификаты могут быть перепроданы на черном рынке или использованы для man-in-the-middle атак.
Первая проблема заключается в том, что клиент StartEncrypt позволяет пользователю вручную изменить конфигурацию и задать директорию, из которой будет подгружена сигнатура сервера. Атакующие могут обмануть систему, подменив сигнатуру на сигнатуру другого домена. Атаковать таким способом можно любой сайт, который разрешает пользователям загружать контент: GitHub, Dropbox и так далее.
Вторая проблема еще серьезнее, так как с ее помощью злоумышленники могут получить сертификат практически для любого домена. Когда API производит верификацию, он работает с параметром «verifyRes», то есть воспринимает редиректы. Если URL снабжен параметром «verifyRes» и ведет на другой URL, API проследует по ссылке, пока не получит то, что ищет. Это означает, что клиент открыт для уязвимостей Open Redirect. Проще говоря, атакующие могут подделать запрос и провести процедуру валидации для любого сервера вообще.
Исследователи пишут, что эту брешь не так-то легко эксплуатировать. URL домена, который использует атакующий, должен отвечать одному из условий. По ссылке либо должна присутствовать возможность загружать файлы и возможность скачивать их. Либо здесь тоже понадобится собственная уязвимость Open Redirect. Впрочем, второе условие соблюсти проще: фактически все сайты с поддержкой OAuth 2.0 должны поддерживать открытые редиректы, чтобы протокол функционировал нормально. Используя эту особенность OAuth 2.0 и клиент StartEncrypt, атакующие могут обмануть сервис StartSSL, заставив его выдать бесплатный сертификат для любого сайта, поддерживающего OAuth 2.0.
Помимо двух вышеописанных проблем, специалисты также обнаружили ряд багов калибром поменьше. Исследователи пришли к выводу, что клиент StartEncrypt не проверяет даже сертификат собственного сервера, когда соединяется с API. Также API не проводит проверку типа содержимого для файлов, которые скачивает во время верификации. Это позволяет злоумышленникам получить сертификат от имени любого сайта, который разрешает пользователям загрузку аватаров. Кроме того приватный ключ сертификата хранится с правами доступа 0666 в публичной директории, где достать его может кто угодно. Разработчики StartEncrypt, к тому же, не учли опыт коллег из Let’s Encrypt, так что сервис уязвим для атак типа Duplicate-Signature Key Selection.
«Мы считаем, что StartCom совершила ошибку, представив StartEncrypt в текущем виде, — пишут исследователи. — Хотя они оценили проблемы по степени их серьезности и отреагировали [на наши сообщения] быстро, очевидно, что безопасности уделялось очень мало внимания, как в ходе разработки (пользователь может подменить путь вручную), так и в конечной реализации. Более того, они не учли даже те проблемы, с которыми LetsEncrypt столкнулся еще на стадии бета-теста».
Компания StartCom уже представила новую версию Linux-клиента StartEncrypt, где описанные исследователями проблемы были устранены. Номер версии остался прежним: 1.0.0.1. Специалисты CompuTest подчеркивают, что это далеко не все найденные ими баги, — компания еще работает над устранением других уязвимостей, которые закроют в следующих обновлениях.
Пользователь Хабра под ником virtual-anvil обнаружил опасную ошибку в Telegram Desktop для Windows: мессенджер рекурсивно очищал папку C:\custom, где хранились программы, проекты и другие данные общим объёмом около 800 ГБ.
Сначала перестали запускаться приложения — их EXE-файлы просто исчезли. Папки оставались, а содержимое постепенно растворялось.
Проверка через Process Monitor показала, что Telegram самостоятельно открывал C:\custom, обходил вложенные каталоги и запрашивал права на удаление файлов.
Причиной оказалась не вредонос и даже не апдейтер, решивший выйти из-под контроля, а библиотека проверки орфографии lib_spellcheck. Telegram хранит добавленные пользователем слова в файле custom. После изменений в версии 7.1.0 Windows-код начал обращаться к этому словарю, но путь к рабочей папке оставался пустым.
К пустой строке добавлялось /custom, а Qt превращал её в C:\custom. Код ожидал увидеть служебный файл, находил вместо него каталог и запускал removeRecursively(), методично удаляя всё доступное.
Ошибка затронула Telegram Desktop 7.1.0 и 7.1.1 для Windows со встроенной проверкой орфографии. Версии находились в распространении около 66 часов. На Linux и macOS такую цепочку не обнаружили.
Пользователь передал разработчикам логи и открыл тикет № 31170. Ошибку подтвердили и исправили: путь теперь задаётся до выхода из функции, а библиотеке запретили работать со словарём при пустом адресе. Патч вошёл в Telegram Desktop 7.1.2.
Владельцам версий 7.1.0 и 7.1.1 на Windows стоит немедленно обновиться.
Свидетельство о регистрации СМИ ЭЛ № ФС 77 - 68398, выдано федеральной службой по надзору в сфере связи, информационных технологий и массовых коммуникаций (Роскомнадзор) 27.01.2017 Разрешается частичное использование материалов на других сайтах при наличии ссылки на источник. Использование материалов сайта с полной копией оригинала допускается только с письменного разрешения администрации.