TP-Link Router Zero-Day Lets Attackers Execute Code by Bypassing ASLR
205/09/19 gbhackers — TP-Link 製ルータに存在する、ゼロデイ脆弱性 CVE-2025-9961 が発見された。この脆弱性を悪用する攻撃者は、Address Space Layout Randomization (ASLR) を回避し、リモートから任意のコードを実行できるという。この欠陥は CWMP (TR-069)に存在し、不正 SOAP リクエストを介してトリガーされる。その結果として、影響を受けるデバイスの完全な制御が奪われる可能性がある。

ByteRay のレポートでは、発見/悪用/修復の技術的詳細と、脆弱性の影響および前提条件が簡潔にまとめられている。
CVE の詳細と影響
この脆弱性は、CWMP パラメータ設定ルーチンにおける、未チェックのスタックバッファ・オーバーフローに起因する。それを悪用する攻撃者は、カスタム ACS サーバを介して細工されたペイロードを送信することで、プログラム・カウンタを上書きし、実行フローを制御できる。
ASLR が有効化されていても、ベース・アドレス空間に対するブルートフォース攻撃と、Web UI 経由の自動サービス再起動を組み合わせることで、確実なエクスプロイト攻撃が可能になる。また、”ret2libc” 手法を用いることで、libc の system() 関数経由で被害者ネットワークにリバース・シェルを生成できる。
| CVE ID | Affected Product | Impact | Exploit Prerequisites | CVSS 3.1 Score |
| CVE-2025-9961 | TP-Link CWMP service | Remote Code Execution | Valid router web UI credentials, custom ACS server, brute-forcing ASLR | 9.8 |
発見と PoC 開発
ByteRay チームが、脆弱性 CVE-2025-9961 を特定したのは、ファームウェアのダウングレード実験の最中だったという。この脆弱性は、以前のコマンド・インジェクション脆弱性 CVE-2023-1389 を利用して、脆弱な CWMP バージョンをロードした際に発見されたものである。
checksec を使用して確認したところ、バイナリには PIE とスタック・カナリアが欠如していた。ただし NX と部分的な RELRO は有効であり、また、libc とスタックには ASLR により、それぞれ 9~10 ビットのエントロピーが提供されていた。

初期の PoC では、GenieACS によるペイロード送信が不十分だったので、Python ベースのカスタム ACS PoC が新たに作成された。この ACS は、以下の手順で攻撃を実行する。
- TR-069 セッションを開始し、デバイスの CPE 識別子を取得する。
- セッション Cookie を確立し、SetParameterValues リクエストにオーバーフロー・ペイロードを取り込んで送信する。
- ランダム化されたベース・アドレスに対してブルートフォース攻撃を行い、CWMP がクラッシュしたときには、Web UI からサービスを再起動する。
この ret2libc チェーンにより、HTTP サーバ上にホストされたリバースシェル・ペイロードが読み込まれる。そして、主要なガジェットと関数ポインタは、null バイト回避のために動的に計算され、最終的に curl を用いて悪意の ELF シェル・バイナリが取得/実行され、攻撃者へのリバース TCP 接続が確立される。
緩和策
すでに TP-Link は、CVE-2025-9961 に対処するファームウェア・アップデートをリリースしている。修正点は、入力長チェックの追加と、RELRO とスタック・カナリアの完全な有効化である。
管理者に対して推奨されるのは、ファームウェアの速やかなアップグレードと、不要なリモート ACS コンフィグの削除である。また、Web UI で強力な認証情報を強制し、TR-069 へのアクセスを信頼できるネットワークに制限することで、さらにリスクを軽減できる。
この脆弱性 CVE-2025-9961 が示すのは、欠陥のある管理プロトコルと不十分なバイナリ強化がもたらす深刻なリスクである。高度なエクスプロイトからネットワークを保護するには、タイムリーなパッチ適用と多層防御が依然として重要である。
TP-Link で発見された脆弱性は、CWMP (TR-069) の管理処理で未検証のスタックバッファ・オーバーフローが残っていたこと、そして、バイナリに PIE やスタック・カナリアが無効であったことに起因します。結果として、攻撃者は不正な SOAP リクエストでメモリを上書きし、ASLR をブルートフォースで突破して、ret2libc のような既知手法を用いて遠隔からシェルを取得できてしまいます。PoC も提供されていますので、ご利用のチームは、ご注意ください。よろしければ、TP-Link で検索も、ご参照ください。
You must be logged in to post a comment.