
CVE-2019-19194の解説と理論上のProof-of-Concept
これは CVE-2019-19194 のライトアップおよび 理論上の Proof-of-Concept です。
⚠️ このCVEは https://asset-group.github.io/disclosures/sweyntooth/ によって発見されました。
このレポートでは、Zero LTK Initialisation の脆弱性 (CVE-2019-19194) により、攻撃者が Secure Connections ペアリング手順を迂回して Bluetooth Low Energy (BLE) アプリケーションの通信を完全に制御できるようになる仕組みを説明します。
この脆弱性は、Secure Connections ペアリング手順をサポートする Telink SMP 実装を使用する製品に影響します。
BLE は、低消費電力・短距離の 無線通信システムです。標準化された一連のプロトコルで構成され、 2つのデバイス間にリモート接続とセキュリティを提供します。
BLE スタックは、Host と Controller という2つのアーキテクチャブロックに分散しています。
スタックの分散により、各ブロックを物理的に分離されたコンポーネントとして実装できます。
Host Controller Interface (HCI) という標準的な論理インターフェースにより、2つのブロック間の通信が可能になります。
Host ブロックの上に BLE アプリケーションが配置されます。

物理層は、2.4GHz スペクトラム全体の Industrial, Scientific and Medical (ISM) 無線帯域で動作します。40チャンネルを使用します。3つの advertising チャンネルと37の data チャンネルです。
リンク層 (LL) には多くの役割がありますが、ここでは説明しません。 LL は、重要な役割と状態を定義するステートマシンによって管理されます。
論理リンク制御・適応プロトコルは、プロトコル多重化レイヤとして機能します。下位層と上位層の間でパケットの 断片化 と 再結合 を処理します。
Generic Access Profile は、デバイスの 発見 と 接続 に関するものです。言い換えると、GAP は advertising パケットの送信と、スキャンによる受信の手順を定義します。
2つの BLE デバイス間の接続が確立されると、GATT はクライアント/サーバーモデルを使用して 2つのデバイス間でデータを交換します。また、クライアントとサーバーの両方が Attribute Protocol (ATT) を使用します。
SM は、pairing、bonding、key distribution などのセキュリティ関連手順をサポートします。デバイスのペアリングは Bluetooth セキュリティの基盤と見なされます。ペアリング後、2つのデバイスは通信を暗号化し、相互認証を行うことができます、...
BLE 通信に関わるさまざまなプロトコルのうち、zero LTK installation CVE は、Secure Connections モードのペアリング手順中に発生します。

Secure Connections ペアリングモードは「より安全なアプローチ」であり、 Legacy モードの弱点を解決するために開発されました。しかし、zero LTK installation CVE は、SC ペアリングの不適切な実装がセキュリティを迂回できることを発見しました。

中央デバイスがペアリング要求を送信し、両デバイスはセキュリティ機能と要件を交換します。このフェーズでペアリングの mode が定義されます。
公開鍵交換: Central デバイスによって公開鍵の交換が開始されます。ペリフェラルとセントラルの両方が、受信した鍵が P-256 曲線上にあることを検証します。
DHKey の計算: 各デバイスは、自身の秘密鍵 (SK) と相手の公開鍵 (PK) を使用して Diffie-Hellman 鍵 (DHKey) を計算します。これにより、両デバイスが同じ DHKey 値を持つことになります。
Central: DHKey = p256(SKc, PKp)
Peripheral: DHKey = p256(SKp, PKc)
MITM 保護が要求された場合、ペアリングデバイスの信頼性を確認するための対話的手順が行われます。
Long Term Key (LTK) の計算と相互確認: デバイスは相互に認証し、LTK 鍵を計算します。フェーズ 3 の前にリンクを暗号化するために、LTK からセッション鍵が導出されます。
暗号化されたリンクを通じて、デバイスは鍵を配布できます。
zero LTK installation の根本原因は、ペアリング手順中に2つのデバイスがどの状態にあるかのチェックが存在しないことです。そのため、攻撃側の central デバイスは鍵生成と認証のステップをスキップできます。これにより、ペリフェラルデバイスでは LTK 鍵が 0 に設定され、結果として容易に導出可能なセッション鍵が生成されます。

⚠️ これは完全に理論上の Proof-of-Concept です。BLE ディスカバリ、アドバタイズ、ペアリング手順の pcap を取得できず、Telink SMP 実装を備えた BLE デバイスも持っていませんでした。