ISO のダウンロードを試していたら、カーネルエクスプロイトを書いてしまった

2026/10/13 21:30

ISO のダウンロードを試していたら、カーネルエクスプロイトを書いてしまった

RSS: https://news.ycombinator.com/rss

要約▶

Japanese Translation:

TP-Link は、開封前に EAP770 v1 ワイヤレスアクセスポイント(Qualcomm IPQ9574)のサポートを公式に終了しました。主な原因は、Wi-Fi 7 デバイスでありながら前標準規格対応での Wi-Fi Alliance 認証の欠如と、Qualcomm ハードウェアに含まれる修正不可能な重大なバグです。核心的な問題は、

qca-nss-dp
ドライバ内の DMA キャッシュ整合性バグであり、パケットバッファが適切な CPU キャッシュ同期なしに再利用されることで深刻な Wi-Fi データ破損を引き起こしています(例:大規模ダウンロードが MAC エラーや不良の記録 MAC を伴って失敗する)。
l2_feature
および
ppe_rfs_feature
などの特定機能を無効化することで、破損したペイロードに対するチェックサムのオフロード再計算を防ぎこの問題を解消できますが、TP-Link はこれらの設定へのアクセスを SSH シェル(uid 1)から制限し、root 権限は拒否しています。CVE-2022-0185 インタージアンダーフローおよび pipe バッファ操作を利用したカーネルエクスプロイトが開発され、これにより任意のメモリライトを通じてスラブデフラグメンテーションによるアドレス漏洩と
pipe_buf_can_merge()
の悪用を実現し、
/sys/sfe/...
に直接修正を記述することでこれらの制限を回避します。新しいファームウェアへの書き込みは有効な選択肢ではありません。v1 イメージが利用不可であり、v2 は異なるハードウェアを使用しており暗号化されたファームウェアを搭載していること、および新バージョンではこのレガシーユニットのサポートが存在しないためです。その結果、影響を受けたユーザーは永久にパフォーマンス制限を受け入れる(オフロードが無効化された場合、LAN から Wi-Fi へのダウンロード速度が約 8% 低下)か、複雑なカスタムワークアラウンドを実装する(外部 NixOS スクリプトを使用し、アクセスポイントをポーリングして設定がリセットされる再ブート後にカーネルエクスプロイトを再トリガーするなど)必要があります。この状況は、他の Qualcomm カード搭載デバイスで見られる類似の欠陥と酷似しており、所有者には信頼性の高い公式解決策がありません。特に注記すべきは、本デバイスの問題とは無関係な別のバグで、
ath12k
キューの蓄積およびファームウェアフレーム除去(
CMD_REMOVE_AGED_FRAMES
)により、Qualcomm WCN785x カードを搭載した Framework 16 ノートパソコンで Wi-Fi ダロップが発生するという問題です。OpenWrt では DMA キャッシュ整合性バグは発生しませんが、TP-Link はサポート終了済みの EAP770 v1 向けに新しいファームウェアを配布することは予定されていません。

本文

TP-Link EAP770 v1 の Wi-Fi 転送破損不具合と解決策

TL;DR

  • 不具合: TP-Link EAP770 v1 が、Wi-Fi 経由でのファイル転送(
    rsync
    ,
    git clone
    ,
    wget
    など)でデータを破損させる重大なバグを持つ。
  • 現状: 購入時のファームウェアのみ対応でサポート終了(End-of-Life)。TP-Link は修正パッチを提供しない。
  • 根本原因: Qualcomm IPQ9574 チップの DMA キャッシュ一貫性欠如と、高速転送パス(SFE/PPE)におけるチェックサムの再計算ロジックの欠陥。
  • 解決策: 設定ファイル
    /sysfs
    を書き込み、オフロード機能を無効化することで回避可能(ただし、TP-Link シェルでは実行不可)。
  • 最終手段: TP-Link のセキュリティ制限を突破し、専用**KERNEL_EXPLOIT_(カーネル攻撃コード)**を開発して設定を強制適用する。

1. 問題の発覚と初期調査

経緯

  • 2023 年 8 月、Wi-Fi 7 アクションポイントとして TP-Link EAP770 v1 を購入。
  • 有線接続時の動作は安定していたが、Wi-Fi 経由での大規模ファイル転送に失敗する。

現象の拡大

  • rsync/SSH の失敗:
    • 数 GB 以上のファイルを転送すると失敗。
    • SSH エラー:
      MAC error
      (メッセージ認証コードエラー)。
    • デバッグ結果:
      rsync
      や SSH の設定変更は無効。TCP は正常に転送されているはずだが、データ整合性が保たれない。
  • 暫定的な回避策:
    • ネットワーク層を Tailscale(WireGuard)経由に変更すると失敗しなくなった。
    • 原因:UDP ストリームではなく TCP の再送機構が、破損したパケットをフィルタリングする役割を果たしていたため。

