脆弱性「BlueBorne」:Bluetooth機能をオフ、そして直ちに更新プログラム適用を

脆弱性「BlueBorne」:Bluetooth機能をオフ、そして直ちに更新プログラム適用を

BlueBorne」は、iOS、Android、Linux、Windows の Bluetoothの実装における複数の脆弱性の総称です。確認したリサーチャによると、約53億台の Bluetooth搭載機器が BlueBorneの影響を受けると推測されています。現時点(2017年9月20日時点)の対処方法として、以下の対応を検討してください。

  1. 幾つかの LinuxベースのOSを除き、各OS は、2017年9月19日時点、同脆弱性に対応する更新プログラムが公開されています。該当の OSの端末機器をご利用の場合、直ちに適用してください。
  2. 何らかの理由で更新プログラムが適用できない場合、あるいは更新プログラムが未提供の Linux端末機器をご利用の場合、Bluetooth機能をオフにしてください。

問題の脆弱性を突く攻撃の概念実証(Proof of Concept、PoC)が公表されているとはいえ、弊社では、BlueBorne を利用する攻撃を確認していません。また、BlueBorne を突く攻撃には特定の条件が必要となります。

BlueBorne は、Bluetoothプロトコルの定義や認証の問題に起因する一連の脆弱性です。Bluetoothプロトコルスタックのコードに含まれるパラメータの検証が適切でないため、カーネルスタック上のバッファオーバーフロー、またはヒープベースのバッファオーバーフローを発生させることが可能です。他の定義と組み合わせることによって、攻撃者は遠隔でのコード実行が可能になります。

■「BlueBorne」が iOSと Androidに与える影響

現在の Bluetoothの実装では、ユーザが端末機器を操作することなく低層の無線接続を確立することができます。Appleの場合は、初回接続時にユーザの許可を要求する独自の Bluetoothプロトコルスタックを実装してしています。例として iOSでは接続の際にユーザの操作が必ず必要となるため、BlueBorne を利用した攻撃による影響は低いと考えられます。

また、BlueBorneは、iOSの場合、例えば AirPods や Beatsヘッドフォンのような低消費電力機器に対応する Low-Energy Audio Protocol(LEAP)にのみ影響し、異なるコンピュータ機器間のデータ伝送に使用されるパーソナル・エリア・ネットワーク(PAN)層には影響しません。そのため、iOS端末では「Man-In-The-Middle(MitM、中間者)攻撃」は抑止されます。また、iOS端末間の Bluetooth通信は、Bluetoothプロトコルスタックとハードウェア間のブリッジとして機能するプロセス「BlueTool」によって管理されています。攻撃が成功するには、BlueTool で権限を得る必要があり、そのためにはバッファオーバーフローを防ぐキュリティ機能「Address Space Layout Randomization(ASLR)」を回避する別の脆弱性を利用する必要が発生します。そして、仮に攻撃者が BlueToolの権限を獲得できたとしても、モバイル端末またはユーザごとの権限に制限されます。

Androidの場合は状況が異なります。脆弱性 BlueBorneは、Bluetoothの要求を直接処理する Bluetoothプロトコルスタックに影響します。攻撃者が脆弱性を突くことに成功した場合は、Bluetoothプロトコルスタックを遠隔で動作させることができます。Androidの Bluetoothプロトコルスタックは、ハードウェアの機種に関わらず Androidのアプリケーションを実行できる「Hardware Abstraction Layer(ハードウェア抽象化層、HAL)」層で動作します。そして、以下のパーミッションを持つサービスとして実行されます。

u:r:bluetooth:s0      bluetooth 1419 335 1165648 36788 SyS_epoll_ b618a444
S com.android.bluetooth

