Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
deco-filepush-disclosure — TP-Link Deco XE75 Pro V3のデバッグチャネル(tmpsvrオペコード0xC456/0xF0)におけるroot権限でのファイル読み書き脆弱性に関する開示およびPoC。CVSS分析とハンドラの逆コンパイル付き。 | Kitploit
ツール/GitHubGitHub/cplusplus17/deco-filepush-disclosure
組み込みシステムセキュリティ特権昇格IoTセキュリティ脆弱性分析エクスプロイトリバースエンジニアリングハードウェアとIoTセキュリティ論文と研究ファームウェア解析

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
GitHubcplusplus17/deco-filepush-disclosure

deco-filepush-disclosure

TP-Link Deco XE75 Pro V3のデバッグチャネル(tmpsvrオペコード0xC456/0xF0)におけるroot権限でのファイル読み書き脆弱性に関する開示およびPoC。CVSS分析とハンドラの逆コンパイル付き。

リポジトリを見る
231日前未レビュー

Deco XE75 Pro V3 — オーナー認証済みデバッグチャネル: root 権限での任意ファイル書き込み

関連する VLAN プロジェクト: この XE75 Pro V3 のファームウェア/プロファイルに 正確に対応する実験的な固定 VLAN-30 ソースのアルファ版です。運用者が用意した 純正ファイルが必要で、汎用的なインストーラや書き込み可能なイメージはありません。 ゲスト VLAN 591 は未解決のままです。最終的な 3 台構成でのコールドブート、 UI、クライアント分離の受け入れテストは未完了です。 現在のステータスを参照してください。

研究開示、TP-Link Deco XE75 Pro V3、ファームウェア 1.5.0 Build 20260603 Rel.15804。[email protected] 向けに作成し、当社の 802.1Q IoT VLAN 実装(deco-iot-vlan)と併せて公開します。

概要

Deco のオーナー認証済みデバッグ SSH チャネル(TCP 20001 上の Dropbear、 direct-tcpip 転送のみ、パスワード認証)は、127.0.0.1:20002 上の内部 tmpsvr サービスに到達します。その Lua ハンドラの一つである inner_file_push(オペコード 0xC456)は、params.file を "w" モードで開き、 params.content をそのままroot 権限で、パスの許可リストもサイズ制限も 権限降格もなしに書き込みます。兄弟オペコード(0xF0)は、対応する root 権限でのファイル読み取りを提供します。これらを組み合わせると、 認証済みの読み取り + ルートファイルシステム全体への書き込みが可能となり、 ルーターにおいてはそれはデバイス全体を意味します。

SSH :20001  (username = SHA1(owner_email), password = TP-Link account password)
  -> direct-tcpip -> 127.0.0.1:20002 (TMPv2)
     -> 0xC456 inner_file_push : io.open(file,"w"); write(content); close()   [root]
     -> 0x00F0 root file read  : byte-exact file read                          [root]

影響(実機検証済み、非破壊)

  • /etc/config は書き込み可能なライブ ramfs → キーを変更すると、ルーターはそれを尊重する。
  • /www は uhttpd により HTTPS 経由で配信される → プッシュされたファイルは即座に到達可能になる。
  • /tp_data/user_data は永続的な ubifs フラッシュ → 再起動後も保持される。
  • LuCI のルートキャッシュは攻撃者の Lua に差し替え可能で、GET /cgi-bin/luci 経由でトリガーされる → root 権限での Lua 実行 → io.popen → 任意の root バイナリ実行。

4つのステップはすべて、所有者自身のメインユニット上で実行され、元に戻された。

これが新規である理由 — そして CCS'24 / Black Hat '24 から2年経っても tmpsvr が未修正のままである理由

UCR SecLab チームは、:20001 -> 127.0.0.1:20002(tmpsvr)デバッグチャネルを 2年前 に CCS 2024 —「Untangling the Knot: Breaking Access Control in Home Wireless Mesh Networks」(および Black Hat USA 2024 —「Fallen Tower of Babel」)で公開文書化した。旧型 Deco モデル(X55、FW 1.2.2)における彼らの侵入経路は、512ビット RSA ホストキーの因数分解 と、検証されていない tmpsvr ハンドラの悪用であった。

