Недавнее исследование компании Trend Micro выявило, что злоумышленники могут использовать консоль сценариев Jenkins для запуска вредоносных скриптов, направленных на майнинг криптовалют. Это возможно при неправильной настройке аутентификации, что открывает доступ к консоли и позволяет выполнять удалённый код (RCE).
Jenkins, являясь открытым решением для непрерывной интеграции и доставки (CI/CD), предоставляет широкие возможности для автоматизации разработки программного обеспечения. Однако неправильные настройки серверов и устаревшие версии Jenkins могут стать целью для хакеров, стремящихся запустить криптомайнеры и другие вредоносные программы.
Консоль сценариев в Jenkins позволяет администраторам и авторизованным пользователям выполнять скрипты на языке Groovy с привилегиями системы. В случае неправильной настройки аутентификации, злоумышленники могут получить доступ к этой консоли и использовать её для запуска вредоносных скриптов.
Злоумышленники часто используют такие инструменты, как Shodan, для поиска уязвимых серверов Jenkins, доступных в интернете. Исследование показало, что многие из этих серверов не защищены должным образом и могут быть использованы в реальных атаках. Хотя не все публично доступные серверы Jenkins уязвимы, они вполне могут стать точками входа для хакеров.
В своих атаках злоумышленники внедряют в систему закодированный на Base64 скрипт, который запускается через консоль сценариев Jenkins. Этот скрипт проверяет, запускается ли он в среде BusyBox, и, если да, завершает работу. Затем скрипт ищет директории с разрешениями на запись, чтобы скачать и запустить криптомайнер.
Скрипт включает функцию проверки доступных ресурсов системы для эффективного майнинга. Он идентифицирует и завершает процессы, которые потребляют более 90% ресурсов ЦП, что позволяет освободить ресурсы для работы майнера. В случае отсутствия подходящих директорий, скрипт использует директорию /tmp и создаёт поддиректорию с максимальными разрешениями для выполнения операций.
Для поддержания работы майнера злоумышленники используют задания cron и утилиту systemd-run. Задания cron обеспечивают регулярный запуск майнера, а systemd-run следит за тем, чтобы майнер запускался каждый час. Эти методы гарантируют, что майнер будет работать непрерывно, несмотря на возможные перезапуски системы.
Cron-задания используют утилиту flock для блокировки файла, чтобы гарантировать, что только одна копия майнера работает в любой момент времени. Сценарий также удаляет все дублирующиеся записи cron, чтобы предотвратить многократный запуск майнера.
Чтобы защитить свои инстансы Jenkins от подобных атак, рекомендуется следовать следующим лучшим практикам:
- Использовать функцию одобрения сценариев, предоставляемую Jenkins. Это ограничит выполнение неизвестных или потенциально вредоносных скриптов.
- Настроить правильные политики аутентификации и авторизации для доступа к веб-консоли. Следует использовать рекомендации Jenkins по управлению доступом.
- Включить функцию аудита логов для отслеживания действий на сервере и выявления подозрительной активности.
- Ограничить доступ к серверам Jenkins из интернета, чтобы предотвратить несанкционированный доступ.
Jenkins предоставляет мощные возможности для автоматизации разработки программного обеспечения, но эти же возможности могут использоваться злоумышленниками при неправильной настройке системы. Организации должны тщательно следить за настройками безопасности, регулярно обновлять программное обеспечение и проводить аудиты для защиты своих Jenkins-серверов.