
Инструментарий для обнаружения, нейтрализации и реверс-инжиниринга CVE-2026-41940 (SessionScribe): уязвимость подделки сессии без аутентификации в cPanel/WHM, раскрытая 2026-04-28. Активный шим нейтрализации для эшелонированной защиты, пакет правил ModSec, удалённый зонд, сканер IOC на хосте и коллектор RE-снимков для каждого уровня. GPL v2.
Критическая RCE без аутентификации в cPanel и WHM. Четыре HTTP-запроса создают поддельную root-сессию через CRLF-инъекцию в поле пароля preauth-сессии. Без аутентификации, без предусловий — затронуты все поддерживаемые тиры. Раскрыто 2026-04-28: Sina Kheirkhah / watchTowr Labs.
Быстрый старт · ioc-scan · mitigate · remote-probe · Затронутые сборки · Порядок приоритетов
[!IMPORTANT] Тиры 112, 114, 116, 120, 122, 128 не имеют патча от вендора. Каждая сборка на этих тирах уязвима; обновление или миграция — единственное надёжное решение. А пока: ограничьте порты TCP/2082, 2083, 2086, 2087, 2095, 2096 до management CIDR (
mitigate.sh --applyэто делает) и прикройте оставшуюся поверхность атаки набором правил ModSec.
Три однострочника, в порядке приоритета для оператора:```bash
curl -fsSL https://raw.githubusercontent.com/rfxn/cpanel-sessionscribe/main/sessionscribe-ioc-scan.sh | bash
curl -fsSL https://raw.githubusercontent.com/rfxn/cpanel-sessionscribe/main/sessionscribe-mitigate.sh | bash -s -- --apply
curl -fsSL https://raw.githubusercontent.com/rfxn/cpanel-sessionscribe/main/sessionscribe-remote-probe.sh | bash -s -- --target HOST
Коды выхода предназначены для автоматизации парка: `ioc-scan` завершается кодом `4` при
COMPROMISED, `1` при VULNERABLE; `mitigate` возвращает `0` чисто / `1` применено
/ `2` вручную / `3` ошибка инструмента; `remote-probe` возвращает `2`, если любая цель —
VULN.
---
## Инструменты
В порядке операционной приоритетности. Каждый артефакт выдаёт структурированный вывод
(`--json` / `--jsonl` / `--csv`) с ключами `host`, `os`, `cpanel_version`,
`ts` для сводки по парку.
| Инструмент | Роль | Где запускается |
|---|---|---|
| **[`sessionscribe-ioc-scan.sh`](#sessionscribe-ioc-scansh---ioc-ladder--kill-chain)** | Основной триаж. Лестница IOC, вердикты о состоянии кода и хоста, реконструкция kill-chain, IR-пакет. | на хосте cPanel |
| **[`sessionscribe-mitigate.sh`](#sessionscribe-mitigatesh---mitigation-orchestrator)** | Закрывает окно атаки. Поэтапная митигация: проверка патчей, firewall, proxysub, ModSec. | на хосте cPanel |
| **[`sessionscribe-remote-probe.sh`](#sessionscribe-remote-probesh---non-destructive-fleet-probe)** | Вспомогательное средство. Неразрушающий 4-этапный зонд → VULN/SAFE для каждого хоста. | где угодно с `curl` |
| [`modsec-sessionscribe.conf`](#supporting-collateral) | Пакет правил ModSec, разворачиваемый `mitigate`. | Apache front-end |
| [`sessionscribe-revsnap.sh`](#supporting-collateral) | Сборщик RE-снимков по уровням для сравнения бинарных файлов. | на хосте cPanel, около `upcp` |
GPL v2. Все артефакты готовы к загрузке через `curl` по raw-URL, указанным выше.
---
## `sessionscribe-ioc-scan.sh` - IOC-лестница + kill-chain
**Запускайте первым.** По умолчанию — только детектирование (быстро, удобно для парка);
добавьте `--full`, чтобы запустить фазы форензики в одном потоке (таймлайн защиты, импорт
данных об атаке, сверка, рендерер kill-chain, IR-пакет).```bash
# fast triage (detection only)
curl -fsSL https://raw.githubusercontent.com/rfxn/cpanel-sessionscribe/main/sessionscribe-ioc-scan.sh | bash
# full kill-chain reconstruction inline
curl -fsSL https://raw.githubusercontent.com/rfxn/cpanel-sessionscribe/main/sessionscribe-ioc-scan.sh | bash -s -- --full
# full + ship IR bundle to intake
curl -fsSL https://raw.githubusercontent.com/rfxn/cpanel-sessionscribe/main/sessionscribe-ioc-scan.sh | bash -s -- --full --upload
# JSONL for SIEM ingest
curl -fsSL https://raw.githubusercontent.com/rfxn/cpanel-sessionscribe/main/sessionscribe-ioc-scan.sh | bash -s -- --jsonl --quiet > host.jsonl
# host IOCs only - periodic post-patch sweep, last 7 days
curl -fsSL https://raw.githubusercontent.com/rfxn/cpanel-sessionscribe/main/sessionscribe-ioc-scan.sh | bash -s -- --ioc-only --since 7
# replay forensic phases against a saved envelope (no re-scan)
curl -fsSL https://raw.githubusercontent.com/rfxn/cpanel-sessionscribe/main/sessionscribe-ioc-scan.sh | bash -s -- --replay /var/cpanel/sessionscribe-ioc/<run_id>.json
Две оси выдают вердикты независимо. code_verdict (PATCHED /
VULNERABLE / INCONCLUSIVE) формируется на основе версии, Perl-шаблонов исходного кода
и бинарного отпечатка cpsrvd. host_verdict (CLEAN /
SUSPICIOUS / COMPROMISED) формируется на основе лестницы IOC в файлах сессий,
сканирования журналов доступа и зондов уничтожения Patterns A–G. Даже пропатченный хост
может завершиться с кодом 4, если прежняя эксплуатация оставила IOC на диске.
| Код выхода | Состояние кода | Состояние хоста | Действие при триаже |
|---|---|---|---|
| 0 | CLEAN/PATCHED | CLEAN | нет |
| 1 | VULNERABLE | (любое) | пропатчить cpsrvd |
| 2 | INCONCLUSIVE | (любое) | ручная проверка состояния кода (также: ошибка инструмента) |
| 3 | (любое) | SUSPICIOUS | просмотреть журналы сессий/доступа |
| 4 | (любое) | COMPROMISED | полный IR; комплект + загрузка |
Сеансы, помеченные nxesec_canary_<nonce> (оставленные удалённым зондом),
относятся к категории PROBE_ARTIFACT и не переходят в COMPROMISED.
--full сопоставляет каждый IOC с активациями защиты и классифицирует
каждый из них как PRE-DEFENSE, POST-DEFENSE, POST-PARTIAL или
UNDEFENDED, после чего подводит итог в виде вердикта и заголовка о задержке защиты.
PRE-DEFENSE = хост был открыт для эксплойта, когда индикатор оказался в системе;
POST-DEFENSE = сопутствующий ущерб или шум до применения защитных мер.```
+-- CVE-2026-41940 / IC-5790 --------------------------------------------
| host cpanel.example.com ()
| cpanel unknown os unknown
| verdict COMPROMISED score 315 ioc-scan v2.5.0
| defenses patch x absent modsec + up csf + clean mitigate + ran
+------------------------------------------------------------------------