it.xnews.jp
生成: 2026-10-15 読了 約 4 分 model: claude-haiku-5-5 原文: https://blog.dfb.sh/blog/eap770-root-for-two-zeros/ raw.md

ISOをダウンロードしようとしたら、カーネルエクスプロイトを書くことになった

TL;DR: 著者は2023年8月に購入したTP-Link EAP770 v1で、Wi-Fi経由の大容量転送が失敗する問題を調査した。SFE/PPEオフロードを無効化すると破損は止まったが、この機種はサポート終了(End-of-Life)製品とされている。

著者は、TP-Link EAP770 v1のアクセスポイントでWi-Fi経由の大容量TCPダウンロードが破損する問題の原因を調べた。調査は最終的に、設定を書き換えるためのカーネルエクスプロイトの作成へと発展した。

症状と原因の特定

著者が使用しているのは、EAP770(EU) v1.0である。ファームウェアは firmware 1.0.0 Build 20230605 Rel. 71641 で、カーネルは Linux 5.4.164 と報告されている。NixOSのISOをwgetで取得した際には、総サイズ3683778560バイトのファイルでエラーが発生した。HTTP/2経由で取得した128 MiBのNixバイナリキャッシュファイルも失敗し、rsyncやSSHによる数GiBを超えるファイル転送も失敗した。

失敗中に取得されたHTTPSダウンロードのキャプチャでは、64バイトの誤りを含む1440バイトのTCPセグメントが確認された。このセグメントのチェックサムは有効だった。TCPはこのセグメントを受理したが、TLSは「bad record mac」として受信レコードを拒否した。著者は次のように述べている。

「TCPが正しいバイトを届けるのは、そのためのものなのだから。だから問題はrsyncかSSHにあると確信していた」

— 著者

LAN側からWi-Fi側への生のTCPテストでは、8192 MiB中3つの64バイトブロックが破損した。著者は、この原因をqca-nss-dpドライバにおけるDMAキャッシュ一貫性バグと特定している。受信領域は1856バイト(headから192バイト先の29キャッシュライン)である。著者はさらに、以前のバッファ使用で残ったダーティキャッシュラインが、NICが新しいパケットを受信した後に書き戻されうると見ている。

無効化の効果と速度

著者のテストでは、SFE/PPEオフロードを無効化すると破損は止まった。無効化後も、/sys/sfe/exceptions の NOT_SUPPORT_BRIDGE カウンタが増加することが確認されている。速度への影響も測定され、オフロード有効時のLAN-Wi-Fi間転送(8192 MiB、3ブロック破損)は103.4 MiB/sだった。一方、無効化後の夜間実行(破損0ブロック)は95.4 MiB/sであり、ダウンロード速度のコストは約8%とされている。

別の問題として、ラップトップ側のWCN785xカードが1〜4分間データ送信を停止するWi-Fiドロップが起きていた。信号強度は-31〜-42 dBmだった。ドロップ時には、ファームウェアが26388フレーム中10630フレームをCMD_REMOVE_AGED_FRAMESで返していた。ラップトップのWi-Fiカードのファームウェア(最新のアップストリーム版はWLAN.HMT.1.1.c7-00108 UPSTREAM-3)がドロップの原因である可能性もある。著者はAPの5GHz無線をWi-Fi 7からWi-Fi 6に切り替え、24時間の監視テストを実施した。

権限制限と回避策

sysfsの設定はrootのみ書き込み可能で、TP-Linkのシェルも制限されていた。著者は、非特権ユーザー名前空間から到達可能なCVE-2022-0185(legacy_parse_param()の整数アンダーフロー)と、パイプバッファの操作を組み合わせたカーネルエクスプロイトチェーンを構築し、sysfsの2つの値を書き込んだ。作業にはOpus 4.8との試行を含めて17時間を費やしたという。著者によると、Opus 5.5はローカル権限昇格を議論した際にセッションを打ち切ったとされる。

TP-Linkのサポートは、この機種について次のように回答している。

「EAP770 Version 1 is an End-of-Life product. While it may still be available through some retailers, it is no longer supported with firmware updates.」

— TP-Link support

著者は代替機の費用として200 USDの支払いを拒否した。そのうえで、次のように述べている。

「TP-Linkが自分のデバイスを適切に修正させてくれない以上、正しいデータを得るために性能を犠牲にするしかない」

— 著者

筆者の見立て

この記事は元記事の事実のみに基づいて自動生成されました。

出典

この記事をシェア