Одноразовое обнаружение и устранение последствий для серверов cPanel/WHM, скомпрометированных через CVE-2026-41940, включая проверки IOC, очистку от вредоносного ПО, блокировку C2 и установку исправлений.
Одношаговое обнаружение и устранение последствий для серверов cPanel/WHM, скомпрометированных через CVE-2026-41940 и кампанию ботнета
nuclear.x86.
28 апреля 2026 года cPanel раскрыла информацию об уязвимости обхода аутентификации без предварительной аутентификации (CVE-2026-41940, CVSS 9.8), затрагивающей все поддерживаемые версии cPanel и WHM после 11.40. Один HTTP-запрос к порту 2087 позволяет неаутентифицированному злоумышленнику внедрить сессию user=root и получить прямой доступ к WHM.
Эксплуатация наблюдается в дикой природе как минимум с 23 февраля 2026 года — за шесть недель до выхода патча. Кампания, которую мы устраняли на нескольких серверах, устанавливает Linux-ботнет под названием nuclear.x86 вместе с крипто-майнером на базе XMRig.
Этот репозиторий содержит один Bash-скрипт, который:
/scripts/upcp --forceСкрипт предназначен для хостинг-провайдеров, системных администраторов и реселлеров cPanel, которым необходимо быстро провести триаж парка серверов.
Если wget или curl возвращают Killed при попытке загрузки, вредоносное ПО всё ещё работает — nuclear.x86 активно убивает инструменты загрузки, чтобы предотвратить очистку. Сначала выполните шаг уничтожения (скрипт делает это за вас в режиме --fix).
Если вы не можете загрузить этот скрипт по этой причине, скопируйте и вставьте его через SSH с вашего ноутбука или используйте scp.
# От root, на сервере cPanel:
cd /root
wget https://raw.githubusercontent.com/shahidmallaofficial/cpanel-cve-2026-41940-fix/main/fix-cpanel-cve-2026-41940.sh
chmod +x fix-cpanel-cve-2026-41940.sh
Или с помощью curl:
cd /root
curl -fsSLO https://raw.githubusercontent.com/shahidmallaofficial/cpanel-cve-2026-41940-fix/main/fix-cpanel-cve-2026-41940.sh
chmod +x fix-cpanel-cve-2026-41940.sh
Одной строкой (сначала просмотрите скрипт, затем запускайте):
cd /root && \
curl -fsSLO https://raw.githubusercontent.com/shahidmallaofficial/cpanel-cve-2026-41940-fix/main/fix-cpanel-cve-2026-41940.sh && \
chmod +x fix-cpanel-cve-2026-41940.sh && \
less fix-cpanel-cve-2026-41940.sh
# После просмотра запустите его:
./fix-cpanel-cve-2026-41940.sh
Проверьте перед запуском. Этот скрипт выполняется от root и изменяет состояние системы. Откройте и прочитайте его сначала. Не передавайте случайные скрипты из интернета напрямую в
bash.
# 1. Только сканирование (по умолчанию, без изменений — всегда безопасно запускать)
./fix-cpanel-cve-2026-41940.sh
# 2. Сканирование + устранение последствий, с запросом подтверждения для каждого деструктивного действия
./fix-cpanel-cve-2026-41940.sh --fix
# 3. Полная автоматизация: исправление + обновление cPanel + очистка кэша + лёгкое усиление защиты
./fix-cpanel-cve-2026-41940.sh --auto
# 4. Без участия оператора (без запросов — для cron, jump-box, скриптов управления парком)
./fix-cpanel-cve-2026-41940.sh --auto -y
# 5. Справка
./fix-cpanel-cve-2026-41940.sh --help
| Код | Значение |
|---|---|
0 | Чисто — IOC не обнаружены |
2 | Обнаружены индикаторы компрометации (просмотрите отчёт) |
1 / другие | Ошибка предварительной проверки (не root, не сервер cPanel и т. д.) |
/var/log/cpanel-cve-fix/scan-<TIMESTAMP>.log/var/log/cpanel-cve-fix/report-<TIMESTAMP>.txt/root/cve-cleanup-backup-<TIMESTAMP>/| № | Проверка | Что обнаруживает |
|---|---|---|
| 1 | Сборка cPanel против пропатченных релизов | Уязвимые хосты (перечисляет все 6 пропатченных сборок) |
| 2 | Запущенные процессы | nuclear.x86, xmrig, cpuminer, minerd, xmr-stak, 4thepool_miner |
| 3 | Активные сетевые соединения | Три известных C2-IP + порты майнинг-пулов |
| 4 | Файлы истории команд | IOC-команды в bash_history / zsh_history |
| 5 | Проверка межсетевого экрана | Шаг саботажа iptables -F |
| 6 | Каталог сырых сессий cPanel | Поддельные файлы сессий user=root |
| 7 | /tmp, /var/tmp, /dev/shm | Недавно размещённые исполняемые файлы |
| 8 | Записи cron | Персистентность (системная + для каждого пользователя) |
| 9 | Файлы authorized_keys | Новые SSH-ключи — аудит только на чтение |
| 10 | Журналы доступа cPanel | Сигнатуры эксплойта Go-http-client / python-requests |
| 11 | Критически важные бинарники | Изменённые wget / curl / ls / ps (проверка mtime + RPM) |
/var/cpanel/sessions/raw/* (с предварительным резервным копированием в tar.gz)cpsrvd, cpdavd, cphulkd, queueprocd, dnsadmin/scripts/upcp --force (только в --auto)rndc flush), старые журналыLF_INTEGRITY, если доступноЭти действия принесли бы больше вреда, чем пользы, при запуске без участия оператора через SSH, поэтому они попадают в отчёт о ручных действиях:
/home/*/public_htmlДля массовой проверки множества серверов с jump-box:
mkdir -p reports
while read -r host; do
echo "=== $host ==="
scp fix-cpanel-cve-2026-41940.sh "root@${host}:/root/" >/dev/null
ssh "root@${host}" '/root/fix-cpanel-cve-2026-41940.sh --auto -y'
scp "root@${host}:/var/log/cpanel-cve-fix/report-*.txt" "reports/${host}.txt" 2>/dev/null
done < servers.txt
Затем выполните поиск по отчётам:
grep -l "COMPROMISE INDICATORS PRESENT" reports/*
Скрипт перечислит их в своём отчёте. Ни одно из них нельзя безопасно автоматизировать.
/etc/shadow)wp-config.php, .env, config.php и т. д./home/*/public_html на наличие веб-шеллов (недавно изменённые .php файлы)Вы должны быть на одной из этих сборок или выше:
| Трек | Пропатченная сборка |
|---|---|
| 110.0.x | 11.110.0.97 |
| 118.0.x | 11.118.0.63 |
| 126.0.x | 11.126.0.54 |
| 132.0.x | 11.132.0.29 |
| 134.0.x | 11.134.0.20 |
| 136.0.x | 11.136.0.5 |
| WP² | 11.136.1.7 |
Проверьте свою версию с помощью /usr/local/cpanel/cpanel -V.
| Тип | Индикатор |
|---|---|
| IP | 87.121.84.78 (загрузчик nuclear.x86) |
| IP | 45.148.120.23 (альтернативный загрузчик nuclear.x86) |
| IP | 31.57.109.131 (скрипт майнера) |
| Файл | nuclear.x86 (ELF-производное от Mirai) |
| Процесс | nuclear.x86 xd |
| Скрипт | 4thepool_miner.sh |
| User-Agent | Go-http-client/1.1 обращающийся к порту 2087 |
| User-Agent | python-requests/* обращающийся к порту 2087 |
| Паттерн | Новый файл в /var/cpanel/sessions/raw/, содержащий user=root без соответствующего успешного входа в login_log |
| Паттерн | Пустой / очищенный набор правил iptables |
Безопасно ли запускать на здоровом сервере? Да. Режим по умолчанию — только сканирование и не вносит изменений. Режимы исправления и автоматизации идемпотентны.
Вызовет ли это простой?
--fix вызывает кратковременное прерывание работы WHM/cPanel при перезапуске cpsrvd (~10 секунд). --auto запускает /scripts/upcp --force, что может занять 10–30 минут — веб-сайты остаются доступными в это время, но WHM кратковременно недоступен в конце.
Моя версия cPanel отсутствует в списке пропатченных — я в безопасности? Если вы на треке старше 110.0.x, вы используете версию с завершённым жизненным циклом. cPanel не выпустит патч. Считайте хост скомпрометированным, пока не доказано обратное, и срочно обновитесь.
Скрипт сообщает Killed, когда пытается что-либо сделать.
Это nuclear.x86 активно убивает ваши инструменты. Сначала выполните шаг уничтожения вручную:
pkill -9 -f nuclear.x86
Затем повторно запустите скрипт.
Работает ли это на AlmaLinux / Rocky / CloudLinux / CentOS? Да — на всех стандартных платформах cPanel. Протестировано на AlmaLinux 8, Rocky 9, CloudLinux 7+.
Затронет ли это веб-сайты моих клиентов?
Нет. Скрипт не изменяет ничего в /home/*/public_html. Он затрагивает только конфигурацию уровня ОС, сессии cPanel, правила межсетевого экрана и известные вредоносные процессы.
Приветствуются pull request'ы — особенно для:
Пожалуйста, не добавляйте ничего, что автоматически ротирует учётные данные или удаляет пользовательские данные — намеренное ограничение деструктивной поверхности является осознанным решением.
MIT. Используйте, форкайте, интегрируйте в свои собственные инструменты. Указание авторства приветствуется, но не обязательно.
Создано WHMCSPilot.com — SM.
Авторы исследования уязвимости: команда безопасности cPanel, watchTowr Labs, Rapid7, KnownHost и более широкое хостинг-сообщество, которое делилось IOC по мере развития кампании.
Этот скрипт предоставляется как есть, без каких-либо гарантий. Это инструмент первичного реагирования — не замена полноценного взаимодействия по реагированию на инциденты. Если вы обрабатываете PII, платёжные данные или другие регулируемые данные, проконсультируйтесь со своим DPO и квалифицированной фирмой по реагированию на инциденты, прежде чем объявлять скомпрометированный сервер чистым.
Если сервер был активно скомпрометирован, самый безопасный путь — всегда пересборка из известной хорошей резервной копии, а не очистка на месте.