ファームウェアの現状

  • 機種情報: Qualcomm IPQ9574 チップ搭載、Linux コア 5.4.164。
  • バージョン: 出荷時ファームウェア
    v1.0.0 Build 20230605
    。これ以降のアップデートなし(サポート終了)。
  • 状況: Wi-Fi 7 の規格化や認証が完了する前に購入しており、現在の仕様で運用を続けるしかない。

2. 破損の追跡と原因特定

調査プロセス

  • HTTP/2 vs HTTP/1.1: NixOS のバイナリキャッシュ取得において、HTTP/2 で失敗するが HTTP/1.1 では成功。
  • SSL エラー:
    wget
    を使用した ISO ダウンロードで TLS レコード層エラーが発生(
    decryption failed or bad record mac
    )。
  • Wi-Fi 断線の原因: アクセスポイント側ではなく、ラップトップの Wi-Fi ドライバー側のバグではないことが確認された。

根本原因の特定:DMA キャッシュとチェックサム再計算

生 TCP パケットキャプチャから以下の事実が判明した。

  • 現象: 有効な TCP チェックサムを持つパケットが、内容が破損している状態で届く。
  • メカニズム:
    1. アクセスポイント(AP)内部で、送信バッファを再利用する際、DMA キャッシュの同期(一貫性)が行われていない。
    2. 前のパケットの残留データが、新しいパケットの一部を上書きする。
    3. AP のオフロード機能(SFE/PPE)が破損したデータをベースにチェックサムを再計算し、クライアントには「正しい」チェックサムを持つ偽のパケットを送る。
  • 特定箇所: 64 バイトのキャッシュライン単位でデータが置き換わる現象が確認された。

検証結果

  • MediaTek カードへの交換: 改善が見られず、AP 自体の問題であることが確定。
  • 推論: Qualcomm の SFE/PPE オフロード機能のみが、高速転送パス上でチェックサム再計算を担当しており、ここが脆弱点となっている。

3. 解決策と開発の必要性

公式の回避策(実行不可能)

Qualcomm ドライバーソースコードには、オフロード機能を無効化する設定が存在したが、以下の理由で実行できない。

# この設定を書き込む必要があるが、TP-Link シェルでは権限不足
echo 0 > /sys/sfe/l2_feature
echo 0 > /sys/sfe/ppe_rfs_feature
  • 権限問題: TP-Link SSHシェルは UID 1 で動作し、これらのファイルへの書き込み権限がない。
  • ファームウェア制限:
    • v1 ファームウェア用の修正版パッチイメージが存在しない。
    • v2 ファームウェアは別ハードウェア用で互換性なし。
    • 暗号化された新しいファームウェアへの書き込みにはフラッシュライターが必要だが、ハードウェア破損リスクが高すぎる。

KERNEL_EXPLOIT_(カーネル攻撃)の開発

TP-Link が提供できない機能を実装するために、任意コード実行型の Kernel Exploit を開発した。

  • CVE-2022-0185 を活用: 低権限ユーザーネームスペースからカーネル空間へのアクセスを可能にする整数アンダーフロー攻撃を使用。
  • 目的: オフロード機能を無効化する設定を、管理者権限なしで AP 内部に書き込む。

エクスプロイトの概要

  1. 環境構築: EAP783 の GPL ソースコードと QEMU を用いて動作検証。
  2. アドレス空間調整:
    kallsyms
    が無効なため、動的にカーネルイメージの物理アドレスを検出・修正。
  3. 攻撃チェーン:
    • ユーザーネームスペースでのファイル操作 (
      fsopen
      ) と整数アンダーフローによるメモリ解放(Defrag)。
    • システムコールテーブルやパイプ構造体への任意書き込み。
    • pipe_buf_operations
      の偽造(Forge)により、カーネルイメージのページを解放せずに読み取る。
    • modprobe_path
      を上書きし、実行コマンドを「オフロード機能無効化設定」とするバイナリファイルに置換。
  4. 結果: この攻撃を実行すると、AP は再起動せずとも即座に転送破損が消失。

4. Before and After: 効果と性能影響

テストデータ比較

オフロード機能を無効化(Off)した場合の改善状況。

設定方向データ速度破損ブロック数 (8192 MiB)大規模転送結果
On (Default)LAN → Wi-Fi103.4 MiB/s3 個失敗(数 GiB 以上)
Off (Fixed)LAN → Wi-Fi95.4 MiB/s0 個成功( Overnightランでも安定)
  • 速度影響: オフロード無効化により約 8% の速度低下はあるが、データの整合性確保が最優先となる。
  • 仕組み変更: AP が高速パス(ブリッジ)を使わずに通常の転送パスを使用するため、内部カウンターが増加する。

運用上の工夫

設定は再起動でリセットされるため、以下の自動化を実装している。

  1. NAS で AP のステータスを監視し、オフロード機能が有効化されたら即座に Exploit を再実行。
  2. 失敗した場合のみ TP-Link API を通じて AP を再起動し、次の起動で再試行する。

5. 補足:Wi-Fi 断線に関する調査(更新)

アクセスポイント側の問題以外の、ラップトップ側での Wi-Fi 7 特有の断線現象も確認された。

