
CVE-2026-41940 (SessionScribe) 向けの検出、緩和、リバースエンジニアリングツール群: 2026-04-28 に公開された cPanel/WHM の未認証セッション偽造の脆弱性に対応。多層防御に基づくアクティブ緩和シム、ModSec ルールパック、リモートプローブ、オンホスト IOC スキャナ、および層別 RE スナップショットコレクタ。GPL v2。
cPanel & WHM における、認証不要の重大な RCE。 4 つの HTTP リクエストで、preauth セッションのパスワードフィールドへの CRLF インジェクションにより root セッションを偽造します。 認証も前提条件も不要で、サポートされているすべてのティアに影響します。 2026-04-28 に Sina Kheirkhah / watchTowr Labs によって公開されました。
Quickstart · ioc-scan · mitigate · remote-probe · Affected builds · Priority order
[!IMPORTANT] ティア 112、114、116、120、122、128 にはベンダーパッチがありません。 これらのティアの すべてのビルドが影響を受けます。恒久的な修正はアップグレードまたは移行のみです。 それまでの間: TCP/2082、2083、2086、2087、2095、2096 を管理 CIDR に ファイアウォールで制限し (
mitigate.sh --applyがこれを実行します)、 残りの攻撃面は ModSec ルールパックで保護してください。
オペレーター優先順位による 3 つのワンライナー:```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
Exit codes are designed for fleet automation: `ioc-scan` exits `4` on
COMPROMISED, `1` on VULNERABLE; `mitigate` exits `0` clean / `1` applied
/ `2` manual / `3` tool error; `remote-probe` exits `2` if any target is
VULN.
---
## ツール
運用優先度の順です。すべてのアーティファクトは、フリート集約用に `host`、`os`、`cpanel_version`、`ts` をキーとした構造化出力(`--json` / `--jsonl` / `--csv`)を出力します。
| Tool | Role | Where it runs |
|---|---|---|
| **[`sessionscribe-ioc-scan.sh`](#sessionscribe-ioc-scansh---ioc-ladder--kill-chain)** | First-class triage. IOCラダー、コード状態 + ホスト状態の判定、キルチェーン復元、IRバンドル。 | cPanelホスト上 |
| **[`sessionscribe-mitigate.sh`](#sessionscribe-mitigatesh---mitigation-orchestrator)** | 侵入の窓を閉じる。段階的緩和: パッチ確認、ファイアウォール、プロキシ置換、ModSec。 | cPanelホスト上 |
| **[`sessionscribe-remote-probe.sh`](#sessionscribe-remote-probesh---non-destructive-fleet-probe)** | 補助的資料。非破壊的な4段階プローブ → ホストごとに VULN/SAFE。 | `curl` が使える任意の場所 |
| [`modsec-sessionscribe.conf`](#supporting-collateral) | `mitigate` によって展開される ModSec ルールパック。 | Apache フロントエンド |
| [`sessionscribe-revsnap.sh`](#supporting-collateral) | バイナリ差分のための階層別 RE スナップショット収集ツール。 | cPanelホスト上、`upcp` の前後 |
GPL v2。すべてのアーティファクトは、上記の raw URL から `curl` で取得できます。
---
## `sessionscribe-ioc-scan.sh` - IOCラダー + キルチェーン
**最初にこれを実行してください。** デフォルトでは検出のみ(高速、フリート向き)。
`--full` を追加すると、フォレンジックフェーズをインラインで実行します(ディフェンスタイムライン、オフェンス取り込み、調整、キルチェーン描画、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
2つの軸が独立して報告されます。code_verdict(PATCHED / VULNERABLE / INCONCLUSIVE)は、バージョン、Perlソースパターン、およびcpsrvdバイナリフィンガープリントから得られます。host_verdict(CLEAN / SUSPICIOUS / COMPROMISED)は、セッションファイルのIOCラダー、アクセスログスキャン、およびパターンA~Gの破壊プローブから得られます。パッチ適用済みのホストでも、過去の悪用によってIOCがディスク上に残っている場合、終了コード4で終了することがあります。
| 終了コード | コード状態 | ホスト状態 | トリアージアクション |
|---|---|---|---|
| 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
+------------------------------------------------------------------------
| -- PRE-DEFENSE (32 events) -- | 2026-03-25T09:43:19Z ! pattern X ioc_attacker_ip_2xx_on_cpsess 57 hit(s) (last 90d) from IC-5790 IPs returned 2xx on /cpsess/ paths - real exploitation | 2026-04-28T14:35:56Z ! pattern X ioc_cve_2026_41940_crlf_access_chain 15 CRLF-bypass chain(s) — POST /login 401 then GET /cpsess 2xx as root within 2s | 2026-04-28T16:38:45Z ! pattern E ioc_pattern_e_websocket_shell_hits 45 external IP(s) reached /cpsess*/websocket/Shell with 2xx | 2026-04-29T08:41:22Z ! pattern F ioc_pattern_f_smark_envelope S_MARK/E_MARK harvester envelope in /root/.bash_history | 2026-04-29T16:41:24Z ! pattern A ioc_pattern_a_ransom_readme /home/user1/README.md | … (22 more Pattern A ransom_readme events across customer homedirs) | 2026-04-29T16:42:09Z ! pattern A ioc_pattern_a_sorry_files_present 608 .sorry-encrypted files present | 2026-04-29T17:52:58Z ! pattern D ioc_pattern_d_acctlog_encrypted /var/cpanel/accounting.log.sorry
| -- DEFENSES -- | 2026-04-29T23:48:21Z + DEFENSE mitigate_first sessionscribe-mitigate.sh first run | 2026-04-29T23:48:21Z + DEFENSE csf csf.conf cpsrvd ports stripped | 2026-04-29T23:48:46Z + DEFENSE modsec modsec rule 1500030 installed
| -- POST-PARTIAL (1 event) -- | 2026-04-30T12:23:42Z ! pattern E ioc_pattern_e_handoff_burst_present 3 distinct external IPs each minted cpsess + reached websocket Shell within 15-min window
| HEADLINE | verdict COMPROMISED (score 315) | defense lag 37d 9h LATE (first IOC 2026-03-25T09:43:19Z, defense up 37d 9h later)
<details>
<summary><b>チェックリファレンス + フォレンジックフェーズ + バンドルレイアウト</b> (クリックして展開)</summary>