
CVE-2026-28318 に対する安全で 破壊的ではない 検出器です。これは SolarWinds Serv-U <= 15.5.4.108 における認証不要のサービス拒否脆弱性です。Content-Encoding: deflate を含む単一の POST とボディにより、そのボディがメモリ上の deflate 展開器 (CZLibCompression) に送られます。この展開器のバッファ管理が無効な free() を実行し、Serv-U サービスプロセスを異常終了させます。(CVSS 7.5、AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H、CWE-763)
このスクリプトは ターゲットをクラッシュさせません。 ホストごとに1つの質問に答えます。15.5.4 HF1 修正が欠けているか? それが CVE-2026-28318 に対してサーバが脆弱かどうかの正確な代理指標となります。
はい。これがこのツールの目的であり、本番環境に対して実行しても安全です。
deflate を決して送信しません。 deflate は、脆弱な展開器を起動する 唯一の Content-Encoding 値です。このスクリプトは、無害な Content-Encoding: identity と短いボディを持つ単一の POST を送信するため、クラッシュコードパスには到達しません。15.5.4.125) は、ボディがあり、かつ空でない Content-Encoding を持つ 任意の リクエストを 415 Unsupported Media Type で拒否します。脆弱なビルドにはそのようなゲートがなく、identity プローブを通常どおり処理します。したがって、判定はステータスコードのみに基づき、サービスが不安定になることは決してありません。スクリプトはサイトルートに対して1つの安全な POST を送信し、ステータスコードを読み取ります。
ターゲットはプローブ応答自体の Server ヘッダから Serv-U として識別されるため、別途識別リクエストは不要です。
修正が欠けていることを証明します。サービスをクラッシュさせて確認するわけではありません。
VULNERABLE判定は、HF1 入力検証ゲートが存在しないことを意味し、これがこの CVE の正確な代理指標です。スクリプトは意図的にそこで止まり、クラッシュさせるdeflate値を送信することはありません。
# 単一ホスト(スキームはデフォルトで https://)
./cve_2026_28318_check.py 10.0.0.5
# 明示的な URL / ポート
./cve_2026_28318_check.py https://10.0.0.5:443
# 複数ホストを同時に
./cve_2026_28318_check.py host-a:443 host-b https://host-c
# リストをスキャン(1行1ターゲット、'#' コメント可)、コンパクト出力
./cve_2026_28318_check.py -f targets.txt --brief
# パイプライン向け機械可読出力
./cve_2026_28318_check.py -f targets.txt --json > results.json
脆弱な Serv-U サーバ([!] マーカーと VULNERABLE は TTY 上で赤く表示されます):
$ ./cve_2026_28318_check.py https://10.0.0.5
[!] https://10.0.0.5: VULNERABLE [missing-415-gate]
Serv-U が identity プローブに対して 401(415 ではなく)を返しました。したがって、HF1 415 ゲートは存在せず(ビルド <= 15.5.4.108)、CVE-2026-28318 は未パッチです。これは修正が欠けていることを証明します。サービスをクラッシュさせるものではありません。15.5.4 HF1(ビルド 15.5.4.125+)を適用してください。
パッチ適用済みサーバ は PATCHED を返します(HF1 415 ゲートが identity プローブに応答しました):
$ ./cve_2026_28318_check.py https://10.0.0.6
[+] https://10.0.0.6: PATCHED [hf1-415-gate]
Serv-U が identity プローブに対して 415 を返しました。したがって、15.5.4 HF1 入力検証ゲートが存在します(ビルド >= 15.5.4.125)。CVE-2026-28318 に対して脆弱ではありません。
リストをスキャン、ホストごとに1行の整列出力(--brief)。1 つでも VULNERABLE があれば終了コードは 1、なければ 0 となり、スクリプト内で便利です:
$ ./cve_2026_28318_check.py -f targets.txt --brief; echo "exit: $?"
VULNERABLE https://10.0.0.5 missing-415-gate
PATCHED https://10.0.0.6 hf1-415-gate
NOT-SERV-U https://10.0.0.7 not-servu
ERROR https://10.0.0.8 no-response
exit: 1
パイプライン向け機械可読出力(--json):
$ ./cve_2026_28318_check.py https://10.0.0.5 --json
[
{
"target": "https://10.0.0.5",
"verdict": "VULNERABLE",
"reason": "missing-415-gate",
"detail": "Serv-U returned 401 (not 415) to the identity probe, so the HF1 415 gate is ABSENT (build <= 15.5.4.108) and CVE-2026-28318 is unpatched. This proves the fix is missing; it does NOT crash the service. Apply 15.5.4 HF1 (build 15.5.4.125+)."
}
]
| コード | 意味 |
|---|---|
0 | VULNERABLE なターゲットなし |
1 | 少なくとも1つのターゲットが VULNERABLE |
2 | 使用法エラー(引数が不正 / ターゲットファイルが読み取れない) |
Server ヘッダを除去(NOT-SERV-U として報告)したり、独自の 415 で応答(誤った PATCHED の可能性)することがあります。可能な限り、ツールを Serv-U 管理インターフェースに直接向けてください。VULNERABLE 判定は HF1 入力検証修正が欠けていることを証明します。クラッシュを示すわけではありません(意図的な設計)。そのゲートはこの CVE の正確な代理指標です。SolarWinds Serv-U 15.5.4 Hotfix 1(ビルド 15.5.4.125) 以降にアップグレードしてください。これにより、ボディと空でない Content-Encoding の両方を持つリクエストを拒否する入力検証ゲートが追加されます。パッチを適用できるまでは、Serv-U サービスへのネットワークアクセスを信頼できるソースに制限してください。
このコードは MIT ライセンス の下で配布されています。
事前の相互同意なくターゲットを攻撃するためにこのツールを使用することは違法です。該当するすべての地域、州、連邦法を遵守するのはエンドユーザの責任です。開発者は一切の責任を負わず、このプログラムによって引き起こされた誤用や損害について責任を負いません。
identity プローブ応答 | 判定 | 意味 |
|---|
Serv-U Server ヘッダ、ステータス ≠ 415 (例: 401 / 404 / 200 / 302) | VULNERABLE [missing-415-gate] | HF1 415 ゲートが 存在しない ため、ビルド <= 15.5.4.108、CVE-2026-28318 未パッチ。 |
Serv-U Server ヘッダ、ステータス = 415 | PATCHED [hf1-415-gate] | HF1 入力検証ゲートが存在するため、ビルド >= 15.5.4.125。脆弱ではない。 |
応答あり、ただし Serv-U Server ヘッダなし | NOT-SERV-U [not-servu] | Serv-U サーバではない、またはプロキシがヘッダを除去。 |
| 利用可能な応答なし / 接続失敗 | ERROR [no-response] | HTTP サービスに到達不可、フィルタリング、TLS エラー、タイムアウト。 |
| フラグ | 説明 |
|---|
targets | 1 つ以上の HOST[:PORT] または URL(スキームはデフォルトで https://) |
-t, --target TARGET | ターゲットを追加(繰り返し可) |
-f, --file FILE | ファイルからターゲットを読み取り(1行1つ、# はコメント) |
-b, --brief | ターゲットごとに1行の整列出力。多数のホストスキャンに最適 |
--json | 構造化 JSON 結果を出力 |
--no-color | 色付き出力を無効化(NO_COLOR および非 TTY にも対応) |
--timeout SECS | プローブごとのタイムアウト(デフォルト: 10) |
-v, --verbose | 送信されたプローブと生の応答ヘッダを表示 |
| 判定 | 理由タグ | 意味 |
|---|
VULNERABLE | missing-415-gate | HF1 415 ゲートのない Serv-U サーバ。したがってビルド <= 15.5.4.108、CVE-2026-28318 未パッチ。直ちにパッチを適用してください。 |
PATCHED | hf1-415-gate | identity プローブに 415 で応答する Serv-U サーバ。したがって HF1 修正が存在(ビルド >= 15.5.4.125)。 |
NOT-SERV-U | not-servu | 応答あり、ただし Serv-U Server ヘッダなし。Serv-U ではないか、プロキシが除去。 |
ERROR | no-response | 利用可能な HTTP 応答なし(そのポートにサービスがない、フィルタリングされている、TLS エラー、タイムアウト)。 |
ERROR | bad-target | ターゲット引数を解析できない。 |