Wallbleedについて

日本だとあまり話題になっていないWallbleed。GFWの脆弱性でDNS周りのメモリが一部取得できていた。

GPT-4oで少し議論しつつ、要約させてみた。
1. GFW の DNS インジェクションの仕組み
GFW は DNS インジェクション を用いて、特定のドメイン名へのアクセスを妨害します。
基本的な動作は以下の通りです。
-
DNS クエリの監視
- GFW は ネットワークのトランジットポイント(国境ゲートウェイなど) に配置された 中間装置(middlebox) により、通過する DNS クエリをリアルタイムで監視 する。
- 監視対象のトラフィックは UDP/53(DNS) だけでなく、場合によっては TCP の DNS クエリも対象となる。
-
ブロックリストとの照合
- クエリの QNAME(問い合わせたドメイン名) を 内部ブロックリスト と照合し、ブロック対象であるかどうかを判定する。
- 照合の際、QNAME は ドット区切りの文字列(example.com 形式) に変換される。
-
偽の DNS 応答の注入
- ブロック対象であれば、GFW は正規の DNS 応答が返る前に、偽の応答を注入する。
- 偽の応答には 間違った IP アドレス(例: 31.13.91.33) が含まれ、クライアントは誤ったホストへ接続しようとする。
-
クライアントは最初の応答を受け入れる
- DNS クライアントは 最初に受信した応答を採用 するため、GFW が偽の応答を先に送りつけることで通信を遮断する。
GFW の DNS インジェクターの特徴
-
複数種類のインジェクターが存在
- 研究者は 少なくとも3種類の異なる DNS インジェクター があることを確認。
- 各インジェクターは異なるブロックリストを使用している可能性がある。
-
レスポンスのフォーマットに違い
- ある種のインジェクターは QNAME をそのままコピーするが、別のインジェクターは
c00c
(DNS 圧縮ポインタ)を使用する。
- ある種のインジェクターは QNAME をそのままコピーするが、別のインジェクターは
2. Wallbleed により明らかになった GFW のバグと内部構造
Wallbleed の発見により、GFW の DNS インジェクターの パーサーの設計ミス や 内部構造 が明らかになった。
(1) GFW の DNS パーサーのバグ
-
バッファオーバーリード発生の原因
- GFW の DNS パーサーは DNS クエリの長さを適切に検証しない 。
- 例えば、
03rsf03org00
(正しい QNAME)を03rsf20org00
に改変すると、20 の部分が「ラベル長(32バイト)」と解釈される。 - 結果として、クエリの境界を超えてメモリを読み込んでしまい、GFW の内部メモリのデータが DNS 応答に含まれる。
-
QNAME の処理の仕組み
- パーサーは QNAME を読み取る際、バイト単位で解析 し、各ラベルの長さをチェックする。
- ただし、長さの制約(最大 63 バイト)を適切に適用せず、境界チェックが甘いため、メモリリークが発生。
-
影響範囲
- 最大 125 バイトのメモリが DNS 応答に含まれる。
- メモリリークの内容には UPnP、SSDP、HTTP、SMTP、SSH、TLS などのプロトコルデータ も含まれていた。
(2) GFW のプロセス管理
-
DNS インジェクターは複数のプロセスで動作
- Wallbleed の調査から、GFW の DNS インジェクターは 複数の独立したプロセスで動作 していることが判明。
- これは、注入される偽の IP アドレスが特定の順序で循環する ことから推測された。
- 同じプロセスにアサインされたクエリは、同じメモリ領域を共有している可能性 がある。
-
ロードバランシングの仕組み
- GFW の DNS インジェクターは、送信元ポート(source port)をハッシュして異なるプロセスに負荷分散 している。
- あるポート番号を使うと特定のプロセスが処理し、異なるポートを使うと別のプロセスが担当する。
3. GFW の IPv4 / IPv6 の処理の違い
- GFW の DNS インジェクターは IPv4 と IPv6 の両方のトラフィックを処理 している。
- Wallbleed の実験では、IPv4 で送信したデータが IPv6 の Wallbleed 応答に含まれているケースが確認された。
- これは、GFW の DNS インジェクターが IPv4 と IPv6 のトラフィックを同じメモリ空間で処理していることを示唆 している。
4. GFW のパッチ適用の挙動
(1) Wallbleed v1 のパッチ
- 2023年 9月~11月にかけて、GFW は Wallbleed に対する修正を適用。
- ただし、この修正は不完全であり、依然として特定のクエリでメモリリークが発生(Wallbleed v2)。
(2) Wallbleed v2 の完全修正
- 2024年 3月に GFW は Wallbleed v2 に対応する完全なパッチ を適用。
- 監視の結果、GFW は段階的に修正を展開し、中国全土のネットワークに一斉に適用 していることが確認された。
5. GFW の影響範囲
- Wallbleed による影響を受けた IP アドレスは 中国国内のほぼすべてのプロバイダー(China Telecom, China Unicom, China Mobile など) に及んだ。
- 一部、中国国外のネットワーク(韓国、香港、アメリカ、ベトナムなど)にも影響が確認された。
- これは、中国国外の通信が 中国経由でルーティングされるケースがあるため であり、DNS インジェクションが国際通信にも影響を及ぼしていた可能性がある。
まとめ
この研究により、GFW の DNS インジェクションの実装とその内部構造について、以下の点が明らかになった。
- GFW はネットワークのトランジットポイントで DNS クエリを監視し、偽の応答を注入する
- DNS インジェクターは複数の種類が存在し、それぞれ異なる動作をする
- Wallbleed は GFW のバグであり、DNS パーサーの境界チェックミスによるもの
- GFW の DNS インジェクターは複数のプロセスで動作し、送信元ポートごとに負荷分散を行っている
- IPv4 と IPv6 のトラフィックは同じメモリ空間で処理される
- Wallbleed は 2024年3月に完全修正されたが、GFW の DNS インジェクション自体は今も続いている
この研究は、GFW の内部構造を解析する貴重な事例 となった。

