ブログ

FFRI BLOG

Monthly Research 「IoT向けOS「Android Things」のセキュリティ」

 今回のMonthly Researchでは2016年12月13日にGoogleから発表されたIoT向けプラットフォームAndroid Thingsのセキュリティについて調査します。

・IoTデバイスとセキュリティ

 IoTデバイスは既に多くの攻撃に晒されています。例えば、昨年流行したマルウェアMiraiはIoTデバイスに感染し、ボットネットに参加させるマルウェアです。このマルウェアはデバイスで動作するtelnet に対し初期ユーザー名やパスワードに多用される約60組の単語を組み合わせて辞書攻撃を仕掛けます。
 米国では2016年10月12日DNS提供業者Dynに対し、Miraiに感染したIoTデバイスなどを踏み台にしたと見られる大規模DDoS攻撃が発生しました。この攻撃の余波でTwitterやAmazonなども一時利用不能になる被害を受けました。

・Android Things とは

 Android Thingsとは2016年12月にGoogle がDeveloper Preview版をリリースしたIoT向けOSです。前身であるBrilloへのフィードバックを参考に、既存のAndroid StudioなどのAndroid開発環境とスキルを活用しIoTシステムの開発ができるよう改良され、センサーなどを扱う為のライブラリが提供されています。
 現在は下記のボードに対応するイメージファイルが公開されています。

ボードCPU (MCU)
Raspberry Pi 3 64-bit quad-core ARMv8 Cortex-A53(1.2GHz CPU)
NXP Pico i.MX6UL ARM® Cortex®-A7 Core
Intel® Edison Intel® Atom™ SoC
(500MHz dual-core x86 CPU)
Intel® Quark™ (100Mhz MCU)

図 1 対応ボード早見表

・Things Support Library

 従来の Android フレームワークに様々なハードウェアを統合するAPIで下記の2種類があります。

・Peripheral I/O API
 センサーなどが接続される周辺IFへ入出力を扱うAPIでPWM、 GPIO、I2C、 SPI、 UARTなどを扱うことができるようになります。
・User Driver API
 様々なハードウェアイベントをAndroidアプリで利用可能にする APIです。

・通常の Android との違い

 また、既存のAndroidと違う点としてAndroid標準のシステムアプリなどが含まれていない為、TelephonyやSettingsなど一部のAPIの使用は非推奨で、Notificationについても通知領域が存在しないため非推奨です。そのほか、マニフェストで宣言した権限はアプリインストール時にユーザーの承認なくすべて付与されます。

・OSインストールとadb接続

 今回我々はRaspberry Pi 3を使用してAndroid Thingsを試用しました。Android Thingsの公式サイトでは図1で示したボードごとにイメージやインストール手順が公開されています。
 イメージファイルをmicro SDカードに書込みLANケーブルでネットワークに接続して起動します。起動後、ディスプレイにロゴとEthernetアダプタのIPアドレスが表示されます。表示されたIPアドレスに対してadbで接続出来ます。


図 2 Android Thingsの起動画面

・ポート利用状況

 adbによってAndroid Thingsにアクセスし、netstatでポートの開閉状況を確認したところ結果は下記の通りでした。

 どうやらadbのためのポート以外待ち受けているポートは無いようです。
 また、nmapなどによってポートスキャンを行った場合を確認したところ、実際にはadbサービスが動作している5555/tcpはCivilization というゲームのオープンソースクローン Freeciv と出力され、OSの種類とバージョンも識別されませんでした。

・ファイアウォール

 iptablesの状態を確認した結果、デフォルトではファイアウォールが有効になっている様子はありませんでした。

・SELinux

 SELinuxの状態を確認した結果、デフォルトではPermissiveになっており制限は行われていませんでした。


図 3 SELinuxの状態

・rootへ権限昇格

 Androidデバイスで悪意ある第三者がrootに昇格してしまった場合、デバイスを完全に乗っ取られ、システムにあらゆる変更を行われる恐れがあります。
 デフォルトの状態でsuコマンドを実行したところパスワードの要求なくrootに昇格できました。

・まとめ

 今回の調査から、Android Thingsはデフォルトの状態でadb接続が可能であり、さらにsuコマンドによってパスワード無しでrootに昇格できることがわかりました。
 また、アプリについては要求された権限はすべて許可されるため、不正アプリやアプリの乗っ取りによってIoTデバイスの異常動作や情報漏えいが起こる恐れがあります。
 Android Thingsによって、普段 Android アプリ開発に携わっているがハードウェアも触ってみたい、というエンジニアがIoTアプリを手軽に開発することができます。しかし、実用的なIoTデバイスに利用するにはセキュリティの強化が必要と考えられます。
 現在リリースされているAndroid ThingsはDeveloper Previewのため、正式リリースまでに、デフォルト設定の変更やセキュリティ設計・設定ガイド等が提供されることが期待されます。


Monthly Researchのダウンロードはこちら(日本語 / English


関連記事

Monthly Research 「Black Hat Europe 2016 サーベイレポート」

Monthly Research 「Microsoft Threat Modeling Toolの利用例」

pagetop