この正確なファームウェア上で観察された差異と残存するハンドラ:

  • 彼らは ssh-rsa ホストキーのサイズを512ビットから 2048ビット に増やし(3台のメッシュユニットすべてで観察された共有キー SHA256:9feb3ac4...932a36、およびユニットごとの ecdsa-sha2-nistp521)、2024年の講演で示された512ビット因数分解経路を塞いだ。
  • ファームウェア 1.5.0 には以下の root レベルのハンドラが存在する:
    1. :20001 上のパスワード認証(svr_auth_uci) は、SHA1(owner_email) と共有 TP-Link ID パスワードを使用して依然として有効である。
    2. オペコード 0xC456(inner_file_push) は、パス検証が一切ないまま、呼び出し元が指定した任意のパスを root として "w" モードで開く。
    3. オペコード 0x00F0 は、ファイルシステム上の任意のファイルを root として読み取る。
    4. オペコード 0xC505(tty2tcp/start)さえも — 2024年の論文で強調された、クォートされていない /bin/sh -c コマンドインジェクションハンドラそのもの — が 2026年6月のファームウェア(1.5.0)に完全に未修正のまま残っている。

影響対象(観察されたとおり)

  • 製品: TP-Link Deco XE75 Pro V3(3ユニットメッシュ、メインユニット1台 + スレーブ2台)
  • ファームウェア: 1.5.0 Build 20260603 Rel.15804
  • 攻撃面: LAN から到達可能な TCP 20001(デバッグ SSH)。ハンドラは抽出された 1.5.0 のユーザースペース(luci/controller/admin/mobile_app/iot_device モジュール、inner_file_push)に存在する。

深刻度(CVSS v3.1 + v4.0)

実証されたのは LAN からの到達性のみである。観察された LAN 限定のプロファイルについては、AV:A のバリアントを使用する: v3.1 6.8 / v4.0 8.5。以下の AV:N スコアは、ネットワーク経路が実証された場合に条件付きであり、クラウドからの到達性は未検証である。

これは 認証後、所有者権限 から root への昇格であり、未認証 RCE ではない — 以下に示す観察プロファイルのスコアは 6.8(v3.1)および 8.5(v4.0)である。完全な根拠と却下されたスコアの水増しについては docs/cvss-analysis.md を参照。

CVSS v3.1 — LAN 限定評価 6.8(Medium)、条件付きリモートバリアント 7.2(High):

CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H   = 7.2 (High)
CVSS:3.1/AV:A/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H   = 6.8 (Medium)   # if LAN-only

決定的な判断: PR:H(所有者 / TP-Link-ID アカウントがデバイスの管理主体である)および S:U(ハンドラはすでに root として実行されている — 権限境界を越えない)。初期のドラフトでは PR:L + S:C により 9.9 と評価されていたが、両方とも却下された。

CVSS v4.0 — LAN 限定評価 8.5(High)、条件付きリモート変種 8.6(High):

CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N   = 8.6 (High)
CVSS:4.0/AV:A/AC:L/AT:N/PR:H/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N   = 8.5 (High)       # if LAN-only
CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:L   = 9.3 (Critical)   # with Subsequent-System LAN/mesh impact

現実世界でのリスク — 盗まれた、あるいは使い回された TP-Link-ID のパスワードがメッシュ全体にわたる永続的な root 権限へと昇格し、さらにクライアントトラフィックの MITM を招くこと — は、誇張された v3.1 の基本ベクターではなく、ナラティブ(および v4.0 の SC:H/SI:H/SA:L Subsequent-System メトリクス)に記載されるべきものです。

概念実証

poc/deco_filepush_poc.py — 自己完結型(stdlib + paramiko)。認証情報は DECO_EMAIL / DECO_PASSWORD 環境変数を介してのみ渡します。ライブモードでは DECO_HOSTKEY が必要で、これは独立して検証されます。生の base64、公開鍵の行、または ssh-keyscan の鍵行 1 行(コメント対応)のいずれかです。スキャンだけではデバイスの認証は行いません。HTTPS チェックは配信されたバイト列を比較しますが、その証明書は検証しません。モードはちょうど 1 つだけ指定する必要があり、検証に失敗した場合は非ゼロで終了します。

python3 poc/deco_filepush_poc.py --selftest        # offline framing sanity
[email protected] DECO_PASSWORD=*** DECO_HOSTKEY="$TRUSTED_DECO_HOSTKEY" \
  python3 poc/deco_filepush_poc.py --run           # write marker + readback + HTTPS check
