После компрометации на уровне сервера каталога расширений Joomla (Joomla! Extensions Directory), команда JED предоставила сообществу краткую информацию о событиях, приведших к этой проблеме, ответы членов команды проекта Joomla, а также план действий по предотвращению подобных проблем в будущем.
Сразу хотим сказать, что это была предотвратимая уязвимость, и после анализа нет оснований полагать, что был получен неверный доступ к каким-либо пользовательским данным.
Уведомление о проблеме
Примерно в 09:30 UTC 15 мая 2019 года исследователи безопасности уведомили Joomla Security Strike Team (JSST) о том, что они обнаружили внутренний CI-сервер Jenkins, используемый JED для развертывания обновлений на своих живых и промежуточных веб-сайтах, и смогли использовать на нём эксплойт CVE-2018-1000861, предоставив скриншот конфиденциального файла в качестве доказательства эксплойта.
Получив уведомление, члены JSST работали с членами команды JED, чтобы отключить уязвимую систему Jenkins и провести анализ того, был ли этот сервер скомпрометирован другими способами.
Системный аудит
При расследовании компрометации сервера Jenkins было установлено, что на сервере установлен и работает крипто-майнер. Крипто-майнер - это программный скрипт, используемый для создания цифровых валют путем злоупотребления ресурсами сервера (ЦП и память).
Как часть установленного программного обеспечения, был найден сценарий, добавленный в crontab сервера, который мог пытаться подключиться к другим серверам в локальной сети и установить тот же майнер.
Поскольку сервер Jenkins использовался для развертывания обновлений сайта, сценарий смог получить доступ к рабочему JED-серверу и там его установить.
После того, как он был обнаружен на сервере JED, были немедленно предприняты шаги для перевода всех служб затронутых серверов в автономный режим. Для проведения полного анализа первопричин и начала выполнения плана восстановления, доступ был ограничен привилегированными лицами.
Параллельно были проверены другие серверы, на которых размещена архитектура joomla.org, чтобы убедиться, что они также не были скомпрометированы. Было установлено, что затронуты только серверы JED.
На рабочем сервере JED был проведен анализ, чтобы определить масштаб компрометации, в том числе, когда был взломан сервер и какие ресурсы могли быть доступны.
Анализ показал, что крипто-майнер был установлен вечером 11 мая 2019 года и что не было доказательств неправильного доступа к данным (включая доступ к загруженным пакетам расширений, отправленным в JED Checker и базе данных сайта).
После завершения анализа скомпрометированный сервер был выведен из эксплуатации. В место него был активирован сервер замены, на который была восстановлена резервная копия файлов от 10 мая 2019 года и база данных от 15 мая 2019 года.
Процесс восстановления был завершен 16 мая 2019 года. Команда JED приняла меры для повторного применения соответствующих действий пользователя, выполненных между датой резервного копирования и временем, когда было обнаружено, что JED был скомпрометирован.
План действий
В результате компрометации сервера были предприняты некоторые шаги для обеспечения безопасности серверов и данных пользователей.
Во-первых, планируется, что скомпрометированный сервер Jenkins будет окончательно выведен из эксплуатации, а JED будет перенесен на один из других CI-серверов, используемых Joomla для устранения избыточного ресурса.
Во-вторых, все административные права доступа (пароли уровня сервера и ключи SSH) были сброшены.
В-третьих, из-за предосторожности, все “Remember me”токены были признаны недействительными, и все зарегистрированные пользователи будут обязаны сбросить свои пароли.
Наконец, будут рассмотрены внутренние рабочие процессы и процедуры, а также усовершенствуем политики и функции безопасности, предоставляемые пользователям на всех поддоменах joomla.org (например, включение двухфакторной аутентификации на всех сайтах).
Вопросы и ответы
Вопрос: В чем причина компрометации?
Ответ: Сервер Jenkins, используемый для развертывания обновлений на рабочих и промежуточных веб-сайтах JED, не был обновлен для применения исправления безопасности, в результате чего сервер Jenkins и рабочий сервер JED были скомпрометированы.
Вопрос: Какова была цель компрометации?
Ответ: Согласно анализу, крипто-майнер был установлен вечером 11 мая 2019 года и работал до тех пор, пока не был обнаружен 15 мая 2019 года. Крипто-майнер использовал ресурсы сервера (ЦП и память) для майнинга цифровой валюты.
Вопрос: Почему не было применено исправление безопасности?
Ответ: Команда, ответственная за поддержание системы в актуальном состоянии, предполагала, что все службы, работающие на этих двух машинах, включая сервер Jenkins, поддерживаются и обновляются хостинговой компанией, и поэтому не знали, что необходимо предпринимать какие-либо действия. Однако система Jenkins не входила в рамки обслуживания хостинговой компанией, поэтому осталась без исправлений.
Вопрос: Какие данные были взломаны?
Ответ: В настоящее время нет доказательств в подтверждение того, что какие-либо данные были взломаны на сервере JED.
Эксплойт, использованный в атаке, не имел методов для произвольного выполнения команд, эксфильтрации данных или порождения бэкдора, и поэтому просто не имел кода для доступа к пользовательским данным, хранящимся в системах. Кроме того, никакие действия, выходящие за рамки обычной деятельности JED и деятельности майнинга, обнаружены не были. Тем не менее, в маловероятном случае раскрытия данных могли быть потенциально доступны следующие ресурсы:
- Загруженные пакеты расширений для списков JED из локальной файловой системы (используется для сканирования кода расширения с помощью инструмента JED Checker)
- Данные пользователя JED из базы данных
- Данные учетной записи пользователя (имя, адрес электронной почты, хешированный пароль bcrypt)
- Тикеты поддержки JED
- Списки данных JED (данные расширений, обзоры)
Опять же, в настоящее время нет доказательств в подтверждение раскрытия данных, но если что-то изменится, будут предоставлены дальнейшие обновления.
Вопрос: Что мне нужно сделать?
Ответ: Если у вас есть учетная запись пользователя на веб-сайте JED, вам потребуется сбросить пароль при следующем входе в систему. Поскольку учетные записи пользователей не являются общими для поддоменов joomla.org, это требование влияет только на ваш логин JED. Также рекомендуется изменить свой пароль на любых других веб-сайтах, где вы использовали такую же комбинацию имени пользователя и пароля, включая другие поддомены joomla.org. Пароли в Joomla хранятся с хешем bcrypt, и их нелегко угадать или взломать.
Вопрос: Безопасны ли загрузки расширений?
Ответ: Загрузка расширений не осуществляется с серверов JED и, следовательно, не скомпрометирована. Все загрузки расширений и связанные с ними транзакции покупки и / или подписки осуществляются на внешних сервисах, выбранных их разработчиками.
Вопрос: Безопасна ли моя установка Joomla?
Ответ: Это нарушение было обнаружено в стороннем программном обеспечении, используемом серверами JED, а не в самой Joomla.
Вопрос: Были ли потеряны какие-либо данные из-за восстановления старой резервной копии?
Ответ: Несмотря на то, что были предприняты шаги, чтобы гарантировать, что различия в данных были устранены, самые последние изменения (сделанные между примерно 11:00 UTC и 13:00 UTC) не были представлены в восстановленной резервной копии базы данных. Поэтому рекомендуется всем пользователям зайти в JED для проверки изменений, которые они внесли в период с 10 по 15 мая. Это включает в себя отправку новых расширений, обновление существующих расширений, обзоры расширений и заявки в службу поддержки.