現象

  • Qualcomm ドライバー搭載の Framework 16 ラップトップで、数時間ごとの通信停止が発生。
  • AP 側では送信が正常だが、ラップトップからの応答(ACK)が遅延・消失。

分析結果

  • ドライバ動作:
    ath12k
    ドライバーはフレームが空気に乗るタイミングを正確に把握できず、キューの成長後に処理を延期(
    CMD_REMOVE_AGED_FRAMES
    )。
  • 根本原因: Qualcomm のクローズドソースファームウェア (
    amss.bin
    ) 内部的な動作制限によるもの。
  • 対策案:
    • アクセスポイント側:Wi-Fi 7 を Wi-Fi 6 (802.11ax) に変更すると改善する可能性がある(ただし、根本的なバグではない)。
    • ドライバ更新:アップストリームファームウェアへのアップデートは効果なし。

結論

AP 側の破損問題とラップトップ側の断線問題は別の要因によるが、どちらも Qualcomm チップのクローズドソースコンポーネントに依存しているため、現時点での完全な解決策は見出されていない。

同じ日のほかのニュース

一覧に戻る →

2026/10/16 2:47

Muse Spark オープン

## Japanese Translation: Muse Spark Open は、複雑なソフトウェアエンジニアリングおよび長期視野の推論に最適化された画期的なオープンウェイト AI モデルです。総パラメータ数 816B(アクティブパラメータ 42B)、コンテキストウィンドウ 100 万トークンを備え、MLX フレームワークを使用し、二台の Apple M5 Ultra Mac Studio をスーパーコンピューターとして構成してデスクトップ上でネイティブに実行可能であり、テラバイト規模の統一メモリを活用します。このモデルは自律的なエージェンティックなワークフローで卓越しており、Ice Cubes オープンソース Mastodon クライアントへの実 iOS 変更を配送したり、DaVinci Resolve を介してビデオ分析のためのエンドツーエンド操作を行ったりすることで示されています。 Muse Spark Open は SGLang、vLLM、TensorRT-LLM、llama.cpp、Unsloth、Apple MLX、Hugging Face Transformers、その他を含む主要な推論エンジンをサポートし、Apple、Intel、NVIDIA、AMD シリコン向けに最適化されています。SGLang に統合されたカスタムで自動チューニング可能な Helion GPU カーネルは、NVIDIA/AMD GPU で 1.03~3.95 倍の速度向上を実現し、AMD MI350 ではエンドツーエンドで 3% の速度向上を達成します。 Muse Model ライセンス(限定された商業利用条件付き)の下でリリースされ、追加の安全性のための後トレーニングおよび Meta の Superintelligence Scaling Framework の閾値を満たしています。モデル重量は Hugging Face、Amazon SageMaker AI、Google Cloud Model Garden、Microsoft Foundry Models で入手可能であり、Together AI、Fireworks AI、Groq、Modal、Nebius、OpenRouter、Baseten によるホスト推論サービスも提供されています。包括的な評価レポートは発表待ちですが、Muse Spark Open は低遅延でエンタープライズグレードのエージェンティック機能を実装ワークステーションへ導入する上で重要な一歩を表しています。

2026/10/16 5:23

私がセルフホストするもの

## Japanese Translation: 元のサマリーは明確だが、Key Points List に見られる特定の詳細を欠いている。以下のバージョンでは、不足していた技術的な詳細を取り入れつつも明晰さを維持した改良版である: ## 改善されたサマリー: 著者は高価なストリーミングサービス(Netflix, Disney Plus/Spotify)および有料ツールを、低電力ハードウェア(Beelink Mini PC S12 Pro, Intel N100, 16 GB RAM)上で動作する安全な自己ホスト型ホームメディアシステムで置き換えることに成功した。大手プラットフォームの「エンゲージメント・トレッドミル」を拒否し、このセットアップは公開インターネットへの露出を回避(IPv6/VPN 経由でのアクセスのみ)、Docker の代わりにネイティブバイナリおよび Podman を systemd と組み合わせることで、プライバシーと効率性を最優先する。主なサービスには、Jellyfin(720p/480p のメディア配信)、Google Photos を代替する Immich、手動の財務追跡で Firefly III を代替する Actual Budget、Vaultwarden(パスワード管理)、Gonic(オーディオストリーミング)、Home Assistant/Frigate(自動化/セキュリティ)、Samba/PocketBase(ファイル共有)が含まれる。著者は意図的に資源を消費するスタックである*arr(モバイルパフォーマンスの問題のため)および信頼性の低いツールである Owntracks を回避した。16 GB の総メモリ使用量に対し 7.5 GB のみ使用されるこの堅牢な環境は、軽量でプライベートなインフラストラクチャを求め、メールの自己ホスティングや AI 支援によるハッキングリスクなしに自律して動作するユーザーにとって再現可能な青写真を提供している。

2026/10/16 1:04

ニューラルネットワークはクリーンです

ISO のダウンロードを試していたら、カーネルエクスプロイトを書いてしまった | そっか~ニュース