[email protected] DECO_PASSWORD=*** DECO_HOSTKEY="$TRUSTED_DECO_HOSTKEY" \
  python3 poc/deco_filepush_poc.py --cleanup <nonce>   # overwrite marker with empty content

PoC は /www/log_export(ramfs。再起動時にもクリアされる)に単一の無害なマーカーを書き込み、その後、成功を報告する前にデバイス自身の root-read オペコードによるバイト単位で正確な読み戻しと未改変の HTTPS 配信を要求します。

再現手順の概要(ライブ、2026-10-17)

  1. ssh-keyscan -p 20001 <deco> → ホスト鍵をピン留め(メッシュ全体で共有される 2048 ビット RSA + ユニットごとの nistp521)。
  2. SHA1(owner_email) / TP-Link アカウントのパスワードで SSH 接続し、127.0.0.1:20002 への direct-tcpip を要求。
  3. TMPv2 アソシエーション(01010100 → 01010200 → 01010200)、続いてオペコード 1 のトークン要求。
  4. オペコード 0xC456、{"params":{"file":"/www/log_export/deco-write-<nonce>.html", "content":"..."}} → {"error_code":0,...}。
  5. オペコード 0xF0、{"params":{"file":"..."}} → バイト単位で正確な読み戻し。
  6. GET https://<deco>/log_export/deco-write-<nonce>.html → 200、正確なバイト列。

スコープ / 誠実性

  • 所有者自身のハードウェア、所有者自身の認証情報。
  • 非破壊的:単一マーカー、バイト単位で正確な復元、検証済みのロールバック。
  • メインユニットで実証済み。同じハンドラは、メッシュ全体について抽出された 1.5.0 ユーザースペースにも存在する。
  • tty2tcp(0xc505)経路は存在が確認されており未検証(静的)だが、別個のインジェクションとしてライブ検証はされていない。完全性のために記載する。

なぜ公開リリースなのか(電子廃棄物の防止とネットワークセキュリティへの権利)

この研究は、シンプルかつ防御的な目標から始まりました。それは、アクセスポイントモードで動作する 3 台構成の Deco XE75 Pro V3 メッシュ全体にわたり、信頼できない IoT デバイスをタグ付き 802.1Q VLAN 上に分離することです。

2026 年において、基本的なネットワークセグメンテーション(IoT デバイスを分離された VLAN に配置すること)は根本的なセキュリティ要件です。しかし純正ファームウェア 1.5.0 では、この機能は人為的に未完成のまま放置されています(/lib/iot_network/iot_eth.sh は rootfs から省略され、/etc_ro/init.d/iot_network 内の VLAN ロジックはコメントアウトされています)。これにより厳しい選択を迫られました。完全に能力を備えた Wi-Fi 6E メッシュルーター 3 台を電子廃棄物として捨てるか、それともファームウェアをリバースエンジニアリングして欠落した機能を自らパッチするか。

私たちは、このセキュリティアドバイザリと、併せて提供する VLAN 実装(deco-iot-vlan)の両方を公開することを選びました。その理由は次のとおりです。

  1. すべての Deco 所有者が即座に防御的措置を講じられるようにする(強力で一意な TP-Link ID パスワードを設定し、LAN/VLAN 上で TCP ポート 20001 を制限する。露出した root ファイル書き込みインターフェースの存在に気づかないままにしない)。
  2. 所有者が、基本的なセキュリティ機能が提供されないために動作するハードウェアを電子廃棄物にするのではなく、既存の Deco ハードウェアに適切な 802.1Q IoT VLAN セグメンテーションを導入できるようにする。

ファイル

  • README.md — このファイル
  • TEAM-SUMMARY.md — マルチエージェントチーム(claude、codex、gemini、hermes/Qwen)がどのように発見したか
  • poc/deco_filepush_poc.py — 自己完結型 PoC
  • docs/cvss-analysis.md — スコアリングの根拠 + フォールバックマトリクス
  • docs/handler-source.md — 逆コンパイルされた inner_file_push ハンドラ + 参照
  • tp-link-email.md — ベンダー報告書のドラフト。配信は未確認
  • reddit-post.md — コミュニティ投稿のドラフト

クレジット

所有者主導による独立したリバースエンジニアリング。要望に応じて、逆コンパイルされたモジュール全体、オフラインでのフレーミング導出、およびメッシュのホスト鍵インベントリを共有できます。

ツールをダウンロード