Wallbleed: A Memory Disclosure Vulnerability in the Great Firewall of China - 要約
概要
Wallbleed は、中国のグレートファイアウォール(GFW)の DNS インジェクションサブシステムに存在したバッファオーバーリード脆弱性であり、細工された DNS クエリを通じて最大 125 バイトのメモリを漏洩させるものである。本研究では、Wallbleed の原因と影響を調査し、GFW の内部構造や検閲の運用方法についての新たな知見を得た。
背景
GFW の DNS インジェクションは、検閲対象のドメイン名へのクエリを検知し、偽の DNS 応答を注入することでアクセスを妨害する仕組みである。Wallbleed の根本的な原因は、GFW の DNS インジェクターが DNS メッセージのフォーマットを適切に検証せず、境界チェックを怠ったことにあった。このバグにより、特定の条件下でインジェクターのメモリから不要なデータが DNS 応答に含まれることになった。
実験と発見
本研究では、2021 年 10 月から 2024 年 4 月まで 2 年以上にわたり、以下の手法で調査を行った。
-
インジェクターの解析
- DNS パーサーのリバースエンジニアリングを行い、バグの根本原因を特定。
- GFW の DNS インジェクションプロセスにおけるメモリ管理と負荷分散の仕組みを分析。
- 偽の IP アドレスリストの循環順序を利用し、複数のプロセスを識別するサイドチャネル攻撃を考案。
-
情報漏洩の範囲の評価
- 漏洩したデータには、ネットワークプロトコルヘッダ、ペイロード、x86_64 のスタックフレーム、実行コードが含まれていた。
- HTTP、SMTP、SSH、TLS などのプロトコルのデータが含まれることを確認。
- Wallbleed によって、中国国外の通信が影響を受ける可能性を示唆。
-
脆弱性のパッチ状況の追跡
- 2023 年 9 月~11 月に GFW が初めて Wallbleed に対するパッチを適用したが、完全には修正されず Wallbleed v2 となった。
- 2024 年 3 月にようやく完全修正されたが、依然として GFW による DNS インジェクションの危険性は継続。
-
ネットワーク全体の影響評価
- IPv4 の全範囲をスキャンし、約 2.42 億の IP アドレスが影響を受けたことを確認。
- 一部のネットワークトラフィックが中国国外においても漏洩している可能性を発見。
倫理的考察
Wallbleed の研究には倫理的な課題が伴う。研究チームは、収集したデータの取扱いに慎重を期し、データの保護と匿名化を徹底した。また、GFW のようなシステムに対する脆弱性の開示が、検閲の強化につながる可能性についても議論し、慎重に対応した。最終的に、ユーザーのプライバシーを保護するため、適切なタイミングで脆弱性の公開が行われた。
結論
Wallbleed の発見と研究により、GFW の内部構造や DNS インジェクションの仕組みが明らかになった。本研究は、検閲が情報アクセスの制限にとどまらず、ユーザーのプライバシーやセキュリティにも深刻なリスクをもたらすことを示している。GFW の DNS インジェクションは修正されたが、根本的な問題は依然として残っており、今後も監視と研究が求められる。