ソフトウェア・インテグリティ

 

Defensicsのファジング・テストで SweynTooth脆弱性を見つけ出す

SweynToothは、複数の Bluetooth Low Energy 脆弱性の総称です。Defensics Bluetooth LE テスト・スイートを使い、それらの多くを再現することができます。

SweynToothとは何か?

SweynToothは、Bluetooth Low Energyの脆弱性群で、 シンガポール工科デザイン大学(Singapore University of Technology and Design)の研究者によって発見されました。これらの脆弱性は、7社のSoCベンダーが提供する Bluetooth LE のSDKに見つかり、研究者によれば、脆弱なSDKは、480以上の最終製品に用いられているとのこと。大量の SweynTooth脆弱性が発見されたことと、そのリスクと医療機器への影響により、FDA(米国食品医薬品局)は、Safety Communicationを発行し、 潜在的な SweynToothを悪用した攻撃を監視しています。影響のあったベンダーの多くは SDKのセキュリティ・パッチをリリース済みです。また、当該SDKを使用している製品へ最新のSDKを適用することが強く推奨されます。

Defensicsとファジング・テストについて

Defensicsはインテリジェントなファジング・テストのプラットフォームで、250あまりのビルド済みの一般的なテスト・スイートが用意されています。その自動化テスト・メソドロジーにより、不正、不測な入力をテスト対象システムに対し体系的に送信することで、新たな、あるいは未知の脆弱性を発見することができるのです。Defensicsのエンジンには、インターフェース、プロトコル、ファイル形式などの入力形式に関するナレッジが組み込まれています。エンジンが入力形式における通信ルールを深く理解していることで、入力形式のセキュリティ上の弱点を悪用可能なテスト・ケースを提供できるのです。Defensicsの詳細なテストとレポート機能は、一貫性を持って致命的な欠陥の根本原因を特定するのを手助けし、改善プロセスに関与する利害関係者と理解を共有することを容易にしてくれます。

Defensicsを用いた脆弱性の再現方法

Defensics Bluetooth LE テスト・スイートはホスト・スタックをカバーし、ATT、SMP、GATTなどのプロファイルをサポートします。初期の解析では、これらのテスト・スイートを使って、いくつもの SweynTooth脆弱性を再現することができました。注意すべきは、実際にこの脆弱性を含んだ機器でテスト・ケースを検証していないことです。以下は、Defensicsのファジング・テストで検知した SweynTooth脆弱性です。

Defensicsで検知した SweynTooth脆弱性の種類

Unexpected Public Key Crash (CVE-2019-17520)

この SweynTooth脆弱性は、レガシーな SMPの実装で検知しました。スタックでは公開鍵を受け取る想定をしていませんでした。これは、Bluetooth LE SMP Clientと Server テストスイートを用いました。次に、Secure Connection Flagが0に設定されているのに、公開鍵が送信される特定のテストケースを示します。

Sequential ATT Deadlock (CVE-2019-19192)

この SweynToothを悪用した攻撃に対して脆弱な機器は、セントラル・デバイス(Bluetoothでは通信時にセントラルとペリフェラルの2種類のいずれかになる)がペリフェラルからのATT応答を待たず、連続したATT要求パケットを送信する状況に対処できませんでした。私たちは、この脆弱性を DefensicsのBluetooth LE ATT Server and ATT Client テストスイートを用いて再現しました。繰り返しメッセージは標準のテストケースの一部です。次のスクリーンショットから、テストケースでは ATT Readリクエストが7回繰り返されていることがわかります。

Key Size Overflow (CVE-2019-19196)

特定の機器は、ペアリング要求で受信した暗号化鍵の長さの最大値を検証しなかったため、この Key Size Overflowのシナリオに対して脆弱であることがわかりました。

DefensicsのBluetooth LE SMP Server テスト・スイートを使って、ペアリング要求で暗号化の鍵長の最大値を操作し、応答に関係なく暗号化を開始しようとするテストケースを作成しました。次のスクリーンショットは Maximum Encryption Key Sizeを 252バイトに設定しています。

Zero LTK Installation (CVE-2019-19194)

Zero LTK Installation という SweynToothの脆弱性は、実際には、攻撃者がSecure Connection Flagが設定されたペアリング要求を送信することで、セキュアコネクションのペアリング手順を開始できることを意味します。攻撃者は、ターゲットがペアリングが開始された状態にあることを確認するために、ペアリングの応答を待ちます。その後、攻撃者は、最初にペアリングを完全に終了させずに、すべてゼロの鍵(zero LTK)を使用して暗号化を開始するように要求します。

例えば、Bluetooth LE SMP Serverテスト・スイートでこのようなシナリオを実現することができます。公開鍵の交換を省略して暗号化を開始しようとするテスト・ケースを実行すればよいのです。残念ながら、Bluetooth LE SMP Serverテスト・スイートでは、暗号化を開始するのが早すぎるかどうかは実際にはチェックしていません。そのため、理論的にはこの脆弱性を誘発することができるはずですが、Wiresharkを使って手動でテスト結果を確認し検証する必要があるかもしれません。

以下のスクリーンショットは、公開鍵が省略され、SMP Serverテスト・スイートがzero LTKを使用して暗号化を開始しようとするテストケースを示しています。どうやら、この機器はエラー・コード「PINまたはキーがありません」で要求を拒否するので、脆弱ではないようです。

まとめ

最初の分析によると、Defensics Bluetooth LEテスト・スイートは、上記の4種類の SweynTooth脆弱性を見つけ出すのに大変役立ちます。私たちは IoT機器メーカーとの継続的な協力によって、Defensicsで新しい脆弱性の発見と修正を支援します。また、標準ガイドラインと開示プロセスに従い、発見された新たな脆弱性を速やかに報告し、適切に文書化することを強くお勧めします。

Defensicsのファジングテストについての詳細はこちら

 

この著者によるその他の情報