Android の Bluetoothプロトコルスタックは、マウスやキーボードなどのようにヒューマン・インタフェース・デバイス(HID)として振る舞う機能を備えるため、端末機器を遠隔から乗っ取ること、つまり Bluetoothを介してローカルデータを送信および取得することが可能になります。しかし、Android端末がロックされている場合、パスコードを解読されることはありません。さらに、保護されたパーミッションモデルで上記のパーミッションを使って HALを実行しても、攻撃者は端末を任意に変更することはできません。

Androidの場合、一般のユーザは攻撃のサインを見逃すかもしれません。アプリケーションの起動に使用されるデーモン「Zygote」からの不審なアクティビティが警告となります。「com.android.bluetooth」で高い権限を持つ Zygote は、機能停止すると自動的に再起動します。例えば、「Bluetooth Pineapple」の脆弱性を利用した攻撃が仕掛けられると、デフォルトルートや Webプロキシの定義のようなネットワーク設定が突然変更されるため 攻撃の兆候が確認できる可能性があります。一方で、遠隔からのコード実行といった他の種類の攻撃はほとんど検知することはできないでしょう。

■「BlueBorne」の被害に遭わないためには

iPhone 5以降のモデルを使用している iOSユーザは、最新の iOS(バージョン10または11)をインストールすることによって、この脆弱性を利用した攻撃から端末を保護することができます。Googleは、9月の Android のセキュリティに関する公開情報で、Android端末に影響を及ぼす脆弱性に対処済みです。ただし、Android OS には断片化(フラグメンテーション)の問題があります。Pixel と Nexus の端末では定期的なアップデートがありますが、他の端末では更新プログラムの適用状態の確認が必要です。ユーザは利用している Android端末の製造元にてアップデートの対応状況を確認してください。

Windows OS でも更新プログラムの適用を推奨します。Microsoft は、2017年9月のセキュリティ更新プログラム CVE-2017-8628 に対処済みです。また、BlueBorne を利用し、Bluetooth を経由してWindows OS で直接コードを実行するためには、別の攻撃手法を組み合わせる必要があります。

Linux機器に影響を及ぼす脆弱性への対処も進行中です。セッション記述プロトコル(SDP)の情報漏えいの脆弱性 CVE-2017-1000250 については、9月12日より対処が開始されており、Red Hat Enterprise Linux 6 および7 では既に対処済みです。また、Debian sid でも対処が完了しています。

2017年9月9日以降、Logical Link Control and Adaptation Layer Protocol(L2CAP)のバッファオーバーフローの脆弱性 CVE-2017-1000251 への対処が進められています。Red Hat Enterprise Linux 5、6、7は既に更新プログラムが公開されています。カーネルスタック保護機能「CONFIG_CC_STACKPROTECTOR」または「CONFIG_CC_STACKPROTECTOR_STRONG」(カーネルのバージョンとプラットフォームによって異なる)が有効なシステムでも、Bluetooth経由でシステムに接続できる非認証の攻撃者によって、システムをクラッシュさせるためにこの脆弱性を利用される恐れがあります。しかしスタック保護機能の性質上、コード実行の可能性を完全に排除することはできません。

ARM や MIPS のシステムオンチップ(SoC)で Linuxカーネルを動作させている数百万もの「モノのインターネット(Internet of Things、IoT)」機器が存在し、その多くにBluetoothプロトコルスタックが利用されています。それらの機器の製造元から更新プログラムの提供があるのか、あればいつどのように公開されるのかについて特定することは困難です。

ユーザは、バージョンと使用環境によって Bluetoothの通信範囲を 10〜100メートルの範囲で設定して調整できますが、攻撃者は高利得アンテナで大幅に範囲を拡張できることにも注意してください。BlueBorneの脆弱性を抱えるシステムでは、通常時 Bluetoothをオフにすることを推奨します。

協力執筆者:Veo Zhang、Ju Zhu、および Jason Gu

【更新情報】

2017/09/21 10:35 本文の一部を修正しました。

参考記事:

翻訳:室賀 美和(Core Technology Marketing, TrendLabs)