IEEE802.11 の仕様や実装に起因する問題「FragAttacks」とは
2021.5.28
「FragAttacks」とは、2021年5月に公表された無線LANの仕様や実装に関する一連の脆弱性の総称です。 「FragAttacks」の脆弱性は、無線LAN規格 IEEE802.11の仕様やその実装に起因し、規格に準拠する様々な無線LAN機器 (アクセスポイント、スマートフォン、PC) に影響します。 これらの脆弱性を悪用された場合、IEEE802.11のセキュリティ機能で保護された通信に対して、内容の不正な読み取りや任意のデータ挿入といった攻撃を行われる可能性があります。 このエントリでは、報告者であるニューヨーク大学アブダビ校の Mathy Vanhoef 氏のサイトや論文を元に、脆弱性の内容をお伝えします。
IEEE802.11の仕様に起因する問題
フレームアグリゲーションの処理に任意のフレームを挿入される問題 (CVE-2020-24588)
この脆弱性は、通信速度やスループットの改善のために、サイズの小さなフレームをサイズの大きなフレームに集約 (aggregation) する、フレームアグリゲーション機能の仕様が原因になっています。 フレームを受信した機器は、そのフレームが集約化されたものかどうかをヘッダの QoS フィールドに含まれる A-MSDU (Aggregate MAC Service Data Units) フラグで判断します。 A-MSDU フラグがセットされていない場合は、集約化されていない通常のフレームとして扱います。 A-MSDU フラグがセットされている場合、集約化が行われていると判断し、ペイロードに含まれる全ての A-MSDU サブフレームを通常のイーサネットフレームに変換します。 問題は、A-MSDU フラグが適切に保護されておらず、攻撃者による変更が可能になっている点にあります。 攻撃者は A-MSDU フラグを改竄し、ペイロード (下図の「transported data」部分) の内容を A-MSDU サブフレームとして処理させることができます。
なおペイロードの内容を A-MSDU サブフレームとして処理させるためには若干の工夫が必要です。 報告者は、IPv4 パケットの構成と A-MSDU サブフレームの構成の類似性に注目し、 IPv4 パケットを注意深く細工することで A-MSDU サブフレームとして解析させることができた、と主張しています。
脆弱性の原因とその悪用方法から、攻撃成立のための前提条件は次のようになります。
- 標的となるデバイス (クライアントあるいはアクセスポイント) が A-MSDU サブフレームの受信をサポートしていること。(802.11n で必須)
- 攻撃者が Wi-Fi の電波の届く範囲に居ること。(中間者攻撃による A-MSDU フラグの改竄に必要)
- IPv4 パケットの IP ID フィールドが予測可能であること。(IPv4 パケットを A-MSDU サブフレームとして処理させるために必要)
もし標的となるクライアントがファイアウォールで保護されておらず、かつ IP アドレスが既知であれば、そのクライアント宛に細工したフレームを送信するだけで攻撃の準備が完了します。 ファイアウォールで保護されたクライアントでは、クライアントが攻撃者の用意した Web サーバへアクセスするように誘導し、そのレスポンスをクライアントに受信させることが、予測可能なパケットを受信させる最も簡単な方法と言えます。 クライアントへ送信される推測可能な IPv4 パケットは、アクセスポイントで Wi-Fi フレームに変換され無線信号として送信されます。 攻撃者はこの Wi-Fi フレームをインターセプトした上で A-MSDU フラグをセットした上で改竄し、クライアントに送信します。 この改竄された Wi-Fi フレームを受信したクライアントはペイロードに含まれた悪意のある A-MSDU サブフレームを通常のイーサネットフレームとして解釈することになります。
アクセスポイントに対する攻撃では、アクセスポイントに接続しているクライアントの IPv4 パケットの IP ID フィールドが予測可能である必要があります。
では標的となったデバイスではどのような被害が起こり得るのでしょうか。 IPv4/IPv6 デュアルスタッククライアントでは、IPv6 ルータ広告を挿入されることによって、悪意のある DNS サーバの使用を強制される可能性があります。 また IPv4 や IPv6 を使用するクライアントでは、多数のパケットを挿入した際の TCP SYN/ACK リプライの長さを元に開いているポートを特定される可能性があります。
異なる鍵で暗号化されたフラグメント化フレームの再構築処理に情報漏洩の問題 (CVE-2020-24587)
不安定な通信環境化では、サイズの大きなフレームをそのまま送信するより、サイズの小さなフレームに分割した上で個別に送信し、エラーとなったフレームだけ再送するほうが効率的と言えます。 フレームフラグメンテーションはそのような機能を提供するものです。
この脆弱性は、IEEE802.11の仕様おいて、再構築する各フラグメントが同じ鍵によって暗号化されたことを要求せず、さらにフラグメントのシーケンス番号をセキュリティ機構で保護しないことが原因となります。
脆弱性の具体的な悪用方法は以下のようになります。
- 標的のクライアントを攻撃者のWebサイトへアクセスさせます
- 攻撃者は、標的のクライアントから攻撃者のWebサイトへ送信される全てのフラグメントをインターセプトし、最初のフラグメント Enck{Frag0} のみアクセスポイントへ送信します。 (この Enck{Frag0} には攻撃者の Web サーバを指す IP ヘッダが含まれていると仮定します)
- 攻撃者は、後続のフラグメントをブロックします。
- (セッション鍵のリフレッシュ)
- 標的のクライアントを攻撃者以外のWebサーバへアクセスさせ、機密情報を含むリクエストを送信するようにします。
- 攻撃者は、標的のクライアントから攻撃者以外のWebサイトへ送信される全てのフラグメントをインターセプトし、2番目のフラグメント Encm{Frag1} のみアクセスポイントへ送信します。 (この Enck{Frag0} には攻撃者以外のWebサーバで使用する資格情報が含まれていると仮定します)
- アクセスポイントは、攻撃者のWebサーバを指すIPヘッダを含む Enck{Frag0} と攻撃者以外のWebサーバで使用する資格情報を含む Encm{Frag1} を1つのフレームとして再構築します。
- この結果、IEEE802.11のセキュリティ機構で保護されたフレームを改竄し、機密情報を含むパケットを攻撃者のWebサーバへ送信させることができます。
脆弱性の原因とその悪用方法から、攻撃成立のための前提条件は次のようになります。
- 攻撃者が Wi-Fi の電波の届く範囲に居ること (中間者攻撃に必要)
- 標的のクライアントから攻撃者のWebサイトへアクセスさせること
- フラグメント化フレームを使用していること
- セッション鍵のリフレッシュ
これらの条件だけでも厳しいものがありますが、フラグメント化された暗号化フレームにはリプレイ攻撃を防ぐ目的で連続したパケット番号が付与されており、 パケット番号が連続でないフラグメントは破棄されるため、漏洩する内容はこの連続したパケット番号の条件を満たすものに限られます。
クライアントへの攻撃では、偽造したパケットは TCP や UDP のチェックサムによってほとんど破棄されるため、攻撃は可能なものの「理論上は可能」にとどまるとされています。
キャッシュされたフラグメント化フレームの再構築処理に情報漏洩および情報改竄の問題 (CVE-2020-24586)
こちらの脆弱性もフラグメント化フレームの再構築処理に起因するものです。 IEEE802.11の仕様において、復号されたフラグメントの消去について規定されていません。このためキャッシュされたフラグメントと新たに到着したフラグメントを再構築する可能性があります。 この脆弱性は、アクセポイントとクライアントの双方に影響します。
ここでは、アクセスポイントの脆弱性を悪用し、クライアントの送信したデータを不正に読み取る手順を示します。 なおアクセスポイントは、公共のホットスポットのような、各ユーザがお互いに信頼していないようなネットワークに置かれていることを想定しています。 またアクセスポイントに接続するための認証情報は既知であるとします。
- 攻撃者は、標的とするクライアントのMACアドレスを使用し、正当な認証情報でアクセスポイントに接続します。
- 攻撃者は、標的クライアントが送信したAuthフレームをインターセプトし、そのフレームの最初のフラグメント Enck{Frag0} のみをアクセスポイントへ送信します。 (この Enck{Frag0} には攻撃者の Web サーバを指す IP ヘッダが含まれていると仮定します)
- アクセスポイントは Enck(Frag0) をメモリに保持します。
- 攻撃者は、Deauthフレームを送信し、アクセスポイントとの接続を切断します。 (Enck{Frag0} は消去されません。)
- 攻撃者はクライアントとアクセスポイントの間で中間者攻撃を成立させます
- 攻撃者は、標的クライアントが攻撃者以外のWebサーバへ送信したフレームをインターセプトし、2番目のフラグメント Encm{Frag1} のみアクセスポイントへ送信します。 (この Enck{Frag0} に資格情報が含まれていると仮定します)
- アクセスポイントは、 攻撃者の Web サーバを指す IP ヘッダを含む Enck{Frag0} と 攻撃者以外の Web サーバ宛の資格情報を含む Encm{Frag1} を再構築します。
- この結果、クライアントの意図に反して攻撃者の Web サーバへパスワードなどの資格情報が送信されます。
上記と似た手順を踏むことで、パケットの挿入も可能とされています。 なおクライアントへの攻撃では、パケットの挿入のみ可能とされています。
実装上の問題
ここまでは IEEE802.11 の仕様に起因する問題を見てきました。 「FragAttacks」には実装に起因する問題もいくつか含まれておりますので、 ここではその中から、マイクロソフト社の2021年5月のセキュリティ更新プログラムにも修正が含まれていた CVE-2020-26144 を取り上げて説明いたします。
平文の EAPOL フレームの処理に任意のフレームを挿入される問題 (CVE-2020-26144)
デバイスは通常、ネットワークの接続時に平文の 4 Way-Handshake フレームを受け入れます。これには、EAPOL ヘッダを持つ平文のフレームも含まれます。 ところが、集約化したフレームのペイロードに含まれるメタデータを、平文の EAPOL ヘッダにすることで、同じフレームに含まれる平文の A-MSDU サブフレームを処理する実装がありました。 これを悪用することで、クライアントまたはアクセスポイントに任意のフレームを挿入できます。 具体的な被害は「フレームアグリゲーションの処理に任意のフレームを挿入される問題 (CVE-2020-24588) 」と同様に、悪意のある DNS サーバの使用を強制されるなどの可能性があります。
どのように対処すればよいか
マイクロソフト社をはじめ、既に複数のベンダーから修正プログラムが提供されています。 クライアントやアクセスポイントのソフトウェアを問題が修正されたものに更新してください。 それができない場合は、ベンダーが指定する回避方法を適用してください。
参照
- Mathy Vanhoef, "FragAttacks," www.fragattacks.com, 2021.
- Mathy Vanhoef, "Fragment and Forge: Breaking Wi-Fi Through Frame Aggregation and Fragmentation," USENIX Security Symposium, August, 2021.
- Mathy Vanhoef, "Version 3 of the impact and preconditions of FragAttacks in "Fragment and Forge: Breaking Wi-Fi Through Frame Aggregation and Fragmentation,"" Mathy Vanhoef, PhD, 2021.
- Mathy Vanhoef, "Performing aggregation attack (CVE-2020-24588) in practice," New York University, January 20, 2021.
- Mathy Vanhoef, "FragAttacks: Fragmentation & Aggregation Attacks against Wi-Fi," New York University, March 8, 2021.
- Mathy Vanhoef, "FragAttacks: summary of findings," New York University, March 8, 2021.
- Mathy Vanhoef, "Summary of Vulnerabilities," vanhoefm, May 7, 2021.
- Mathy Vanhoef, "Security Advisories / Bulletins linked to FragAttacks," vanhoefm, May 12, 2021.
- Jonathan Braley, "Statement from the Industry Consortium for Advancement of Security on the Internet (ICASI) on Aggregation and Fragmentation Attacks against Wi-Fi," Industry Consortium for Advancement of Security on the Internet, May 11, 2021.
- 「JVNVU#93485736 IEEE802.11 規格のフレームアグリゲーションやフラグメンテーションに関する複数の問題(FragAttack)」 Japan Vulnerability Notes, 2021年5月13日.
- "Wi-Fi Alliance® security update – May 11, 2021," Wi-Fi Alliance, May 11, 2021.
- 「Windows ワイヤレス ネットワークの情報漏えいの脆弱性 CVE-2020-24587」 Microsoft Security Update Guide, 2021年5月11日.
- 「Windows ワイヤレス ネットワークのなりすましの脆弱性 CVE-2020-24588」 Microsoft Security Update Guide, 2021年5月11日.
- 「Windows ワイヤレス ネットワークのなりすましの脆弱性 CVE-2020-26144」 Microsoft Security Update Guide, 2021年5月11日.